#include "srd-preproc-cmd-common.hh" class SRDPreprocCmdMiscTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE( SRDPreprocCmdMiscTest ); CPPUNIT_TEST( testIgnore ); CPPUNIT_TEST( testUnwrapMissingArg ); CPPUNIT_TEST( testUnwrapBadArg ); CPPUNIT_TEST( testUnwrapEmptyList ); CPPUNIT_TEST( testUnwrapList ); CPPUNIT_TEST( testUnwrapExtraArgs ); CPPUNIT_TEST( testLengthMissingArg ); CPPUNIT_TEST( testLengthExtraArgs ); CPPUNIT_TEST( testLengthBadArg ); CPPUNIT_TEST( testLengthList ); CPPUNIT_TEST( testLengthWord ); CPPUNIT_TEST( testLengthString ); CPPUNIT_TEST( testLengthBinary ); CPPUNIT_TEST_SUITE_END( ); public: void testIgnore( ); void testUnwrapMissingArg( ); void testUnwrapBadArg( ); void testUnwrapEmptyList( ); void testUnwrapList( ); void testUnwrapExtraArgs( ); void testLengthMissingArg( ); void testLengthExtraArgs( ); void testLengthBadArg( ); void testLengthList( ); void testLengthWord( ); void testLengthString( ); void testLengthBinary( ); }; CPPUNIT_TEST_SUITE_REGISTRATION( SRDPreprocCmdMiscTest ); /*----------------------------------------------------------------------------*/ void SRDPreprocCmdMiscTest::testIgnore( ) { T_SRDErrors errors; T_SRDList output( process( "( -ignore $does-not-exist ( -fail ) bleh )" , errors ) ); CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) ); CPPUNIT_ASSERT( check( "" , output ) ); } /*----------------------------------------------------------------------------*/ void SRDPreprocCmdMiscTest::testUnwrapMissingArg( ) { T_SRDErrors errors; T_SRDList output( process( "( -unwrap )" , errors ) ); CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) ); M_CKERR_( 0 , "not enough arguments" , 1 , 3 ); M_CKERR_( 1 , "previous error cause" , 1 , 11 ); CPPUNIT_ASSERT( check( "" , output ) ); } void SRDPreprocCmdMiscTest::testUnwrapBadArg( ) { T_SRDErrors errors; T_SRDList output( process( "( -unwrap a )" , errors ) ); CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) ); M_CKERR_( 0 , "list expected" , 1 , 3 ); M_CKERR_( 1 , "previous error cause" , 1 , 11 ); CPPUNIT_ASSERT( check( "" , output ) ); } void SRDPreprocCmdMiscTest::testUnwrapEmptyList( ) { T_SRDErrors errors; T_SRDList output( process( "( -unwrap ( ) )" , errors ) ); CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) ); CPPUNIT_ASSERT( check( "" , output ) ); } void SRDPreprocCmdMiscTest::testUnwrapList( ) { T_SRDErrors errors; T_SRDList output( process( "( -unwrap ( a b c ) )" , errors ) ); CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) ); CPPUNIT_ASSERT( check( "a b c" , output ) ); } void SRDPreprocCmdMiscTest::testUnwrapExtraArgs( ) { T_SRDErrors errors; T_SRDList output( process( "( -unwrap ( a ) ( b c ) )" , errors ) ); CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) ); M_CKERR_( 0 , "too many arguments" , 1 , 3 ); M_CKERR_( 1 , "previous error cause" , 1 , 17 ); CPPUNIT_ASSERT( check( "a" , output ) ); } /*----------------------------------------------------------------------------*/ void SRDPreprocCmdMiscTest::testLengthMissingArg( ) { T_SRDErrors errors; T_SRDList output( process( "( -length )" , errors ) ); CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) ); M_CKERR_( 0 , "not enough arguments" , 1 , 3 ); M_CKERR_( 1 , "previous error cause" , 1 , 11 ); CPPUNIT_ASSERT( check( "-1" , output ) ); } void SRDPreprocCmdMiscTest::testLengthExtraArgs( ) { T_SRDErrors errors; T_SRDList output( process( "( -length a b c )" , errors ) ); CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) ); M_CKERR_( 0 , "too many arguments" , 1 , 3 ); M_CKERR_( 1 , "previous error cause" , 1 , 13 ); CPPUNIT_ASSERT( check( "1" , output ) ); } void SRDPreprocCmdMiscTest::testLengthBadArg( ) { T_SRDErrors errors; T_SRDList output( process( "( -length 1 )" , errors ) ); CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) ); M_CKERR_( 0 , "list, word, string or binary array expected" , 1 , 3 ); M_CKERR_( 1 , "previous error cause" , 1 , 11 ); CPPUNIT_ASSERT( check( "-1" , output ) ); } void SRDPreprocCmdMiscTest::testLengthList( ) { T_SRDErrors errors; T_SRDList output( process( "( -length ( a ( b ) ) )" , errors ) ); CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) ); CPPUNIT_ASSERT( check( "2" , output ) ); } void SRDPreprocCmdMiscTest::testLengthWord( ) { T_SRDErrors errors; T_SRDList output( process( "( -length abc )" , errors ) ); CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) ); CPPUNIT_ASSERT( check( "3" , output ) ); } void SRDPreprocCmdMiscTest::testLengthString( ) { T_SRDErrors errors; T_SRDList output( process( "( -length \"some string\" )" , errors ) ); CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) ); CPPUNIT_ASSERT( check( "11" , output ) ); } void SRDPreprocCmdMiscTest::testLengthBinary( ) { T_SRDErrors errors; T_SRDList output( process( "( -length [ 01 02 03 ] )" , errors ) ); CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) ); CPPUNIT_ASSERT( check( "3" , output ) ); }