TimeTrex Community Edition v16.2.0
This commit is contained in:
49
vendor/pear/structures_graph/tests/AcyclicTestTest.php
vendored
Normal file
49
vendor/pear/structures_graph/tests/AcyclicTestTest.php
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
require_once dirname(__FILE__) . '/helper.inc';
|
||||
require_once 'Structures/Graph/Manipulator/AcyclicTest.php';
|
||||
|
||||
class AcyclicTestTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function testIsAcyclicFalse()
|
||||
{
|
||||
$graph = new Structures_Graph();
|
||||
$node1 = new Structures_Graph_Node();
|
||||
$graph->addNode($node1);
|
||||
|
||||
$node2 = new Structures_Graph_Node();
|
||||
$graph->addNode($node2);
|
||||
$node1->connectTo($node2);
|
||||
|
||||
$node3 = new Structures_Graph_Node();
|
||||
$graph->addNode($node3);
|
||||
$node2->connectTo($node3);
|
||||
|
||||
$node3->connectTo($node1);
|
||||
|
||||
$this->assertFalse(
|
||||
Structures_Graph_Manipulator_AcyclicTest::isAcyclic($graph),
|
||||
'Graph is cyclic'
|
||||
);
|
||||
}
|
||||
|
||||
public function testIsAcyclicTrue()
|
||||
{
|
||||
$graph = new Structures_Graph();
|
||||
$node1 = new Structures_Graph_Node();
|
||||
$graph->addNode($node1);
|
||||
|
||||
$node2 = new Structures_Graph_Node();
|
||||
$graph->addNode($node2);
|
||||
$node1->connectTo($node2);
|
||||
|
||||
$node3 = new Structures_Graph_Node();
|
||||
$graph->addNode($node3);
|
||||
$node2->connectTo($node3);
|
||||
|
||||
$this->assertTrue(
|
||||
Structures_Graph_Manipulator_AcyclicTest::isAcyclic($graph),
|
||||
'Graph is acyclic'
|
||||
);
|
||||
}
|
||||
}
|
||||
?>
|
20
vendor/pear/structures_graph/tests/AllTests.php
vendored
Normal file
20
vendor/pear/structures_graph/tests/AllTests.php
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
require_once dirname(__FILE__) . '/helper.inc';
|
||||
|
||||
class Structures_Graph_AllTests
|
||||
{
|
||||
public static function main()
|
||||
{
|
||||
PHPUnit_TextUI_TestRunner::run(self::suite());
|
||||
}
|
||||
|
||||
public static function suite()
|
||||
{
|
||||
$suite = new PHPUnit_Framework_TestSuite('Structures_Graph Tests');
|
||||
|
||||
$dir = new GlobIterator(dirname(__FILE__) . '/*Test.php');
|
||||
$suite->addTestFiles($dir);
|
||||
|
||||
return $suite;
|
||||
}
|
||||
}
|
170
vendor/pear/structures_graph/tests/BasicGraphTest.php
vendored
Normal file
170
vendor/pear/structures_graph/tests/BasicGraphTest.php
vendored
Normal file
@@ -0,0 +1,170 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */
|
||||
// +-----------------------------------------------------------------------------+
|
||||
// | Copyright (c) 2003 S<>rgio Gon<6F>alves Carvalho |
|
||||
// +-----------------------------------------------------------------------------+
|
||||
// | This file is part of Structures_Graph. |
|
||||
// | |
|
||||
// | Structures_Graph is free software; you can redistribute it and/or modify |
|
||||
// | it under the terms of the GNU Lesser General Public License as published by |
|
||||
// | the Free Software Foundation; either version 2.1 of the License, or |
|
||||
// | (at your option) any later version. |
|
||||
// | |
|
||||
// | Structures_Graph is distributed in the hope that it will be useful, |
|
||||
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||
// | GNU Lesser General Public License for more details. |
|
||||
// | |
|
||||
// | You should have received a copy of the GNU Lesser General Public License |
|
||||
// | along with Structures_Graph; if not, write to the Free Software |
|
||||
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
|
||||
// | 02111-1307 USA |
|
||||
// +-----------------------------------------------------------------------------+
|
||||
// | Author: S<>rgio Carvalho <sergio.carvalho@portugalmail.com> |
|
||||
// +-----------------------------------------------------------------------------+
|
||||
//
|
||||
|
||||
require_once dirname(__FILE__) . '/helper.inc';
|
||||
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
class BasicGraph extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
var $_graph = null;
|
||||
|
||||
function test_create_graph() {
|
||||
$this->_graph = new Structures_Graph();
|
||||
$this->assertTrue(is_a($this->_graph, 'Structures_Graph'));
|
||||
}
|
||||
|
||||
function test_add_node() {
|
||||
$this->_graph = new Structures_Graph();
|
||||
$data = 1;
|
||||
$node = new Structures_Graph_Node($data);
|
||||
$this->_graph->addNode($node);
|
||||
$node = new Structures_Graph_Node($data);
|
||||
$this->_graph->addNode($node);
|
||||
$node = new Structures_Graph_Node($data);
|
||||
$this->_graph->addNode($node);
|
||||
}
|
||||
|
||||
function test_connect_node() {
|
||||
$this->_graph = new Structures_Graph();
|
||||
$data = 1;
|
||||
$node1 = new Structures_Graph_Node($data);
|
||||
$node2 = new Structures_Graph_Node($data);
|
||||
$this->_graph->addNode($node1);
|
||||
$this->_graph->addNode($node2);
|
||||
$node1->connectTo($node2);
|
||||
|
||||
$node =& $this->_graph->getNodes();
|
||||
$node =& $node[0];
|
||||
$node = $node->getNeighbours();
|
||||
$node =& $node[0];
|
||||
/*
|
||||
ZE1 == and === operators fail on $node,$node2 because of the recursion introduced
|
||||
by the _graph field in the Node object. So, we'll use the stupid method for reference
|
||||
testing
|
||||
*/
|
||||
$node = true;
|
||||
$this->assertTrue($node2);
|
||||
$node = false;
|
||||
$this->assertFalse($node2);
|
||||
}
|
||||
|
||||
function test_data_references() {
|
||||
$this->_graph = new Structures_Graph();
|
||||
$data = 1;
|
||||
$node = new Structures_Graph_Node();
|
||||
$node->setData($data);
|
||||
$this->_graph->addNode($node);
|
||||
$data = 2;
|
||||
$dataInNode =& $this->_graph->getNodes();
|
||||
$dataInNode =& $dataInNode[0];
|
||||
$dataInNode =& $dataInNode->getData();
|
||||
$this->assertEquals($data, $dataInNode);
|
||||
}
|
||||
|
||||
function test_metadata_references() {
|
||||
$this->_graph = new Structures_Graph();
|
||||
$data = 1;
|
||||
$node = new Structures_Graph_Node();
|
||||
$node->setMetadata('5', $data);
|
||||
$data = 2;
|
||||
$dataInNode =& $node->getMetadata('5');
|
||||
$this->assertEquals($data, $dataInNode);
|
||||
}
|
||||
|
||||
function test_metadata_key_exists() {
|
||||
$this->_graph = new Structures_Graph();
|
||||
$data = 1;
|
||||
$node = new Structures_Graph_Node();
|
||||
$node->setMetadata('5', $data);
|
||||
$this->assertTrue($node->metadataKeyExists('5'));
|
||||
$this->assertFalse($node->metadataKeyExists('1'));
|
||||
}
|
||||
|
||||
function test_directed_degree() {
|
||||
$this->_graph = new Structures_Graph(true);
|
||||
$node = array();
|
||||
$node[] = new Structures_Graph_Node();
|
||||
$node[] = new Structures_Graph_Node();
|
||||
$node[] = new Structures_Graph_Node();
|
||||
$this->_graph->addNode($node[0]);
|
||||
$this->_graph->addNode($node[1]);
|
||||
$this->_graph->addNode($node[2]);
|
||||
$this->assertEquals(0, $node[0]->inDegree(), 'inDegree test failed for node 0 with 0 arcs');
|
||||
$this->assertEquals(0, $node[1]->inDegree(), 'inDegree test failed for node 1 with 0 arcs');
|
||||
$this->assertEquals(0, $node[2]->inDegree(), 'inDegree test failed for node 2 with 0 arcs');
|
||||
$this->assertEquals(0, $node[0]->outDegree(), 'outDegree test failed for node 0 with 0 arcs');
|
||||
$this->assertEquals(0, $node[1]->outDegree(), 'outDegree test failed for node 1 with 0 arcs');
|
||||
$this->assertEquals(0, $node[2]->outDegree(), 'outDegree test failed for node 2 with 0 arcs');
|
||||
$node[0]->connectTo($node[1]);
|
||||
$this->assertEquals(0, $node[0]->inDegree(), 'inDegree test failed for node 0 with 1 arc');
|
||||
$this->assertEquals(1, $node[1]->inDegree(), 'inDegree test failed for node 1 with 1 arc');
|
||||
$this->assertEquals(0, $node[2]->inDegree(), 'inDegree test failed for node 2 with 1 arc');
|
||||
$this->assertEquals(1, $node[0]->outDegree(), 'outDegree test failed for node 0 with 1 arc');
|
||||
$this->assertEquals(0, $node[1]->outDegree(), 'outDegree test failed for node 1 with 1 arc');
|
||||
$this->assertEquals(0, $node[2]->outDegree(), 'outDegree test failed for node 2 with 1 arc');
|
||||
$node[0]->connectTo($node[2]);
|
||||
$this->assertEquals(0, $node[0]->inDegree(), 'inDegree test failed for node 0 with 2 arcs');
|
||||
$this->assertEquals(1, $node[1]->inDegree(), 'inDegree test failed for node 1 with 2 arcs');
|
||||
$this->assertEquals(1, $node[2]->inDegree(), 'inDegree test failed for node 2 with 2 arcs');
|
||||
$this->assertEquals(2, $node[0]->outDegree(), 'outDegree test failed for node 0 with 2 arcs');
|
||||
$this->assertEquals(0, $node[1]->outDegree(), 'outDegree test failed for node 1 with 2 arcs');
|
||||
$this->assertEquals(0, $node[2]->outDegree(), 'outDegree test failed for node 2 with 2 arcs');
|
||||
}
|
||||
|
||||
function test_undirected_degree() {
|
||||
$this->_graph = new Structures_Graph(false);
|
||||
$node = array();
|
||||
$node[] = new Structures_Graph_Node();
|
||||
$node[] = new Structures_Graph_Node();
|
||||
$node[] = new Structures_Graph_Node();
|
||||
$this->_graph->addNode($node[0]);
|
||||
$this->_graph->addNode($node[1]);
|
||||
$this->_graph->addNode($node[2]);
|
||||
$this->assertEquals(0, $node[0]->inDegree(), 'inDegree test failed for node 0 with 0 arcs');
|
||||
$this->assertEquals(0, $node[1]->inDegree(), 'inDegree test failed for node 1 with 0 arcs');
|
||||
$this->assertEquals(0, $node[2]->inDegree(), 'inDegree test failed for node 2 with 0 arcs');
|
||||
$this->assertEquals(0, $node[0]->outDegree(), 'outDegree test failed for node 0 with 0 arcs');
|
||||
$this->assertEquals(0, $node[1]->outDegree(), 'outDegree test failed for node 1 with 0 arcs');
|
||||
$this->assertEquals(0, $node[2]->outDegree(), 'outDegree test failed for node 2 with 0 arcs');
|
||||
$node[0]->connectTo($node[1]);
|
||||
$this->assertEquals(1, $node[0]->inDegree(), 'inDegree test failed for node 0 with 1 arc');
|
||||
$this->assertEquals(1, $node[1]->inDegree(), 'inDegree test failed for node 1 with 1 arc');
|
||||
$this->assertEquals(0, $node[2]->inDegree(), 'inDegree test failed for node 2 with 1 arc');
|
||||
$this->assertEquals(1, $node[0]->outDegree(), 'outDegree test failed for node 0 with 1 arc');
|
||||
$this->assertEquals(1, $node[1]->outDegree(), 'outDegree test failed for node 1 with 1 arc');
|
||||
$this->assertEquals(0, $node[2]->outDegree(), 'outDegree test failed for node 2 with 1 arc');
|
||||
$node[0]->connectTo($node[2]);
|
||||
$this->assertEquals(2, $node[0]->inDegree(), 'inDegree test failed for node 0 with 2 arcs');
|
||||
$this->assertEquals(1, $node[1]->inDegree(), 'inDegree test failed for node 1 with 2 arcs');
|
||||
$this->assertEquals(1, $node[2]->inDegree(), 'inDegree test failed for node 2 with 2 arcs');
|
||||
$this->assertEquals(2, $node[0]->outDegree(), 'outDegree test failed for node 0 with 2 arcs');
|
||||
$this->assertEquals(1, $node[1]->outDegree(), 'outDegree test failed for node 1 with 2 arcs');
|
||||
$this->assertEquals(1, $node[2]->outDegree(), 'outDegree test failed for node 2 with 2 arcs');
|
||||
}
|
||||
}
|
||||
?>
|
59
vendor/pear/structures_graph/tests/TopologicalSorterTest.php
vendored
Normal file
59
vendor/pear/structures_graph/tests/TopologicalSorterTest.php
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
require_once dirname(__FILE__) . '/helper.inc';
|
||||
require_once 'Structures/Graph/Manipulator/TopologicalSorter.php';
|
||||
|
||||
class TopologicalSorterTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
public function testSort()
|
||||
{
|
||||
$graph = new Structures_Graph();
|
||||
|
||||
$name1 = 'node1';
|
||||
$node1 = new Structures_Graph_Node();
|
||||
$node1->setData($name1);
|
||||
$graph->addNode($node1);
|
||||
|
||||
$name11 = 'node11';
|
||||
$node11 = new Structures_Graph_Node();
|
||||
$node11->setData($name11);
|
||||
$graph->addNode($node11);
|
||||
$node1->connectTo($node11);
|
||||
|
||||
$name12 = 'node12';
|
||||
$node12 = new Structures_Graph_Node();
|
||||
$node12->setData($name12);
|
||||
$graph->addNode($node12);
|
||||
$node1->connectTo($node12);
|
||||
|
||||
$name121 = 'node121';
|
||||
$node121 = new Structures_Graph_Node();
|
||||
$node121->setData($name121);
|
||||
$graph->addNode($node121);
|
||||
$node12->connectTo($node121);
|
||||
|
||||
$name2 = 'node2';
|
||||
$node2 = new Structures_Graph_Node();
|
||||
$node2->setData($name2);
|
||||
$graph->addNode($node2);
|
||||
|
||||
$name21 = 'node21';
|
||||
$node21 = new Structures_Graph_Node();
|
||||
$node21->setData($name21);
|
||||
$graph->addNode($node21);
|
||||
$node2->connectTo($node21);
|
||||
|
||||
$nodes = Structures_Graph_Manipulator_TopologicalSorter::sort($graph);
|
||||
$this->assertCount(2, $nodes[0]);
|
||||
$this->assertEquals('node1', $nodes[0][0]->getData());
|
||||
$this->assertEquals('node2', $nodes[0][1]->getData());
|
||||
|
||||
$this->assertCount(3, $nodes[1]);
|
||||
$this->assertEquals('node11', $nodes[1][0]->getData());
|
||||
$this->assertEquals('node12', $nodes[1][1]->getData());
|
||||
$this->assertEquals('node21', $nodes[1][2]->getData());
|
||||
|
||||
$this->assertCount(1, $nodes[2]);
|
||||
$this->assertEquals('node121', $nodes[2][0]->getData());
|
||||
}
|
||||
}
|
||||
?>
|
10
vendor/pear/structures_graph/tests/helper.inc
vendored
Normal file
10
vendor/pear/structures_graph/tests/helper.inc
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
if ('@php_dir@' == '@'.'php_dir'.'@') {
|
||||
// This package hasn't been installed.
|
||||
// Adjust path to ensure includes find files in working directory.
|
||||
set_include_path(dirname(dirname(__FILE__))
|
||||
. PATH_SEPARATOR . dirname(__FILE__)
|
||||
. PATH_SEPARATOR . get_include_path());
|
||||
}
|
||||
|
||||
require_once 'Structures/Graph.php';
|
11
vendor/pear/structures_graph/tests/phpunit.xml
vendored
Normal file
11
vendor/pear/structures_graph/tests/phpunit.xml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0"?>
|
||||
<phpunit>
|
||||
<php>
|
||||
<includePath>../</includePath>
|
||||
</php>
|
||||
<filter>
|
||||
<whitelist addUncoveredFilesFromWhitelist="true">
|
||||
<directory suffix=".php">../Structures</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
</phpunit>
|
Reference in New Issue
Block a user