<?php
 
/**
 
* In front of use of this test necessary to create a database in mySQL.
 
* SQL queries for creation of tables can be taken from file base.sql in root
 
* directory. After it need specified the linking up parameters to database
 
* beneath in this test or in file config.ini.
 
* 
 
* NOTE: For correct job of tests the database should be empty. Use SQL-queries
 
*       only from a file base.sql and do not fill in base the data from a file
 
*       tree.sql.
 
*/
 
 
$user = 'root';
 
$pass = '';
 
$host = 'localhost';
 
$name = 'myXTree';
 
$prefix = 'xt_';
 
 
$root = $_SERVER['DOCUMENT_ROOT'];
 
$config['PATH']['pear'] = $root.'/PEAR';
 
$config['PATH']['myxml'] = $root.'/myXML';
 
$config['PATH']['myxtree'] = $root.'/myXTree';
 
 
function getmicrotime() { 
 
   list($usec, $sec) = explode(" ", microtime()); 
 
   return ((float)$usec + (float)$sec); 
 
}
 
$time_start = getmicrotime();
 
 
if (file_exists('config.ini')) {
 
    $config = parse_ini_file('config.ini', true);
 
    extract($config['DB'], EXTR_OVERWRITE);
 
}
 
 
$dsn = "mysql://$user:$pass@$host/$name";
 
 
if (substr(PHP_OS, 0, 3) == 'WIN') {
 
    $searchPath = implode(';', $config['PATH']).';';
 
} else {
 
    $searchPath = implode(':', $config['PATH']).':';
 
}
 
// Set the search path.
 
ini_set('include_path', $searchPath);
 
 
require_once('PHPUnit.php');
 
require_once('tests/xtree.php');
 
require_once('tests/xpath.php');
 
require_once('tests/predicate.php');
 
require_once('myDOM/myDOM.php');
 
require_once('DB.php');
 
 
function handleXTreeError(&$error)
 
{
 
    raiseError($error->getMessage().', userinfo: '.$error->getUserInfo(), E_USER_WARNING);
 
}
 
 
$insertData = 'tests/insert.xml';
 
$updateData = 'tests/update.xml';
 
$relationsData = 'tests/relations.xml';
 
 
$dom = new Document;
 
$dom2 = new Document;
 
$dom3 = new Document;
 
 
$dom->parseFile($insertData);
 
 
$dom2->parseFile($updateData);
 
 
$dom3->parseFile($relationsData);
 
 
$db = DB::connect($dsn);
 
PEAR::isError($db) and
 
    raiseError($db->getMessage());
 
    
 
$xtree =& myXTree::create($db, $prefix);
 
$xtree->setErrorHandling(PEAR_ERROR_CALLBACK, 'handleXTreeError');
 
 
print '<br><br>Starting test of myXTree functions';flush();
 
$time_start = getmicrotime();
 
$suite = new PHPUnit_TestSuite("XTreeTest");
 
$result = PHPUnit::run($suite);
 
print $result->toHTML();flush();
 
$time = getmicrotime() - $time_start;
 
print "Time: $time s.";flush();
 
 
$xtree->insert(&$dom->documentElement, $parent = null, $deep = true);
 
 
print '<br><br>Starting test of XPath expressions by selfjoin method';flush();
 
$time_start = getmicrotime();
 
$suite = new PHPUnit_TestSuite("XPathTest");
 
$result = PHPUnit::run($suite);
 
print $result->toHTML();flush();
 
$time = getmicrotime() - $time_start;
 
print "Time: $time s.";flush();
 
 
print '<br><br>Starting test of XPath expressions by recursive method';flush();
 
$time_start = getmicrotime();
 
$xtree->recursive();
 
$result = PHPUnit::run($suite);
 
print $result->toHTML();flush();
 
$time = getmicrotime() - $time_start;
 
print "Time: $time s.";flush();
 
 
print '<br><br>Starting test of predicate in XPath expressions by selfjoin method';flush();
 
$time_start = getmicrotime();
 
$suite = new PHPUnit_TestSuite("PredicateTest");
 
$xtree->recursive(false);
 
$result = PHPUnit::run($suite);
 
print $result->toHTML();flush();
 
$time = getmicrotime() - $time_start;
 
print "Time: $time s.";flush();
 
 
print '<br><br>Starting test of predicate in XPath expressions by recursive method';flush();
 
$time_start = getmicrotime();
 
$suite = new PHPUnit_TestSuite("PredicateTest");
 
$xtree->recursive();
 
$result = PHPUnit::run($suite);
 
print $result->toHTML();flush();
 
$time = getmicrotime() - $time_start;
 
print "Time: $time s.";flush();
 
 
$xtree->delete(&$dom->documentElement);
 
 
?>
 
 |