corelib/tests/srd-preproc-cmd-introspect.cc

322 lines
9.7 KiB
C++

#include "srd-preproc-cmd-common.hh"
class SRDPreprocCmdIntrospectTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE( SRDPreprocCmdIntrospectTest );
CPPUNIT_TEST( testIsSetMissingArgs );
CPPUNIT_TEST( testIsSetExtraArgs );
CPPUNIT_TEST( testIsSetBadArg );
CPPUNIT_TEST( testIsSetTrue );
CPPUNIT_TEST( testIsSetFalse );
CPPUNIT_TEST( testIsMacroMissingArgs );
CPPUNIT_TEST( testIsMacroExtraArgs );
CPPUNIT_TEST( testIsMacroBadArg );
CPPUNIT_TEST( testIsMacroTrue );
CPPUNIT_TEST( testIsMacroFalse );
CPPUNIT_TEST( testIsBlessedMissingArgs );
CPPUNIT_TEST( testIsBlessedExtraArgs );
CPPUNIT_TEST( testIsBlessedBadArg );
CPPUNIT_TEST( testIsBlessedUnset );
CPPUNIT_TEST( testIsBlessedUnblessed );
CPPUNIT_TEST( testIsBlessedTrue );
CPPUNIT_TEST( testTypeOfMissingArg );
CPPUNIT_TEST( testTypeOfExtraArgs );
CPPUNIT_TEST( testTypeOfList );
CPPUNIT_TEST( testTypeOfWord );
CPPUNIT_TEST( testTypeOfString );
CPPUNIT_TEST( testTypeOfInt );
CPPUNIT_TEST( testTypeOfLong );
CPPUNIT_TEST( testTypeOfReal );
CPPUNIT_TEST( testTypeOfVar );
CPPUNIT_TEST( testTypeOfBinary );
CPPUNIT_TEST( testTypeOfComment );
CPPUNIT_TEST_SUITE_END( );
public:
void testIsSetMissingArgs( );
void testIsSetExtraArgs( );
void testIsSetBadArg( );
void testIsSetTrue( );
void testIsSetFalse( );
void testIsMacroMissingArgs( );
void testIsMacroExtraArgs( );
void testIsMacroBadArg( );
void testIsMacroTrue( );
void testIsMacroFalse( );
void testIsBlessedMissingArgs( );
void testIsBlessedExtraArgs( );
void testIsBlessedBadArg( );
void testIsBlessedUnset( );
void testIsBlessedUnblessed( );
void testIsBlessedTrue( );
void testTypeOfMissingArg( );
void testTypeOfExtraArgs( );
void testTypeOfList( );
void testTypeOfWord( );
void testTypeOfString( );
void testTypeOfInt( );
void testTypeOfLong( );
void testTypeOfReal( );
void testTypeOfVar( );
void testTypeOfBinary( );
void testTypeOfComment( );
};
CPPUNIT_TEST_SUITE_REGISTRATION( SRDPreprocCmdIntrospectTest );
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdIntrospectTest::testIsSetMissingArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-set )" , 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( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsSetExtraArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-set 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( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsSetBadArg( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-set 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "word expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 11 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsSetTrue( )
{
T_SRDErrors errors;
T_SRDList output( process( "(-set x 1)( -is-set x )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsSetFalse( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-set x )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdIntrospectTest::testIsMacroMissingArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-macro )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "not enough arguments" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 13 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsMacroExtraArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-macro 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 , 15 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsMacroBadArg( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-macro 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "word expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 13 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsMacroTrue( )
{
T_SRDErrors errors;
T_SRDList output( process( "(-set-macro x (()))( -is-macro x )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsMacroFalse( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-macro x )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdIntrospectTest::testIsBlessedMissingArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-blessed )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "not enough arguments" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 15 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsBlessedExtraArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-blessed 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( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsBlessedBadArg( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-blessed 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "word expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 15 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsBlessedUnset( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -is-blessed x )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsBlessedUnblessed( )
{
T_SRDErrors errors;
T_SRDList output( process( "(-set x 1)( -is-blessed x )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdIntrospectTest::testIsBlessedTrue( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -set x (()) )\n"
"( -bless x )\n"
"( -is-blessed x )" ,
errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdIntrospectTest::testTypeOfMissingArg( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "not enough arguments" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 12 );
CPPUNIT_ASSERT( check( "none" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfExtraArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of 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 , 14 );
CPPUNIT_ASSERT( check( "word" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfList( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of ( ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "list" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfWord( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of w )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "word" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfString( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of \"w\" )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "string" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfInt( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of 0 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "int" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfLong( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of 12123456789 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "long" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfReal( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of 0. )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "real" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfVar( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of ( -raw $x ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "var" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfBinary( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of [] )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "binary" , output ) );
}
void SRDPreprocCmdIntrospectTest::testTypeOfComment( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -type-of (-from-source \"{x}\") )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "comment" , output ) );
}