Exemple #1
0
 public function test()
 {
     $config = [1 => [2 => [], 3 => []], 4 => [5]];
     $items = [1 => $i1 = new Node(), 2 => $i2 = new Node(), 3 => $i3 = new Node(), 4 => $i4 = new Node(), 5 => $i5 = new Node()];
     $builder = new TreeBuilder();
     $tree = $builder->build($config, $items);
     self::assertEquals([$i1, $i4], array_values($tree));
     self::assertEquals(null, $i1->parent());
     self::assertEquals(null, $i4->parent());
     self::assertTrue($i1 === $i2->parent());
     self::assertTrue($i1 === $i3->parent());
     self::assertTrue($i4 === $i5->parent(), 'Test config items that requires normalization.');
 }
Exemple #2
0
 public function test()
 {
     $config = ['i1' => ['i2' => [], 'i3' => []], 'i4' => ['i5' => []]];
     $items = ['i1' => $i1 = new Node(), 'i2' => $i2 = new Node(), 'i3' => $i3 = new Node(), 'i4' => $i4 = new Node(), 'i5' => $i5 = new Node()];
     $root = new Node();
     $tree = new Tree($root, $config, $items);
     $tree->build();
     // test root
     self::assertTrue($tree->getRoot() === $root);
     self::assertTrue($i1->parent() === $root, 'test tree level 1');
     self::assertTrue($i5->parent() === $i4, 'test tree level N');
     // test append
     $newNode = new Node();
     $tree->append('i4', 'new', $newNode);
     $tree->build();
     self::assertTrue($newNode->parent() === $i4);
     $items = $i4->children()->toArray();
     self::assertTrue(array_pop($items) === $newNode);
     // test remove
     $tree->remove('new');
     $tree->build();
     self::assertTrue($newNode->parent() === null);
     // test adding same node again
     $tree->prepend('i4', 'new', $newNode);
     $tree->build();
     self::assertTrue($newNode->parent() === $i4);
     self::assertTrue($i4->children()->first() === $newNode);
     // test addMany
     $tree->addMany('i5', ['a' => $a = new Node(), 'b' => $b = new Node()]);
     $tree->build();
     self::assertTrue($a->parent() === $i5);
     self::assertTrue($b->parent() === $i5);
     // test move
     $tree->move('a', 'b');
     $tree->build();
     self::assertTrue($a->parent() === $b);
     $c = new Node();
     $tree->replace('a', $c);
     $tree->build();
     self::assertTrue($c->parent() === $b);
     self::assertTrue($a->parent() === null);
 }