/** * @test */ public function shouldContainsItemWork() { $o1 = new EntitiesDescriptor(); $o2 = new EntityDescriptor('ed1'); $o3 = new EntitiesDescriptor(); $o4 = new EntityDescriptor('ed2'); $x1 = new EntitiesDescriptor(); $x2 = new EntityDescriptor('ed3'); $o1->addItem($o2); $o1->addItem($o3); $o3->addItem($o4); $this->assertTrue($o1->containsItem($o2)); $this->assertTrue($o1->containsItem($o3)); $this->assertTrue($o1->containsItem($o4)); $this->assertFalse($o1->containsItem($x1)); $this->assertFalse($o1->containsItem($x2)); $this->assertTrue($o3->containsItem($o4)); $this->assertFalse($o3->containsItem($o1)); $this->assertFalse($o3->containsItem($o2)); $this->assertFalse($o3->containsItem($x1)); $this->assertFalse($o3->containsItem($x2)); }
/** * @param EntitiesDescriptor|EntityDescriptor $item * @return $this|EntitiesDescriptor * @throws \InvalidArgumentException */ public function addItem($item) { if (!$item instanceof EntitiesDescriptor && !$item instanceof EntityDescriptor) { throw new \InvalidArgumentException('Expected EntitiesDescriptor or EntityDescriptor'); } if ($item === $this) { throw new \InvalidArgumentException('Circular reference detected'); } if ($item instanceof EntitiesDescriptor) { if ($item->containsItem($this)) { throw new \InvalidArgumentException('Circular reference detected'); } } $this->items[] = $item; return $this; }