public function test__contains_item_work() { $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 EntitiesDescriptor * * @throws \InvalidArgumentException */ public function addItem($item) { if (false == $item instanceof self && false == $item instanceof EntityDescriptor) { throw new \InvalidArgumentException('Expected EntitiesDescriptor or EntityDescriptor'); } if ($item === $this) { throw new \InvalidArgumentException('Circular reference detected'); } if ($item instanceof self) { if ($item->containsItem($this)) { throw new \InvalidArgumentException('Circular reference detected'); } } $this->items[] = $item; return $this; }