From f66ab8dae2f3d0418759f81a3a64dc9517a62449 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 15:17:31 +0200 Subject: Adding upstream version 1.10.2. Signed-off-by: Daniel Baumann --- .../Director/IcingaConfig/ExtensibleSetTest.php | 162 +++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 test/php/library/Director/IcingaConfig/ExtensibleSetTest.php (limited to 'test/php/library/Director/IcingaConfig/ExtensibleSetTest.php') diff --git a/test/php/library/Director/IcingaConfig/ExtensibleSetTest.php b/test/php/library/Director/IcingaConfig/ExtensibleSetTest.php new file mode 100644 index 0000000..34bd83a --- /dev/null +++ b/test/php/library/Director/IcingaConfig/ExtensibleSetTest.php @@ -0,0 +1,162 @@ +assertEquals( + array(), + $set->getResolvedValues() + ); + } + + public function testValuesPassedToConstructorAreAccepted() + { + $values = array('Val1', 'Val2', 'Val4'); + $set = new ExtensibleSet($values); + + $this->assertEquals( + $values, + $set->getResolvedValues() + ); + } + + public function testConstructorAcceptsSingleValues() + { + $set = new ExtensibleSet('Bla'); + + $this->assertEquals( + array('Bla'), + $set->getResolvedValues() + ); + } + + public function testSingleValuesCanBeBlacklisted() + { + $values = array('Val1', 'Val2', 'Val4'); + $set = new ExtensibleSet($values); + $set->blacklist('Val2'); + + $this->assertEquals( + array('Val1', 'Val4'), + $set->getResolvedValues() + ); + } + + public function testMultipleValuesCanBeBlacklisted() + { + $values = array('Val1', 'Val2', 'Val4'); + $set = new ExtensibleSet($values); + $set->blacklist(array('Val4', 'Val1')); + + $this->assertEquals( + array('Val2'), + $set->getResolvedValues() + ); + } + + public function testSimpleInheritanceWorksFine() + { + $values = array('Val1', 'Val2', 'Val4'); + $parent = new ExtensibleSet($values); + $child = new ExtensibleSet(); + $child->inheritFrom($parent); + + $this->assertEquals( + $values, + $child->getResolvedValues() + ); + } + + public function testWeCanInheritFromMultipleParents() + { + $p1set = array('p1a', 'p1c'); + $p2set = array('p2a', 'p2d'); + $parent1 = new ExtensibleSet($p1set); + $parent2 = new ExtensibleSet($p2set); + $child = new ExtensibleSet(); + $child->inheritFrom($parent1)->inheritFrom($parent2); + + $this->assertEquals( + $p2set, + $child->getResolvedValues() + ); + } + + public function testOwnValuesOverrideParents() + { + $cset = array('p1a', 'p1c'); + $pset = array('p2a', 'p2d'); + $child = new ExtensibleSet($cset); + $parent = new ExtensibleSet($pset); + $child->inheritFrom($parent); + + $this->assertEquals( + $cset, + $child->getResolvedValues() + ); + } + + public function testInheritedValuesCanBeBlacklisted() + { + $child = new ExtensibleSet(); + $child->blacklist('p2'); + + $pset = array('p1', 'p2', 'p3'); + $parent = new ExtensibleSet($pset); + + $child->inheritFrom($parent); + $child->blacklist(array('not', 'yet', 'p1')); + + $this->assertEquals( + array('p3'), + $child->getResolvedValues() + ); + + $child->blacklist(array('p3')); + $this->assertEquals( + array(), + $child->getResolvedValues() + ); + } + + public function testInheritedValuesCanBeExtended() + { + $pset = array('p1', 'p2', 'p3'); + + $child = new ExtensibleSet(); + $child->extend('p5'); + + $parent = new ExtensibleSet($pset); + $child->inheritFrom($parent); + + $this->assertEquals( + array('p1', 'p2', 'p3', 'p5'), + $child->getResolvedValues() + ); + } + + public function testCombinedDefinitionRendersCorrectly() + { + $set = new ExtensibleSet(array('Pre', 'Def', 'Ined')); + $set->blacklist(array('And', 'Not', 'Those')); + $set->extend('PlusThis'); + + $out = ' key_name = [ Pre, Def, Ined ]' . "\n" + . ' key_name += [ PlusThis ]' . "\n" + . ' key_name -= [ And, Not, Those ]' . "\n"; + + $this->assertEquals( + $out, + $set->renderAs('key_name') + ); + } +} -- cgit v1.2.3