#include "TreeBaseTest.h"

CPPUNIT_TEST_SUITE_NAMED_REGISTRATION ( TreeBaseTest, "bits" );
CPPUNIT_TEST_SUITE_REGISTRATION ( TreeBaseTest );

void TreeBaseTest::setUp ( ) {
}

void TreeBaseTest::tearDown ( ) {
}

void TreeBaseTest::testRegexps ( ) {
	RegExpIteration iter ( std::shared_ptr < RegExpElement > ( new RegExpEmpty ( ) ) );

	CPPUNIT_ASSERT ( iter.getChild ( )->getParent ( ) == & iter );

	RegExpIteration iter2 ( iter );
	RegExpIteration iter3 ( iter2 );

	CPPUNIT_ASSERT ( iter3.getChild ( )->getParent ( ) == & iter3 );

	iter3 = iter;
	RegExpIteration iter4 ( std::shared_ptr < RegExpElement > ( new RegExpEpsilon ( ) ) );
	iter3 = iter4;

	CPPUNIT_ASSERT ( iter3.getChild ( )->getParent ( ) == & iter3 );

	RegExpSymbol s ( 'x' );
	const RegExpSymbol & sr = s;
	sr.getElements ( );
}

void TreeBaseTest::testRankedTree ( ) {
	RankedTreeNode node ( 'a', 1, { RankedTreeNode ( 'b', 1, { RankedTreeNode ( 'c', 0, { } ) } ) } );
	const RankedTreeNode & cnode = node;

	for ( const RankedTreeNode & child : cnode.getChildren ( ) )
		CPPUNIT_ASSERT ( child.getParent ( ) == & cnode );
}

void TreeBaseTest::testUnrankedTree ( ) {
}