From 0cb2cc76dad69ec3b78792406e5af197281213fb Mon Sep 17 00:00:00 2001 From: Steevan BARBOYON Date: Wed, 15 May 2024 11:46:21 +0200 Subject: [PATCH] Add tests for contains to certify contains() works on the same object, and not only the value of it's properties --- .../AbstractObjectCollectionTest.php | 29 ++++++++++++++ .../AbstractObjectNullableCollectionTest.php | 38 +++++++++++++++++++ tests/Unit/ObjectCollection/TestObject.php | 5 --- 3 files changed, 67 insertions(+), 5 deletions(-) diff --git a/tests/Unit/ObjectCollection/AbstractObjectCollectionTest.php b/tests/Unit/ObjectCollection/AbstractObjectCollectionTest.php index ee362c2..8d50e19 100644 --- a/tests/Unit/ObjectCollection/AbstractObjectCollectionTest.php +++ b/tests/Unit/ObjectCollection/AbstractObjectCollectionTest.php @@ -52,4 +52,33 @@ public function testAssertValueTypeInvalidValueNull(): void /** @phpstan-ignore-next-line Parameter #1 $values ... constructor expects ... array given. */ new TestObjectCollection([null]); } + + public function testNotContains(): void + { + $object1 = new TestObject('value 1'); + $object2 = new TestObject('value 2'); + $object3 = new TestObject('value 3'); + $collection = new TestObjectCollection([$object1, $object2]); + + static::assertFalse($collection->contains($object3)); + } + + public function testContainsEquals(): void + { + $object1 = new TestObject('value 1'); + $object2 = new TestObject('value 2'); + $object3 = new TestObject('value 1'); + $collection = new TestObjectCollection([$object1, $object2]); + + static::assertFalse($collection->contains($object3)); + } + + public function testContainsSame(): void + { + $object1 = new TestObject('value 1'); + $object2 = new TestObject('value 2'); + $collection = new TestObjectCollection([$object1, $object2]); + + static::assertTrue($collection->contains($object2)); + } } diff --git a/tests/Unit/ObjectCollection/AbstractObjectNullableCollectionTest.php b/tests/Unit/ObjectCollection/AbstractObjectNullableCollectionTest.php index 756468a..d77cb9a 100644 --- a/tests/Unit/ObjectCollection/AbstractObjectNullableCollectionTest.php +++ b/tests/Unit/ObjectCollection/AbstractObjectNullableCollectionTest.php @@ -50,4 +50,42 @@ public function testAssertValueTypeNull(): void static::assertNull($collection->get(0)); } + + public function testNotContains(): void + { + $object1 = new TestObject('value 1'); + $object2 = new TestObject('value 2'); + $object3 = new TestObject('value 3'); + $collection = new TestObjectNullableCollection([$object1, $object2]); + + static::assertFalse($collection->contains($object3)); + } + + public function testContainsEquals(): void + { + $object1 = new TestObject('value 1'); + $object2 = new TestObject('value 2'); + $object3 = new TestObject('value 1'); + $collection = new TestObjectNullableCollection([$object1, $object2]); + + static::assertFalse($collection->contains($object3)); + } + + public function testContainsSame(): void + { + $object1 = new TestObject('value 1'); + $object2 = new TestObject('value 2'); + $collection = new TestObjectNullableCollection([$object1, $object2]); + + static::assertTrue($collection->contains($object2)); + } + + public function testContainsNull(): void + { + $object1 = new TestObject('value 1'); + $object2 = new TestObject('value 2'); + $collection = new TestObjectNullableCollection([$object1, $object2, null]); + + static::assertTrue($collection->contains(null)); + } } diff --git a/tests/Unit/ObjectCollection/TestObject.php b/tests/Unit/ObjectCollection/TestObject.php index a174759..19dff8c 100644 --- a/tests/Unit/ObjectCollection/TestObject.php +++ b/tests/Unit/ObjectCollection/TestObject.php @@ -14,9 +14,4 @@ public function getValue(): string { return $this->value; } - - public function __toString(): string - { - return $this->value; - } }