From 789c1c8022cf31b64aafe8ec5570846f3910c296 Mon Sep 17 00:00:00 2001 From: syl20bnr Date: Sat, 2 Nov 2019 23:27:02 -0400 Subject: [PATCH] [core] Add unit tests for cfgl-package-reqs-satisfied-p --- tests/core/core-configuration-layer-utest.el | 108 +++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/tests/core/core-configuration-layer-utest.el b/tests/core/core-configuration-layer-utest.el index df8a94fda..9f9abd5b1 100644 --- a/tests/core/core-configuration-layer-utest.el +++ b/tests/core/core-configuration-layer-utest.el @@ -439,6 +439,114 @@ (helper--add-layers `(,(cfgl-layer "layer1" :name 'layer1)) t) (should (not (cfgl-package-used-p pkg))))) +;; method: cfgl-package-reqs-satisfied-p + +(ert-deftest test-cfgl-package-reqs-satisfied-p--ok-with-single-required-used-enabled-package () + (let ((layer1 (cfgl-layer "layer1" :name 'layer1)) + (layer2 (cfgl-layer "layer2" :name 'layer2)) + (pkg1 (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1) :requires '(pkg2))) + (pkg2 (cfgl-package "pkg2" :name 'pkg2 :owners '(layer2))) + configuration-layer--used-packages + (configuration-layer--indexed-packages (make-hash-table :size 2048)) + (configuration-layer--indexed-layers (make-hash-table :size 1024))) + (helper--add-layers (list layer1 layer2) t) + (helper--add-packages (list pkg1 pkg2) t) + (should (cfgl-package-reqs-satisfied-p pkg1)))) + +(ert-deftest test-cfgl-package-reqs-satisfied-p--ok-with-single-required-unused-enabled-package () + (let ((layer1 (cfgl-layer "layer1" :name 'layer1)) + (layer2 (cfgl-layer "layer2" :name 'layer2)) + (pkg1 (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1) :requires '(pkg2))) + (pkg2 (cfgl-package "pkg2" :name 'pkg2 :owners '(layer2))) + configuration-layer--used-layers + configuration-layer--used-packages + (configuration-layer--indexed-layers (make-hash-table :size 1024)) + (configuration-layer--indexed-packages (make-hash-table :size 2048))) + (helper--add-layers (list layer1) t) + (helper--add-layers (list layer2)) + (helper--add-packages (list pkg1) t) + (helper--add-packages (list pkg2)) + (should (cfgl-package-reqs-satisfied-p pkg1)))) + +(ert-deftest test-cfgl-package-reqs-satisfied-p--not-ok-with-single-required-used-not-enabled-package () + (let ((layer1 (cfgl-layer "layer1" :name 'layer1)) + (layer2 (cfgl-layer "layer2" :name 'layer2)) + (pkg1 (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1) :requires '(pkg2))) + (pkg2 (cfgl-package "pkg2" :name 'pkg2 :toggle nil :owners '(layer3))) + configuration-layer--used-packages + (configuration-layer--indexed-packages (make-hash-table :size 2048)) + (configuration-layer--indexed-layers (make-hash-table :size 1024))) + (helper--add-layers (list layer1 layer2) t) + (helper--add-packages (list pkg1 pkg2) t) + (should (not (cfgl-package-reqs-satisfied-p pkg1))))) + +(ert-deftest test-cfgl-package-reqs-satisfied-p--not-ok-with-single-required-not-existing-package () + (let ((layer1 (cfgl-layer "layer1" :name 'layer1)) + (pkg1 (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1) :requires '(pkg2))) + configuration-layer--used-packages + (configuration-layer--indexed-packages (make-hash-table :size 2048)) + (configuration-layer--indexed-layers (make-hash-table :size 1024))) + (helper--add-layers (list layer1) t) + (helper--add-packages (list pkg1) t) + (should (not (cfgl-package-reqs-satisfied-p pkg1))))) + +(ert-deftest test-cfgl-package-reqs-satisfied-p--ok-with-multiple-required-used-enabled-package () + (let ((layer1 (cfgl-layer "layer1" :name 'layer1)) + (layer2 (cfgl-layer "layer2" :name 'layer2)) + (layer3 (cfgl-layer "layer3" :name 'layer3)) + (pkg1 (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1) :requires '(pkg2 pkg3))) + (pkg2 (cfgl-package "pkg2" :name 'pkg2 :owners '(layer2))) + (pkg3 (cfgl-package "pkg3" :name 'pkg3 :owners '(layer3))) + configuration-layer--used-packages + (configuration-layer--indexed-packages (make-hash-table :size 2048)) + (configuration-layer--indexed-layers (make-hash-table :size 1024))) + (helper--add-layers (list layer1 layer2 layer3) t) + (helper--add-packages (list pkg1 pkg2 pkg3) t) + (should (cfgl-package-reqs-satisfied-p pkg1)))) + +(ert-deftest test-cfgl-package-reqs-satisfied-p--ok-with-multiple-required-unused-enabled-package () + (let ((layer1 (cfgl-layer "layer1" :name 'layer1)) + (layer2 (cfgl-layer "layer2" :name 'layer2)) + (layer3 (cfgl-layer "layer3" :name 'layer3)) + (pkg1 (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1) :requires '(pkg2 pkg3))) + (pkg2 (cfgl-package "pkg2" :name 'pkg2 :owners '(layer2))) + (pkg3 (cfgl-package "pkg3" :name 'pkg3 :owners '(layer3))) + configuration-layer--used-layers + configuration-layer--used-packages + (configuration-layer--indexed-layers (make-hash-table :size 1024)) + (configuration-layer--indexed-packages (make-hash-table :size 2048))) + (helper--add-layers (list layer1 layer3) t) + (helper--add-layers (list layer2)) + (helper--add-packages (list pkg1 pkg3) t) + (helper--add-packages (list pkg2)) + (should (cfgl-package-reqs-satisfied-p pkg1)))) + +(ert-deftest test-cfgl-package-reqs-satisfied-p--not-ok-with-multiple-required-used-not-enabled-package () + (let ((layer1 (cfgl-layer "layer1" :name 'layer1)) + (layer2 (cfgl-layer "layer2" :name 'layer2)) + (layer3 (cfgl-layer "layer3" :name 'layer3)) + (pkg1 (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1) :requires '(pkg2 pkg3))) + (pkg2 (cfgl-package "pkg2" :name 'pkg2 :toggle nil :owners '(layer3))) + (pkg3 (cfgl-package "pkg3" :name 'pkg3 :owners '(layer3))) + configuration-layer--used-packages + (configuration-layer--indexed-packages (make-hash-table :size 2048)) + (configuration-layer--indexed-layers (make-hash-table :size 1024))) + (helper--add-layers (list layer1 layer2 layer3) t) + (helper--add-packages (list pkg1 pkg2 pkg3) t) + (should (not (cfgl-package-reqs-satisfied-p pkg1))))) + +(ert-deftest test-cfgl-package-reqs-satisfied-p--not-ok-with-multiple-required-not-existing-package () + (let ((layer1 (cfgl-layer "layer1" :name 'layer1)) + (layer3 (cfgl-layer "layer3" :name 'layer3)) + (pkg1 (cfgl-package "pkg1" :name 'pkg1 :owners '(layer1) :requires '(pkg2 pkg3))) + (pkg3 (cfgl-package "pkg3" :name 'pkg3 :owners '(layer3))) + configuration-layer--used-packages + (configuration-layer--indexed-packages (make-hash-table :size 2048)) + (configuration-layer--indexed-layers (make-hash-table :size 1024))) + (helper--add-layers (list layer1 layer3) t) + (helper--add-packages (list pkg1 pkg3) t) + (should (not (cfgl-package-reqs-satisfied-p pkg1))))) + ;; --------------------------------------------------------------------------- ;; configuration-layer//package-enabled-p ;; ---------------------------------------------------------------------------