blob: 4e767904d10140797d4c1f8d631424ccff2611d8 [file] [log] [blame]
<?php
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @version //autogentag//
* @filesource
* @package Tree
* @subpackage Tests
*/
require_once 'tree.php';
/**
* @package Tree
* @subpackage Tests
*/
class ezcTreeVisitorTest extends ezcTestCase
{
public function setUp()
{
$this->tree = ezcTreeMemory::create( new ezcTreeMemoryDataStore() );
}
protected function addTestData( $tree )
{
$primates = array(
'Hominoidea' => array(
'Hylobatidae' => array(
'Hylobates' => array(
'Lar Gibbon',
'Agile Gibbon',
'Müller\'s Bornean Gibbon',
'Silvery Gibbon',
'Pileated Gibbon',
'Kloss\'s Gibbon',
),
'Hoolock' => array(
'Western Hoolock Gibbon',
'Eastern Hoolock Gibbon',
),
'Symphalangus' => array(),
'Nomascus' => array(
'Black Crested Gibbon',
'Eastern Black Crested Gibbon',
'White-cheecked Crested Gibbon',
'Yellow-cheecked Gibbon',
),
),
'Hominidae' => array(
'Pongo' => array(
'Bornean Orangutan',
'Sumatran Orangutan',
),
'Gorilla' => array(
'Western Gorilla' => array(
'Western Lowland Gorilla',
'Cross River Gorilla',
),
'Eastern Gorilla' => array(
'Mountain Gorilla',
'Eastern Lowland Gorilla',
),
),
'Homo' => array(
'Homo Sapiens' => array(
'Homo Sapiens Sapiens',
'Homo Superior'
),
),
'Pan' => array(
'Common Chimpanzee',
'Bonobo',
),
),
),
);
$root = $tree->createNode( 'Hominoidea', 'Hominoidea' );
$tree->setRootNode( $root );
$this->addChildren( $root, $primates['Hominoidea'] );
}
private function addChildren( ezcTreeNode $node, array $children )
{
foreach( $children as $name => $child )
{
if ( is_array( $child ) )
{
$newNode = $node->tree->createNode( $name, $name );
$node->addChild( $newNode );
$this->addChildren( $newNode, $child );
}
else
{
$newNode = $node->tree->createNode( $child, $child );
$node->addChild( $newNode );
}
}
}
public function testVisitor1()
{
$tree = ezcTreeMemory::create( new ezcTreeMemoryDataStore() );
$this->addTestData( $tree );
$visitor = new ezcTreeVisitorGraphViz;
$tree->accept( $visitor );
self::assertSame( 'c422c6271ff3c9a213156e660a1ba8b2', md5( (string) $visitor ) );
}
public function testVisitor2()
{
$tree = ezcTreeMemory::create( new ezcTreeMemoryDataStore() );
$this->addTestData( $tree );
$expected = file_get_contents( dirname( __FILE__) . '/files/compare/visitor-visitor2.txt' );
$visitor = new ezcTreeVisitorPlainText;
$tree->accept( $visitor );
self::assertSame( $expected, (string) $visitor );
$visitor = new ezcTreeVisitorPlainText( ezcTreeVisitorPlainText::SYMBOL_UTF8 );
$tree->accept( $visitor );
self::assertSame( $expected, (string) $visitor );
}
public function testVisitor3()
{
$tree = ezcTreeMemory::create( new ezcTreeMemoryDataStore() );
$this->addTestData( $tree );
$visitor = new ezcTreeVisitorPlainText( ezcTreeVisitorPlainText::SYMBOL_ASCII );
$tree->accept( $visitor );
$expected = file_get_contents( dirname( __FILE__) . '/files/compare/visitor-visitor3.txt' );
self::assertSame( $expected, (string) $visitor );
}
public function testVisitor4()
{
$tree = ezcTreeMemory::create( new ezcTreeMemoryDataStore() );
$visitor = new ezcTreeVisitorPlainText( ezcTreeVisitorPlainText::SYMBOL_ASCII );
$tree->accept( $visitor );
$expected = "\n";
self::assertSame( $expected, (string) $visitor );
}
public static function suite()
{
return new PHPUnit_Framework_TestSuite( "ezcTreeVisitorTest" );
}
}
?>