$test = new ioMenuItemTest('Imported'); $test->fromArray($menu['Parent 2']->toArray()); $t->is($test->toArray(), $menu['Parent 2']->toArray(), 'Creating a new menu item from pt2\'s source gives us an identical menu.'); $t->info(' c) Test ->fromArray(), but put it into a menu of a different class'); $test = new ioMenuItem('Imported'); $test->fromArray($menu['Parent 2']->toArray()); $targetArr = $menu['Parent 2']->toArray(); // the top level menu will be different, but the children will all have the old correct ioMenuItemTest class $targetArr['class'] = 'ioMenuItem'; $t->is($test->toArray(), $targetArr, 'The menu sourced from pt2 is identical, except the parent class was changed.'); $t->is(get_class($test['Child 4']), 'ioMenuItemTest', 'The child menus correctly use their menu class.'); $t->info(' d) Test ->fromArray() with different class keys'); $source = $menu['Parent 2']->toArray(); $source['class'] = 'ioMenuItem'; $test = new ioMenuItem('Imported'); $test->fromArray($source); $t->is(get_class($test['Child 4']), 'ioMenuItemTest', 'The child menus correctly use their menu class.'); $t->info(' e) Test ::createFromArray().'); $source['class'] = 'ioMenu'; $newMenu = ioMenuItem::createFromArray($source); $t->is(get_class($newMenu), 'ioMenu', 'The new menu is created with the correct class.'); $t->is($newMenu->getName(), 'Parent 2', 'The new menu has the correct name.'); $t->is(get_class($newMenu['Child 4']), 'ioMenuItemTest', 'The child menus correctly use their menu class.'); // reset some settings $menu['Parent 2']->isCurrent(false); $menu['Parent 2']->setAttribute('class', null); $t->info('8 - Test the render() method.'); check_test_tree($t, $menu); print_test_tree($t); $t->info('### Set the menu to compressed format. Functional tests asserts with uncompressed.'); ioMenuItem::$renderCompressed = true;