491 lines
9.1 KiB
C++
491 lines
9.1 KiB
C++
#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" );
|
|
}
|