#include "CoreSuite.h"
#include "TestPathTest.h"
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestPathTest,
coreSuiteName() );
TestPathTest::TestPathTest()
{
}
TestPathTest::~TestPathTest()
{
}
void
TestPathTest::setUp()
{
m_path = new CPPUNIT_NS::TestPath();
m_test1 = new CPPUNIT_NS::TestCase( "test1" );
m_test2 = new CPPUNIT_NS::TestCase( "test2" );
m_test3 = new CPPUNIT_NS::TestCase( "test3" );
m_test4 = new CPPUNIT_NS::TestCase( "test4" );
m_suite1 = new CPPUNIT_NS::TestSuite( "All Tests" );
m_suite2 = new CPPUNIT_NS::TestSuite( "Custom" );
m_testSuite2a = new CPPUNIT_NS::TestCase( "MyTest::testDefaultConstructor" );
m_testSuite2b = new CPPUNIT_NS::TestCase( "MyTest::testConstructor" );
m_suite2->addTest( m_testSuite2a );
m_suite2->addTest( m_testSuite2b );
m_suite1->addTest( m_suite2 );
}
void
TestPathTest::tearDown()
{
delete m_suite1;
delete m_path;
delete m_test4;
delete m_test3;
delete m_test2;
delete m_test1;
}
void
TestPathTest::testDefaultConstructor()
{
CPPUNIT_ASSERT_EQUAL( 0, m_path->getTestCount() );
CPPUNIT_ASSERT( !m_path->isValid() );
}
void
TestPathTest::testAddTest()
{
m_path->add( m_test1 );
CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() );
CPPUNIT_ASSERT( m_path->isValid() );
CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) );
}
void
TestPathTest::testGetTestAtThrow1()
{
m_path->getTestAt( 0 );
}
void
TestPathTest::testGetTestAtThrow2()
{
m_path->add( m_test1 );
m_path->getTestAt( 1 );
}
void
TestPathTest::testGetChildTest()
{
m_path->add( m_test1 );
CPPUNIT_ASSERT( m_test1 == m_path->getChildTest() );
}
void
TestPathTest::testGetChildTestManyTests()
{
m_path->add( m_test1 );
m_path->add( m_test2 );
m_path->add( m_test3 );
CPPUNIT_ASSERT( m_test3 == m_path->getChildTest() );
}
void
TestPathTest::testGetChildTestThrowIfNotValid()
{
m_path->getChildTest();
}
void
TestPathTest::testAddPath()
{
CPPUNIT_NS::TestPath path;
path.add( m_test2 );
path.add( m_test3 );
m_path->add( m_test1 );
m_path->add( path );
CPPUNIT_ASSERT_EQUAL( 3, m_path->getTestCount() );
CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) );
CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) );
CPPUNIT_ASSERT( m_test3 == m_path->getTestAt(2) );
}
void
TestPathTest::testAddInvalidPath()
{
CPPUNIT_NS::TestPath path;
m_path->add( path );
CPPUNIT_ASSERT( !m_path->isValid() );
}
void
TestPathTest::testRemoveTests()
{
m_path->add( m_test1 );
m_path->add( m_test2 );
m_path->removeTests();
CPPUNIT_ASSERT( !m_path->isValid() );
}
void
TestPathTest::testRemoveTest()
{
m_path->add( m_test1 );
m_path->add( m_test2 );
m_path->removeTest( 0 );
CPPUNIT_ASSERT_EQUAL( 1, m_path->getTestCount() );
CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(0) );
}
void
TestPathTest::testRemoveTestThrow1()
{
m_path->removeTest( -1 );
}
void
TestPathTest::testRemoveTestThrow2()
{
m_path->add( m_test1 );
m_path->removeTest( 1 );
}
void
TestPathTest::testUp()
{
m_path->add( m_test1 );
m_path->up();
CPPUNIT_ASSERT( !m_path->isValid() );
}
void
TestPathTest::testUpThrow()
{
m_path->up();
}
void
TestPathTest::testInsert()
{
m_path->add( m_test1 );
m_path->insert( m_test2, 0 );
CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() );
CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(0) );
CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(1) );
}
void
TestPathTest::testInsertAtEnd()
{
m_path->add( m_test1 );
m_path->insert( m_test2, 1 );
CPPUNIT_ASSERT_EQUAL( 2, m_path->getTestCount() );
CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) );
CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) );
}
void
TestPathTest::testInsertThrow1()
{
m_path->insert( m_test1, -1 );
}
void
TestPathTest::testInsertThrow2()
{
m_path->add( m_test1 );
m_path->insert( m_test1, 2 );
}
void
TestPathTest::testInsertPath()
{
CPPUNIT_NS::TestPath path;
path.add( m_test2 );
path.add( m_test3 );
m_path->add( m_test1 );
m_path->add( m_test4 );
m_path->insert( path, 1 );
CPPUNIT_ASSERT_EQUAL( 4, m_path->getTestCount() );
CPPUNIT_ASSERT( m_test1 == m_path->getTestAt(0) );
CPPUNIT_ASSERT( m_test2 == m_path->getTestAt(1) );
CPPUNIT_ASSERT( m_test3 == m_path->getTestAt(2) );
CPPUNIT_ASSERT( m_test4 == m_path->getTestAt(3) );
}
void
TestPathTest::testInsertPathThrow()
{
CPPUNIT_NS::TestPath path;
path.add( m_test2 );
m_path->insert( path, 1 );
}
void
TestPathTest::testInsertPathDontThrowIfInvalid()
{
CPPUNIT_NS::TestPath path;
m_path->insert( path, 1 );
}
void
TestPathTest::testRootConstructor()
{
CPPUNIT_NS::TestPath path( m_test1 );
CPPUNIT_ASSERT( path.isValid() );
CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) );
}
void
TestPathTest::testPathSliceConstructorCopyUntilEnd()
{
m_path->add( m_test1 );
m_path->add( m_test2 );
m_path->add( m_test3 );
CPPUNIT_NS::TestPath path( *m_path, 1 );
CPPUNIT_ASSERT_EQUAL( 2, path.getTestCount() );
CPPUNIT_ASSERT( m_test2 == path.getTestAt(0) );
CPPUNIT_ASSERT( m_test3 == path.getTestAt(1) );
}
void
TestPathTest::testPathSliceConstructorCopySpecifiedCount()
{
m_path->add( m_test1 );
m_path->add( m_test2 );
m_path->add( m_test3 );
CPPUNIT_NS::TestPath path( *m_path, 0, 1 );
CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) );
}
void
TestPathTest::testPathSliceConstructorCopyNone()
{
m_path->add( m_test1 );
CPPUNIT_NS::TestPath path( *m_path, 0, 0 );
CPPUNIT_ASSERT_EQUAL( 0, path.getTestCount() );
}
void
TestPathTest::testPathSliceConstructorNegativeIndex()
{
m_path->add( m_test1 );
m_path->add( m_test2 );
CPPUNIT_NS::TestPath path( *m_path, -1, 2 );
CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) );
}
void
TestPathTest::testPathSliceConstructorAfterEndIndex()
{
m_path->add( m_test1 );
m_path->add( m_test2 );
CPPUNIT_NS::TestPath path( *m_path, 2, 5 );
CPPUNIT_ASSERT_EQUAL( 0, path.getTestCount() );
}
void
TestPathTest::testPathSliceConstructorNegativeIndexUntilEnd()
{
m_path->add( m_test1 );
m_path->add( m_test2 );
CPPUNIT_NS::TestPath path( *m_path, -1 );
CPPUNIT_ASSERT_EQUAL( 2, path.getTestCount() );
CPPUNIT_ASSERT( m_test1 == path.getTestAt(0) );
CPPUNIT_ASSERT( m_test2 == path.getTestAt(1) );
}
void
TestPathTest::testPathSliceConstructorNegativeIndexNone()
{
m_path->add( m_test1 );
m_path->add( m_test2 );
CPPUNIT_NS::TestPath path( *m_path, -2, 1 );
CPPUNIT_ASSERT_EQUAL( 0, path.getTestCount() );
}
void
TestPathTest::testToStringNoTest()
{
std::string expected = "/";
std::string actual = m_path->toString();
CPPUNIT_ASSERT_EQUAL( expected, actual );
}
void
TestPathTest::testToStringOneTest()
{
m_path->add( m_test1 );
std::string expected = "/test1";
std::string actual = m_path->toString();
CPPUNIT_ASSERT_EQUAL( expected, actual );
}
void
TestPathTest::testToStringHierarchy()
{
m_path->add( m_suite1 );
m_path->add( m_suite2 );
m_path->add( m_suite2->getChildTestAt(0) );
std::string expected = "/All Tests/Custom/MyTest::testDefaultConstructor";
std::string actual = m_path->toString();
CPPUNIT_ASSERT_EQUAL( expected, actual );
}
void
TestPathTest::testPathStringConstructorRoot()
{
CPPUNIT_NS::TestPath path( m_suite1, "/All Tests" );
CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) );
}
void
TestPathTest::testPathStringConstructorEmptyIsRoot()
{
CPPUNIT_NS::TestPath path( m_suite1, "" );
CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) );
}
void
TestPathTest::testPathStringConstructorHierarchy()
{
CPPUNIT_NS::TestPath path( m_suite1, "/All Tests/Custom/MyTest::testDefaultConstructor" );
CPPUNIT_ASSERT_EQUAL( 3, path.getTestCount() );
CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) );
CPPUNIT_ASSERT( m_suite2 == path.getTestAt(1) );
CPPUNIT_ASSERT( m_testSuite2a == path.getTestAt(2) );
}
void
TestPathTest::testPathStringConstructorBadRootThrow()
{
CPPUNIT_NS::TestPath path( m_suite1, "/Custom" );
}
void
TestPathTest::testPathStringConstructorRelativeRoot()
{
CPPUNIT_NS::TestPath path( m_suite1, "All Tests" );
CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
CPPUNIT_ASSERT( m_suite1 == path.getTestAt(0) );
}
void
TestPathTest::testPathStringConstructorRelativeRoot2()
{
CPPUNIT_NS::TestPath path( m_suite1, "Custom" );
CPPUNIT_ASSERT_EQUAL( 1, path.getTestCount() );
CPPUNIT_ASSERT( m_suite2 == path.getTestAt(0) );
}
void
TestPathTest::testPathStringConstructorThrow1()
{
CPPUNIT_NS::TestPath path( m_suite1, "/" );
}
void
TestPathTest::testPathStringConstructorRelativeHierarchy()
{
CPPUNIT_NS::TestPath path( m_suite1, "Custom/MyTest::testConstructor" );
CPPUNIT_ASSERT_EQUAL( 2, path.getTestCount() );
CPPUNIT_ASSERT( m_suite2 == path.getTestAt(0) );
CPPUNIT_ASSERT( m_testSuite2b == path.getTestAt(1) );
}
void
TestPathTest::testPathStringConstructorBadRelativeHierarchyThrow()
{
CPPUNIT_NS::TestPath path( m_suite1, "Custom/MyBadTest::testConstructor" );
}