$v ) { if ( $tofind == $v ) { return $k; } } return -1; } function testSimple_1() { //Unit Test 1 - Simple $deptree = new DependencyTree(); $deptree->addNode( 'A-1', [ 8 ], [ 10 ] ); $deptree->addNode( 'A-2', [ 10 ], [ 12 ] ); $deptree->addNode( 'A-3', [ 12 ], [ 13 ] ); $result = $deptree->_buildTree(); //$should_match = [ // 0 => 'A-1', // 1 => 'A-2', // 2 => 'A-3', //]; $test1 = $this->indexOf( 'A-1', $result ) < $this->indexOf( 'A-2', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test2 = $this->indexOf( 'A-2', $result ) < $this->indexOf( 'A-3', $result ) ? true : false; $this->assertEquals( true, $test2 ); $test3 = $this->indexOf( 'A-3', $result ) == 2 ? true : false; $this->assertEquals( true, $test3 ); } function testModerate_1() { //Unit Test 2 - Moderate $deptree = new DependencyTree(); $deptree->addNode( 'A-1', [ 8 ], [ 10 ] ); $deptree->addNode( 'A-2', [ 10 ], [ 12 ] ); $deptree->addNode( 'A-3', [ 12 ], [ 13 ] ); $deptree->addNode( 'B-1', [ 10 ], [ 20 ] ); $deptree->addNode( 'B-2', [ 20 ], [ 22 ] ); $result = $deptree->_buildTree(); //var_dump($result); //$should_match = [ // 0 => 'A-1', // 1 => 'A-2', // 2 => 'A-3', // 3 => 'B-1', // 4 => 'B-2', //]; $test1 = $this->indexOf( 'A-1', $result ) < $this->indexOf( 'A-2', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test2 = $this->indexOf( 'A-2', $result ) < $this->indexOf( 'A-3', $result ) ? true : false; $this->assertEquals( true, $test2 ); $test3 = $this->indexOf( 'B-1', $result ) < $this->indexOf( 'B-2', $result ) ? true : false; $this->assertEquals( true, $test3 ); $test4 = $this->indexOf( 'B-1', $result ) > $this->indexOf( 'A-2', $result ) ? true : false; $this->assertEquals( true, $test4 ); } function testCircularDependency_1() { //Unit Test 3 - Simple Circ. Dep test $deptree = new DependencyTree(); $deptree->addNode( 'A', [ 'B' ], [ 'A' ], 2 ); $deptree->addNode( 'B', [ 'A' ], [ 'B' ], 1 ); $result = $deptree->_buildTree(); //$should_match = [ // 0 => 'B', // 1 => 'A', //]; $test1 = $this->indexOf( 'B', $result ) < $this->indexOf( 'A', $result ) ? true : false; $this->assertEquals( true, $test1 ); } function testCircularDependency_1B() { //Unit Test 3 - Simple Circ. Dep test $deptree = new DependencyTree(); $deptree->addNode( 'A', [ 'B' ], [ 'A' ] ); //No sort order $deptree->addNode( 'B', [ 'A' ], [ 'B' ] ); //No sort order $result = $deptree->_buildTree(); //$should_match = [ // 0 => 'A', // 1 => 'B', //]; $test1 = $this->indexOf( 'A', $result ) < $this->indexOf( 'B', $result ) ? true : false; $this->assertEquals( true, $test1 ); } function testCircularDependency_2() { //Unit Test 3 - Simple Circ. Dep test with large string based orders. $deptree = new DependencyTree(); $deptree->addNode( 'A', [ 'B' ], [ 'A' ], 'BTEST12345678901234567890123456789012345678901234567890123456789012345678901234567890' ); $deptree->addNode( 'B', [ 'A' ], [ 'B' ], 'ATEST12345678901234567890123456789012345678901234567890123456789012345678901234567890' ); $result = $deptree->_buildTree(); //$should_match = [ // 0 => 'B', // 1 => 'A', //]; $test1 = $this->indexOf( 'B', $result ) < $this->indexOf( 'A', $result ) ? true : false; $this->assertEquals( true, $test1 ); } function testCircularDependency_3() { //Unit Test 3 - Simple Circ. Dep test with large string based orders. $deptree = new DependencyTree(); $deptree->addNode( 'A', [ 'B' ], [ 'A' ], 'A12345678901234567890123456789012345678901234567890123456789012345678901234567890B' ); $deptree->addNode( 'B', [ 'A' ], [ 'B' ], 'A12345678901234567890123456789012345678901234567890123456789012345678901234567890A' ); $result = $deptree->_buildTree(); //$should_match = [ // 0 => 'B', // 1 => 'A', //]; $test1 = $this->indexOf( 'B', $result ) < $this->indexOf( 'A', $result ) ? true : false; $this->assertEquals( true, $test1 ); } function testCircularDependency_4() { //Unit Test 4 - Simple Circ. Dep test within the same node $deptree = new DependencyTree(); $deptree->addNode( 'SS-EE', [ 'HSA' ], [ 'EE' ], '50000800000000122' ); $deptree->addNode( 'SS-ER', [ 'HSA' ], [ 'ER' ], '60000810000000123' ); $deptree->addNode( 'HSA', [ 'HSA' ], [ 'HSA' ], '50001000000001778' ); $result = $deptree->_buildTree(); //$should_match = [ // 0 => 'HSA', // 1 => 'SS-EE', // 2 => 'SS-ER', //]; $test1 = $this->indexOf( 'HSA', $result ) < $this->indexOf( 'SS-EE', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test2 = $this->indexOf( 'HSA', $result ) < $this->indexOf( 'SS-ER', $result ) ? true : false; $this->assertEquals( true, $test2 ); $test3 = $this->indexOf( 'SS-EE', $result ) < $this->indexOf( 'SS-ER', $result ) ? true : false; $this->assertEquals( true, $test3 ); } function testCircularDependency_4b() { //Unit Test 4 - Simple Circ. Dep test within the same node $deptree = new DependencyTree(); $deptree->addNode( 'SS-EE', [ 'HSA' ], [ 'EE' ], '50000800000000122' ); $deptree->addNode( 'SS-ER', [ 'HSA' ], [ 'ER' ], '60000810000000123' ); $deptree->addNode( 'HSA', [ 'HSA', 'HSA2' ], [ 'HSA' ], '50001000000001778' ); $deptree->addNode( 'HSA2', [], [ 'HSA2' ], '50001000000001779' ); $result = $deptree->_buildTree(); //$should_match = [ // 0 => 'HSA2', // 1 => 'HSA', // 2 => 'SS-EE', // 3 => 'SS-ER', //]; $test1 = $this->indexOf( 'HSA2', $result ) < $this->indexOf( 'HSA', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test2 = $this->indexOf( 'HSA', $result ) < $this->indexOf( 'SS-EE', $result ) ? true : false; $this->assertEquals( true, $test2 ); $test3 = $this->indexOf( 'HSA', $result ) < $this->indexOf( 'SS-ER', $result ) ? true : false; $this->assertEquals( true, $test3 ); $test4 = $this->indexOf( 'SS-EE', $result ) < $this->indexOf( 'SS-ER', $result ) ? true : false; $this->assertEquals( true, $test4 ); } function testHard_1() { //Unit Test 4 - Harder $deptree = new DependencyTree(); $deptree->addNode( 'A-2', [ 10, 30 ], [ 20 ] ); $deptree->addNode( 'A-1', [], [ 10 ] ); $deptree->addNode( 'B-1', [], [ 30 ] ); $result = $deptree->_buildTree(); //$should_match = [ // 0 => 'A-1', // 1 => 'B-1', // 2 => 'A-2', //]; $test1 = $this->indexOf( 'A-1', $result ) < $this->indexOf( 'B-1', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test2 = $this->indexOf( 'B-1', $result ) < $this->indexOf( 'A-2', $result ) ? true : false; $this->assertEquals( true, $test2 ); $test3 = $this->indexOf( 'A-2', $result ) == 2 ? true : false; $this->assertEquals( true, $test3 ); } function testHard_2() { //Unit Test 5 - Hardest $deptree = new DependencyTree(); $deptree->addNode( ' Test2', [ 40 ], [ 200 ] ); $deptree->addNode( 'VacAccrual', [ 10, 20, 40 ], [ 99 ], 50 ); $deptree->addNode( 'VacRelease', [ 99 ], [ 20 ], 100 ); $deptree->addNode( 'Test1', [], [ 40 ] ); $deptree->addNode( 'Test3', [], [ 10 ] ); $result = $deptree->_buildTree(); //var_dump($result); //$should_match = [ // 0 => 'Test1', // 1 => 'Test3', // 2 => 'VacAccrual', // 3 => 'VacRelease', // 4 => ' Test2', //]; $test1 = $this->indexOf( 'Test1', $result ) < $this->indexOf( 'Test3', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test2 = $this->indexOf( 'Test3', $result ) < $this->indexOf( 'VacAccrual', $result ) ? true : false; $this->assertEquals( true, $test2 ); $test2b = $this->indexOf( ' Test2', $result ) < $this->indexOf( 'VacAccrual', $result ) ? true : false; $this->assertEquals( true, $test2b ); $test3 = $this->indexOf( 'VacAccrual', $result ) < $this->indexOf( 'VacRelease', $result ) ? true : false; $this->assertEquals( true, $test3 ); $test4 = $this->indexOf( 'VacRelease', $result ) == 4 ? true : false; $this->assertEquals( true, $test4 ); } function testHard_3() { //Unit Test 6 - Double Hardest $deptree = new DependencyTree(); $deptree->addNode( 'Test5', [ 200, 99, 20, 40, 10, 500 ], [ 999 ] ); $deptree->addNode( ' Test2', [ 40 ], [ 200 ] ); $deptree->addNode( 'VacAccrual', [ 10, 20, 40 ], [ 99 ], 50 ); $deptree->addNode( 'VacRelease', [ 99 ], [ 20 ], 100 ); $deptree->addNode( 'Test1', [], [ 40 ] ); $deptree->addNode( 'Test3', [], [ 10 ] ); $deptree->addNode( 'Test4', [ 20 ], [ 500 ] ); $result = $deptree->_buildTree(); //var_dump($result); //$should_match = [ // 0 => 'Test1', // 1 => 'Test3', // 2 => 'VacAccrual', // 3 => 'VacRelease', // 4 => ' Test2', // 5 => 'Test4', // 6 => 'Test5', //]; $test1 = $this->indexOf( 'Test1', $result ) < $this->indexOf( 'Test3', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test2 = $this->indexOf( 'Test3', $result ) < $this->indexOf( 'VacAccrual', $result ) ? true : false; $this->assertEquals( true, $test2 ); $test2b = $this->indexOf( ' Test2', $result ) < $this->indexOf( 'Test4', $result ) ? true : false; $this->assertEquals( true, $test2b ); $test2c = $this->indexOf( ' Test4', $result ) < $this->indexOf( 'VacAccrual', $result ) ? true : false; $this->assertEquals( true, $test2c ); $test3 = $this->indexOf( 'VacAccrual', $result ) < $this->indexOf( 'VacRelease', $result ) ? true : false; $this->assertEquals( true, $test3 ); $test4 = $this->indexOf( 'Test5', $result ) > $this->indexOf( 'Test4', $result ) ? true : false; $this->assertEquals( true, $test4 ); $test4b = $this->indexOf( 'Test5', $result ) > $this->indexOf( 'VacAccrual', $result ) ? true : false; $this->assertEquals( true, $test4b ); $test5 = $this->indexOf( 'Test5', $result ) == 6 ? true : false; $this->assertEquals( true, $test5 ); } function testPerf_1() { //Unit Test 7 - Performance test $deptree = new DependencyTree(); $deptree->addNode( 'U1288', [ 143 ], [ 146 ], 60 ); $deptree->addNode( 'U1287', [ 159, 136 ], [ 143 ], 50 ); $deptree->addNode( 'U1289', [ 159, 136 ], [ 144 ], 50 ); $deptree->addNode( 'U1290', [ 144 ], [ 147 ], 60 ); $deptree->addNode( 'U1291', [ 159, 136 ], [ 148 ], 60 ); $deptree->addNode( 'U1292', [ 159, 136 ], [ 140 ], 50 ); $deptree->addNode( 'U1293', [ 159, 136 ], [ 141 ], 50 ); $deptree->addNode( 'U1294', [ 159, 136, 159 ], [ 151 ], 50 ); $deptree->addNode( 'P2458', [ 151 ], [ 159 ], 40 ); $deptree->addNode( 'P2265', [], [ 136 ], 40 ); $result = $deptree->_buildTree(); //var_dump($result); //$should_match = [ // 0 => 'P2265', // 1 => 'P2458', // 2 => 'U1294', // 3 => 'U1287', // 4 => 'U1288', // 5 => 'U1289', // 6 => 'U1290', // 7 => 'U1291', // 8 => 'U1292', // 9 => 'U1293', //]; $test1 = $this->indexOf( 'P2265', $result ) < $this->indexOf( 'P2458', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test2 = $this->indexOf( 'P2458', $result ) < $this->indexOf( 'U1287', $result ) ? true : false; $this->assertEquals( true, $test2 ); $test3 = $this->indexOf( 'U1287', $result ) < $this->indexOf( 'U1289', $result ) ? true : false; $this->assertEquals( true, $test3 ); $test4 = $this->indexOf( 'U1289', $result ) < $this->indexOf( 'U1292', $result ) ? true : false; $this->assertEquals( true, $test4 ); $test5 = $this->indexOf( 'U1292', $result ) < $this->indexOf( 'U1293', $result ) ? true : false; $this->assertEquals( true, $test5 ); $test6 = $this->indexOf( 'U1293', $result ) < $this->indexOf( 'U1294', $result ) ? true : false; $this->assertEquals( true, $test6 ); $test7 = $this->indexOf( 'U1294', $result ) < $this->indexOf( 'U1291', $result ) ? true : false; $this->assertEquals( true, $test7 ); $test8 = $this->indexOf( 'U1291', $result ) < $this->indexOf( 'U1288', $result ) ? true : false; $this->assertEquals( true, $test8 ); $test9 = $this->indexOf( 'U1288', $result ) < $this->indexOf( 'U1290', $result ) ? true : false; $this->assertEquals( true, $test9 ); $test10 = $this->indexOf( 'U1290', $result ) == 9 ? true : false; $this->assertEquals( true, $test10 ); } function testHard_4() { $deptree = new DependencyTree(); // 1st requires, 2nd provides // p3072 p3071, u2022 u2130 u2129 // // // $deptree->addNode( 'U2022', [ 268, 266 ], [ 265 ], 30 ); $deptree->addNode( 'U2130', [ 268, 266 ], [ 260 ], 50 ); $deptree->addNode( 'U2129', [ 268, 266 ], [ 257 ], 50 ); $deptree->addNode( 'P3072', [], [ 268 ], 40 ); $deptree->addNode( 'P3071', [ 265 ], [ 266 ], 40 ); $deptree->addNode( 'P3073', [], [ 283 ], 50 ); $result = $deptree->_buildTree(); //var_dump($result); //$should_match = [ // 0 => 'P3072', // 1 => 'U2022', // 2 => 'P3071', // 3 => 'U2129', // 4 => 'U2130', // 5 => 'P3073', //]; $test1 = $this->indexOf( 'P3072', $result ) < $this->indexOf( 'P3073', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test2 = $this->indexOf( 'P3073', $result ) < $this->indexOf( 'U2022', $result ) ? true : false; $this->assertEquals( true, $test2 ); $test3 = $this->indexOf( 'U2022', $result ) < $this->indexOf( 'P3071', $result ) ? true : false; $this->assertEquals( true, $test3 ); $test4 = $this->indexOf( 'P3071', $result ) < $this->indexOf( 'U2129', $result ) ? true : false; $this->assertEquals( true, $test4 ); $test5 = $this->indexOf( 'U2129', $result ) < $this->indexOf( 'U2130', $result ) ? true : false; $this->assertEquals( true, $test5 ); $test10 = $this->indexOf( 'U2130', $result ) == 5 ? true : false; $this->assertEquals( true, $test10 ); } function testHard_5() { /* public 'raw_data' => array 'U2069' => object(DependencyTreeNode)[113] protected 'data' => array 'id' => 'U2069' (length=5) 'requires' => array 0 => '101' (length=3) 1 => '102' (length=3) 2 => '120' (length=3) 3 => '254' (length=3) 4 => '128' (length=3) 5 => '103' (length=3) 6 => '104' (length=3) 7 => '123' (length=3) 8 => '124' (length=3) 9 => '125' (length=3) 10 => '126' (length=3) 11 => '129' (length=3) 12 => '130' (length=3) 13 => '256' (length=3) 14 => '105' (length=3) 15 => '119' (length=3) 'provides' => array 0 => '254' (length=3) 'order' => 40 'U2060' => object(DependencyTreeNode)[131] protected 'data' => array 'id' => 'U2060' (length=5) 'requires' => array 0 => '101' (length=3) 1 => '102' (length=3) 2 => '120' (length=3) 3 => '254' (length=3) 4 => '128' (length=3) 5 => '103' (length=3) 6 => '104' (length=3) 7 => '123' (length=3) 8 => '124' (length=3) 9 => '125' (length=3) 10 => '126' (length=3) 11 => '129' (length=3) 12 => '130' (length=3) 13 => '256' (length=3) 14 => '105' (length=3) 15 => '119' (length=3) 16 => '255' (length=3) 'provides' => array 0 => '110' (length=3) 'order' => 50 'U2061' => object(DependencyTreeNode)[144] protected 'data' => array 'id' => 'U2061' (length=5) 'requires' => array 0 => '110' (length=3) 'provides' => array 0 => '113' (length=3) 'order' => 60 'U2062' => object(DependencyTreeNode)[153] protected 'data' => array 'id' => 'U2062' (length=5) 'requires' => array 0 => '101' (length=3) 1 => '102' (length=3) 2 => '120' (length=3) 3 => '254' (length=3) 4 => '128' (length=3) 5 => '103' (length=3) 6 => '104' (length=3) 7 => '123' (length=3) 8 => '124' (length=3) 9 => '125' (length=3) 10 => '126' (length=3) 11 => '129' (length=3) 12 => '130' (length=3) 13 => '256' (length=3) 14 => '105' (length=3) 15 => '119' (length=3) 16 => '255' (length=3) 'provides' => array 0 => '111' (length=3) 'order' => 50 'U2063' => object(DependencyTreeNode)[166] protected 'data' => array 'id' => 'U2063' (length=5) 'requires' => array 0 => '111' (length=3) 'provides' => array 0 => '114' (length=3) 'order' => 60 'U2064' => object(DependencyTreeNode)[175] protected 'data' => array 'id' => 'U2064' (length=5) 'requires' => array 0 => '101' (length=3) 1 => '102' (length=3) 2 => '120' (length=3) 3 => '254' (length=3) 4 => '128' (length=3) 5 => '103' (length=3) 6 => '104' (length=3) 7 => '123' (length=3) 8 => '124' (length=3) 9 => '125' (length=3) 10 => '126' (length=3) 11 => '129' (length=3) 12 => '130' (length=3) 13 => '256' (length=3) 14 => '105' (length=3) 15 => '119' (length=3) 'provides' => array 0 => '115' (length=3) 'order' => 60 'U2065' => object(DependencyTreeNode)[186] protected 'data' => array 'id' => 'U2065' (length=5) 'requires' => array 0 => '101' (length=3) 1 => '102' (length=3) 2 => '120' (length=3) 3 => '254' (length=3) 4 => '128' (length=3) 5 => '103' (length=3) 6 => '104' (length=3) 7 => '123' (length=3) 8 => '124' (length=3) 9 => '125' (length=3) 10 => '126' (length=3) 11 => '129' (length=3) 12 => '130' (length=3) 13 => '256' (length=3) 14 => '105' (length=3) 15 => '119' (length=3) 'provides' => array 0 => '127' (length=3) 'order' => 50 'U2066' => object(DependencyTreeNode)[197] protected 'data' => array 'id' => 'U2066' (length=5) 'requires' => array 0 => '101' (length=3) 1 => '102' (length=3) 2 => '120' (length=3) 3 => '254' (length=3) 4 => '128' (length=3) 5 => '103' (length=3) 6 => '104' (length=3) 7 => '123' (length=3) 8 => '124' (length=3) 9 => '125' (length=3) 10 => '126' (length=3) 11 => '129' (length=3) 12 => '130' (length=3) 13 => '256' (length=3) 14 => '105' (length=3) 15 => '119' (length=3) 16 => '127' (length=3) 'provides' => array 0 => '107' (length=3) 'order' => 50 'U2067' => object(DependencyTreeNode)[208] protected 'data' => array 'id' => 'U2067' (length=5) 'requires' => array empty 'provides' => array 0 => '109' (length=3) 'order' => 50 'U2068' => object(DependencyTreeNode)[193] protected 'data' => array 'id' => 'U2068' (length=5) 'requires' => array 0 => '101' (length=3) 1 => '102' (length=3) 2 => '120' (length=3) 3 => '254' (length=3) 4 => '128' (length=3) 5 => '103' (length=3) 6 => '104' (length=3) 7 => '123' (length=3) 8 => '124' (length=3) 9 => '125' (length=3) 10 => '126' (length=3) 11 => '129' (length=3) 12 => '130' (length=3) 13 => '256' (length=3) 14 => '105' (length=3) 15 => '119' (length=3) 16 => '127' (length=3) 17 => '121' (length=3) 'provides' => array 0 => '108' (length=3) 'order' => 50 'P3217' => object(DependencyTreeNode)[230] protected 'data' => array 'id' => 'P3217' (length=5) 'requires' => array 0 => null 'provides' => array 0 => 256 'order' => 40 'P3290' => object(DependencyTreeNode)[218] protected 'data' => array 'id' => 'P3290' (length=5) 'requires' => array 0 => null 'provides' => array 0 => 256 'order' => 40 'P3294' => object(DependencyTreeNode)[236] protected 'data' => array 'id' => 'P3294' (length=5) 'requires' => array 0 => null 'provides' => array 0 => 256 'order' => 40 */ $deptree = new DependencyTree(); $deptree->addNode( 'U2029', [ 101, 102, 120, 254, 128, 103, 104, 123, 124, 125, 126, 129, 130, 256, 105, 119 ], [ 254 ], 40 ); $deptree->addNode( 'U2060', [ 101, 102, 120, 254, 128, 103, 104, 123, 124, 125, 126, 129, 130, 256, 105, 119, 255 ], [ 110 ], 50 ); $deptree->addNode( 'U2061', [ 110 ], [ 113 ], 60 ); $deptree->addNode( 'U2062', [ 101, 102, 120, 254, 128, 103, 104, 123, 124, 125, 126, 129, 130, 256, 105, 119, 255 ], [ 111 ], 50 ); $deptree->addNode( 'U2063', [ 111 ], [ 114 ], 60 ); $deptree->addNode( 'U2064', [ 101, 102, 120, 254, 128, 103, 104, 123, 124, 125, 126, 129, 130, 256, 105, 119 ], [ 115 ], 60 ); $deptree->addNode( 'U2065', [ 101, 102, 120, 254, 128, 103, 104, 123, 124, 125, 126, 129, 130, 256, 105, 119 ], [ 127 ], 50 ); $deptree->addNode( 'U2066', [ 101, 102, 120, 254, 128, 103, 104, 123, 124, 125, 126, 129, 130, 256, 105, 119, 127 ], [ 107 ], 50 ); $deptree->addNode( 'U2067', [], [ 109 ], 50 ); $deptree->addNode( 'U2068', [ 101, 102, 120, 254, 128, 103, 104, 123, 124, 125, 126, 129, 130, 256, 105, 119, 127, 121 ], [ 108 ], 50 ); $deptree->addNode( 'P3217', [ null ], [ 256 ], 40 ); // //Uncomment any of the ADDNODE lines below to cause the infinite loop // $deptree->addNode( 'P3290', [ null ], [ 256 ], 40 ); $deptree->addNode( 'P3294', [ null ], [ 256 ], 40 ); $result = $deptree->_buildTree(); //var_dump($result); //THIS MAY NOT BE CORRECT... //$should_match = [ // 0 => 'P3217', // 1 => 'P3290', // 2 => 'P3294', // 3 => 'U2029', // 4 => 'U2060', // 5 => 'U2061', // 6 => 'U2062', // 7 => 'U2063', // 8 => 'U2064', // 9 => 'U2065', // 10 => 'U2066', // 11 => 'U2068', // 12 => 'U2067', //]; $test1 = $this->indexOf( 'P3217', $result ) < $this->indexOf( 'P3290', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'P3290', $result ) < $this->indexOf( 'P3294', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'P3294', $result ) < $this->indexOf( 'U2067', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U2067', $result ) < $this->indexOf( 'U2029', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U2029', $result ) < $this->indexOf( 'U2060', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U2060', $result ) < $this->indexOf( 'U2062', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U2062', $result ) < $this->indexOf( 'U2065', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U2065', $result ) < $this->indexOf( 'U2064', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U2064', $result ) < $this->indexOf( 'U2066', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U2066', $result ) < $this->indexOf( 'U2068', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U2068', $result ) < $this->indexOf( 'U2061', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U2061', $result ) < $this->indexOf( 'U2063', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test10 = $this->indexOf( 'U2063', $result ) == 12 ? true : false; $this->assertEquals( true, $test10 ); } function testHard_6() { //Unit Test 12 - Performance test $deptree = new DependencyTree(); /* public 'raw_data' => array 'U156' => object(DependencyTreeNode)[115] protected 'data' => array 'id' => 'U156' (length=4) 'requires' => array 0 => '254' (length=3) 'provides' => array 0 => '254' (length=3) 'order' => 40 'treenumber' => 0 'U149' => object(DependencyTreeNode)[134] protected 'data' => array 'id' => 'U149' (length=4) 'requires' => array 0 => '254' (length=3) 1 => '255' (length=3) 'provides' => array 0 => '110' (length=3) 'order' => 50 'treenumber' => 0 'U150' => object(DependencyTreeNode)[141] protected 'data' => array 'id' => 'U150' (length=4) 'requires' => array 0 => '110' (length=3) 'provides' => array 0 => '113' (length=3) 'order' => 60 'treenumber' => 0 'U151' => object(DependencyTreeNode)[152] protected 'data' => array 'id' => 'U151' (length=4) 'requires' => array 0 => '254' (length=3) 1 => '255' (length=3) 'provides' => array 0 => '111' (length=3) 'order' => 50 'treenumber' => 0 'U152' => object(DependencyTreeNode)[159] protected 'data' => array 'id' => 'U152' (length=4) 'requires' => array 0 => '111' (length=3) 'provides' => array 0 => '114' (length=3) 'order' => 60 'treenumber' => 0 'U153' => object(DependencyTreeNode)[168] protected 'data' => array 'id' => 'U153' (length=4) 'requires' => array 0 => '254' (length=3) 'provides' => array 0 => '115' (length=3) 'order' => 60 'treenumber' => 0 'U998' => object(DependencyTreeNode)[177] protected 'data' => array 'id' => 'U998' (length=4) 'requires' => array 0 => '254' (length=3) 'provides' => array 0 => '127' (length=3) 'order' => 50 'treenumber' => 0 'U154' => object(DependencyTreeNode)[185] protected 'data' => array 'id' => 'U154' (length=4) 'requires' => array 0 => '254' (length=3) 1 => '127' (length=3) 'provides' => array 0 => '107' (length=3) 'order' => 50 'treenumber' => 0 'U155' => object(DependencyTreeNode)[197] protected 'data' => array 'id' => 'U155' (length=4) 'requires' => array 0 => '254' (length=3) 1 => '127' (length=3) 2 => '121' (length=3) 'provides' => array 0 => '108' (length=3) 'order' => 50 'treenumber' => 0 'U4452' => object(DependencyTreeNode)[204] protected 'data' => array 'id' => 'U4452' (length=5) 'requires' => array 0 => '254' (length=3) 'provides' => array 0 => '255' (length=3) 'order' => 60 'treenumber' => 0 'P3475' => object(DependencyTreeNode)[190] protected 'data' => array 'id' => 'P3475' (length=5) 'requires' => array empty 'provides' => array 0 => 121 'order' => 50 'treenumber' => */ // //U4452 should be above U149 always!! // $deptree->addNode( 'U156', [ 254 ], [ 254 ], 40 ); //$deptree->addNode('U4452', array(254), array(255), 60 ); //Works if I put this here $deptree->addNode( 'U149', [ 254, 255 ], [ 110 ], 50 ); $deptree->addNode( 'U153', [ 254 ], [ 115 ], 60 ); $deptree->addNode( 'U4452', [ 254 ], [ 255 ], 60 ); //Fails if I put it here $deptree->addNode( 'U998', [ 254 ], [ 127 ], 50 ); $result = $deptree->_buildTree(); //var_dump($result); //$should_match = [ // 0 => 'U156', // 1 => 'U4452', // 2 => 'U149', // 3 => 'U153', // 4 => 'U998', //]; $test1 = $this->indexOf( 'U156', $result ) < $this->indexOf( 'U998', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U998', $result ) < $this->indexOf( 'U153', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U153', $result ) < $this->indexOf( 'U4452', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U4452', $result ) < $this->indexOf( 'U149', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test5 = $this->indexOf( 'U149', $result ) == 4 ? true : false; $this->assertEquals( true, $test5 ); } function testTwoTrees_1() { $deptree = new DependencyTree(); $deptree->setTreeOrdering( true ); // //U4452 should be above U149 always!! // //Tree 1 $deptree->addNode( 'U156', [ 254 ], [ 254 ], 40 ); $deptree->addNode( 'U149', [ 254, 255 ], [ 110 ], 50 ); $deptree->addNode( 'U153', [ 254 ], [ 115 ], 60 ); $deptree->addNode( 'U4452', [ 254 ], [ 255 ], 60 ); //Fails if I put it here $deptree->addNode( 'U998', [ 254 ], [ 127 ], 50 ); //Tree 2 $deptree->addNode( 'Z156', [ 2540 ], [ 2540 ], 40 ); $deptree->addNode( 'Z149', [ 2540, 2550 ], [ 1100 ], 50 ); $deptree->addNode( 'Z153', [ 2540 ], [ 1150 ], 60 ); $deptree->addNode( 'Z4452', [ 2540 ], [ 2550 ], 60 ); //Fails if I put it here $deptree->addNode( 'Z998', [ 2540 ], [ 1270 ], 50 ); $result = $deptree->_buildTree(); //var_dump($result); //$should_match = [ // 0 => 'U156', // 1 => 'U4452', // 2 => 'U149', // 3 => 'U153', // 4 => 'U998', //]; //Tree 1 $test1 = $this->indexOf( 'U156', $result ) < $this->indexOf( 'U998', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U998', $result ) < $this->indexOf( 'U153', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U153', $result ) < $this->indexOf( 'U4452', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U4452', $result ) < $this->indexOf( 'U149', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test5 = $this->indexOf( 'U149', $result ) == 4 ? true : false; $this->assertEquals( true, $test5 ); //Tree 2 $test1 = $this->indexOf( 'Z156', $result ) < $this->indexOf( 'Z998', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'Z998', $result ) < $this->indexOf( 'Z153', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'Z153', $result ) < $this->indexOf( 'Z4452', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'Z4452', $result ) < $this->indexOf( 'Z149', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test5 = $this->indexOf( 'Z149', $result ) == 9 ? true : false; $this->assertEquals( true, $test5 ); } function testTwoTrees_2() { $deptree = new DependencyTree(); $deptree->setTreeOrdering( false ); // //U4452 should be above U149 always!! // //Tree 1 $deptree->addNode( 'U156', [ 254 ], [ 254 ], 40 ); $deptree->addNode( 'U149', [ 254, 255 ], [ 110 ], 50 ); $deptree->addNode( 'U153', [ 254 ], [ 115 ], 60 ); $deptree->addNode( 'U4452', [ 254 ], [ 255 ], 60 ); //Fails if I put it here $deptree->addNode( 'U998', [ 254 ], [ 127 ], 50 ); //Tree 2 $deptree->addNode( 'Z156', [ 2540 ], [ 2540 ], 40 ); $deptree->addNode( 'Z149', [ 2540, 2550 ], [ 1100 ], 50 ); $deptree->addNode( 'Z153', [ 2540 ], [ 1150 ], 60 ); $deptree->addNode( 'Z4452', [ 2540 ], [ 2550 ], 60 ); //Fails if I put it here $deptree->addNode( 'Z998', [ 2540 ], [ 1270 ], 50 ); $result = $deptree->_buildTree(); //var_dump($result); //$should_match = [ // 0 => 'U156', // 1 => 'U4452', // 2 => 'U149', // 3 => 'U153', // 4 => 'U998', //]; //Tree 1 $test1 = $this->indexOf( 'U156', $result ) < $this->indexOf( 'U998', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U998', $result ) < $this->indexOf( 'U153', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U153', $result ) < $this->indexOf( 'U4452', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U4452', $result ) < $this->indexOf( 'U149', $result ) ? true : false; $this->assertEquals( true, $test1 ); //Tree 2 $test1 = $this->indexOf( 'Z156', $result ) < $this->indexOf( 'Z998', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'Z998', $result ) < $this->indexOf( 'Z153', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'Z153', $result ) < $this->indexOf( 'Z4452', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'Z4452', $result ) < $this->indexOf( 'Z149', $result ) ? true : false; $this->assertEquals( true, $test1 ); //Combined Trees $test1 = $this->indexOf( 'U156', $result ) < $this->indexOf( 'Z156', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U998', $result ) < $this->indexOf( 'Z153', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U153', $result ) < $this->indexOf( 'Z4452', $result ) ? true : false; $this->assertEquals( true, $test1 ); $test1 = $this->indexOf( 'U4452', $result ) < $this->indexOf( 'Z149', $result ) ? true : false; $this->assertEquals( true, $test1 ); } /* $deptree->addNode('P17', array(), array(124), 6000380 ); $deptree->addNode('U7897', array(104,121), array(120), 6000100 ); //Average Vacation Rate (per Day) $deptree->addNode('U7905', array(120), array(104), 4000200 ); //Vacation Pay (Based on Average Rate/Day) $deptree->addNode('U7907', array(104,121), array(121), 4000100 ); //Vac Normalization $deptree->addNode('U7909', array(121,104), array(92), 5000205 ); //Income Tax U7905 (R: 120 P: 104) -> U7897 (R:104,121 P: 120) U7907 (R:104,121 P: 121) */ } ?>