From e7b41dab222fef626fddebd0f23214d8885322a6 Mon Sep 17 00:00:00 2001 From: Kevin Frantz Date: Wed, 31 Oct 2018 20:39:41 +0100 Subject: [PATCH] finished implementation of members attribute and test --- .../src/Entity/Attribut/MembersAttribut.php | 25 +++---- application/tests/AbstractTestCase.php | 12 ++-- .../Entity/Attribut/MembersAttributTest.php | 70 +++++++++---------- 3 files changed, 47 insertions(+), 60 deletions(-) diff --git a/application/src/Entity/Attribut/MembersAttribut.php b/application/src/Entity/Attribut/MembersAttribut.php index 3dfa193..7b3b2b1 100644 --- a/application/src/Entity/Attribut/MembersAttribut.php +++ b/application/src/Entity/Attribut/MembersAttribut.php @@ -1,18 +1,16 @@ count() . "\n"); foreach ($this->members->toArray() as $member) { - if (! $members->contains($member)) { + if (!$members->contains($member)) { $members->add($member); - if ($dimension > 0) { - var_dump($dimension); + if ($this->continueIncludeMembersLoop($dimension) && $member instanceof MembersAttributInterface) { $member->getMembersInclusiveChildren($dimension, $members); } } } + return $members; } private function continueIncludeMembersLoop(?int $dimension): bool { - return (is_null($dimension) || $dimension > 0); + return is_null($dimension) || $dimension > 0; } } diff --git a/application/tests/AbstractTestCase.php b/application/tests/AbstractTestCase.php index ea140a5..da20b2a 100644 --- a/application/tests/AbstractTestCase.php +++ b/application/tests/AbstractTestCase.php @@ -1,4 +1,5 @@ getMethod($methodName); $method->setAccessible(true); + return $method->invokeArgs($object, $parameters); } } - diff --git a/application/tests/Unit/Entity/Attribut/MembersAttributTest.php b/application/tests/Unit/Entity/Attribut/MembersAttributTest.php index dc68ed8..90e6386 100644 --- a/application/tests/Unit/Entity/Attribut/MembersAttributTest.php +++ b/application/tests/Unit/Entity/Attribut/MembersAttributTest.php @@ -8,7 +8,6 @@ use Doctrine\Common\Collections\ArrayCollection; use App\Entity\Source\AbstractSource; use App\Entity\Source\GroupSource; use App\Tests\AbstractTestCase; -use phpDocumentor\Reflection\Types\Boolean; class MembersAttributTest extends AbstractTestCase { @@ -30,12 +29,14 @@ class MembersAttributTest extends AbstractTestCase $this->membersAttribut->getMembers(); $this->membersAttribut->getMembersInclusiveChildren(); } - - private function getContinueIncludeMemberLoopResult($dimension):bool{ + + private function getContinueIncludeMemberLoopResult($dimension): bool + { return $this->invokeMethod($this->membersAttribut, 'continueIncludeMembersLoop', [$dimension]); } - - public function testContinueIncludeMemberLoop(){ + + public function testContinueIncludeMemberLoop() + { $this->assertTrue($this->getContinueIncludeMemberLoopResult(null)); $this->assertTrue($this->getContinueIncludeMemberLoopResult(2)); $this->assertTrue($this->getContinueIncludeMemberLoopResult(1)); @@ -58,20 +59,22 @@ class MembersAttributTest extends AbstractTestCase $this->assertEquals($members, $this->membersAttribut->getMembers()); $this->assertTrue($this->membersAttribut->getMembers()->contains($source1)); } - - public function testFirstLevelMembersInclusiveChildren():void{ + + public function testFirstLevelMembersInclusiveChildren(): void + { $source1 = new GroupSource(); $source2 = clone $source1; $source3 = clone $source1; $source4 = clone $source1; $source3->setMembers(new ArrayCollection([$source4])); - $members = new ArrayCollection([$source1,$source2,$source3]); + $members = new ArrayCollection([$source1, $source2, $source3]); $this->assertNull($this->membersAttribut->setMembers($members)); - $this->assertEquals(3,$this->membersAttribut->getMembersInclusiveChildren(1)->count()); + $this->assertEquals(3, $this->membersAttribut->getMembersInclusiveChildren(1)->count()); } - - public function test3DimensionsMembersInclusiveChildren():void{ - $source1= new GroupSource(); + + public function test3DimensionsMembersInclusiveChildren(): void + { + $source1 = new GroupSource(); $source2 = clone $source1; $source3 = clone $source1; $source4 = clone $source1; @@ -79,15 +82,15 @@ class MembersAttributTest extends AbstractTestCase $source2->setMembers(new ArrayCollection([$source3])); $source3->setMembers(new ArrayCollection([$source4])); $this->membersAttribut->setMembers(new ArrayCollection([$source1])); - $this->assertEquals(1,$this->membersAttribut->getMembers()->count()); - $this->assertEquals(1,$source1->getMembers()->count()); - $this->assertEquals(1,$source2->getMembers()->count()); - $this->assertEquals(1,$source3->getMembers()->count()); - $this->assertEquals(0,$source4->getMembers()->count()); - $this->assertEquals(3,$this->membersAttribut->getMembersInclusiveChildren(3)->count()); + $this->assertEquals(1, $this->membersAttribut->getMembers()->count()); + $this->assertEquals(1, $source1->getMembers()->count()); + $this->assertEquals(1, $source2->getMembers()->count()); + $this->assertEquals(1, $source3->getMembers()->count()); + $this->assertEquals(0, $source4->getMembers()->count()); + $this->assertEquals(3, $this->membersAttribut->getMembersInclusiveChildren(3)->count()); } - public function testMembersIncludingChildren(): void + public function testMembersIncludingChildrenInfinite(): void { $source1 = new GroupSource(); $source2 = clone $source1; @@ -95,30 +98,21 @@ class MembersAttributTest extends AbstractTestCase $source4 = clone $source1; $source5 = clone $source1; $source6 = clone $source1; - $source7 = clone $source1; - $source8 = clone $source1; - $source9 = new class() extends AbstractSource { - }; - //Level 3 - $source1->setMembers(new ArrayCollection([$source2])); - $source2->setMembers(new ArrayCollection([$source3])); + $source2->setMembers(new ArrayCollection([$source1, $source3])); $source3->setMembers(new ArrayCollection([$source4])); $source4->setMembers(new ArrayCollection([$source5])); $source5->setMembers(new ArrayCollection([$source6])); - $level3Elements = [$source1, $source2, $source3]; + $this->membersAttribut->setMembers(new ArrayCollection([$source1])); + $this->assertEquals(6, $this->membersAttribut->getMembersInclusiveChildren()->count()); + } - //Recursion - //$source7->setMembers(new ArrayCollection([$source8])); - //$source8->setMembers(new ArrayCollection([$source7])); - - $allMembers = [$source1, $source2, $source3, $source4, $source5, $source6, $source7, $source8, $source9]; - - //$this->assertArraySubset($source1->getMembersInclusiveChildren(5)->toArray(), $level3Elements); - //$this->assertArraySubset($source1->getMembersInclusiveChildren(3)->toArray(), $level3Elements); - //$this->assertArraySubset($source1->getMembersInclusiveChildren()->toArray(), $allMembers); - //$this->assertArraySubset($source1->getMembers()->toArray(), $source1->getMembersInclusiveChildren(1)->toArray()); - //$this->assertArraySubset($source1->getMembersInclusiveChildren(1)->toArray(), $source1->getMembers()->toArray()); + public function testMemberWithoutMembers(): void + { + $source1 = new class() extends AbstractSource { + }; + $this->membersAttribut->setMembers(new ArrayCollection([$source1])); + $this->assertEquals(1, $this->membersAttribut->getMembersInclusiveChildren()->count()); } }