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

610 lines
17 KiB
C++
Raw Normal View History

#include "srd-preproc-cmd-common.hh"
class SRDPreprocCmdLogicTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE( SRDPreprocCmdLogicTest );
CPPUNIT_TEST( testNotNoArgs );
CPPUNIT_TEST( testNotTooManyArgs );
CPPUNIT_TEST( testNotBadArg );
CPPUNIT_TEST( testNotZero );
CPPUNIT_TEST( testNotNonZeroInt );
CPPUNIT_TEST( testNotNonZeroLong );
CPPUNIT_TEST( testBwNotNoArgs );
CPPUNIT_TEST( testBwNotTooManyArgs );
CPPUNIT_TEST( testBwNotBadArg );
CPPUNIT_TEST( testBwNotInt );
CPPUNIT_TEST( testBwNotLong );
CPPUNIT_TEST( testAndNoArgs );
CPPUNIT_TEST( testAndBadArgs );
CPPUNIT_TEST( testAnd00 );
CPPUNIT_TEST( testAnd01 );
CPPUNIT_TEST( testAnd10 );
CPPUNIT_TEST( testAnd11 );
CPPUNIT_TEST( testAndMultiple );
CPPUNIT_TEST( testAndLong );
CPPUNIT_TEST( testAndSillyValues );
CPPUNIT_TEST( testBwAndNoArgs );
CPPUNIT_TEST( testBwAndBadArgs );
CPPUNIT_TEST( testBwAndInts );
CPPUNIT_TEST( testBwAndLongs );
CPPUNIT_TEST( testBwAndMultiple );
CPPUNIT_TEST( testOrNoArgs );
CPPUNIT_TEST( testOrBadArgs );
CPPUNIT_TEST( testOr00 );
CPPUNIT_TEST( testOr01 );
CPPUNIT_TEST( testOr10 );
CPPUNIT_TEST( testOr11 );
CPPUNIT_TEST( testOrMultiple );
CPPUNIT_TEST( testOrLong );
CPPUNIT_TEST( testOrSillyValues );
CPPUNIT_TEST( testBwOrNoArgs );
CPPUNIT_TEST( testBwOrBadArgs );
CPPUNIT_TEST( testBwOrInts );
CPPUNIT_TEST( testBwOrLongs );
CPPUNIT_TEST( testBwOrMultiple );
CPPUNIT_TEST( testXorNoArgs );
CPPUNIT_TEST( testXorBadArgs );
CPPUNIT_TEST( testXor00 );
CPPUNIT_TEST( testXor01 );
CPPUNIT_TEST( testXor10 );
CPPUNIT_TEST( testXor11 );
CPPUNIT_TEST( testXorMultiple );
CPPUNIT_TEST( testXorLong );
CPPUNIT_TEST( testXorSillyValues );
CPPUNIT_TEST( testBwXorNoArgs );
CPPUNIT_TEST( testBwXorBadArgs );
CPPUNIT_TEST( testBwXorInts );
CPPUNIT_TEST( testBwXorLongs );
CPPUNIT_TEST( testBwXorMultiple );
CPPUNIT_TEST_SUITE_END( );
public:
void testNotNoArgs( );
void testNotTooManyArgs( );
void testNotBadArg( );
void testNotZero( );
void testNotNonZeroInt( );
void testNotNonZeroLong( );
void testBwNotNoArgs( );
void testBwNotTooManyArgs( );
void testBwNotBadArg( );
void testBwNotInt( );
void testBwNotLong( );
void testAndNoArgs( );
void testAndBadArgs( );
void testAnd00( );
void testAnd01( );
void testAnd10( );
void testAnd11( );
void testAndMultiple( );
void testAndLong( );
void testAndSillyValues( );
void testBwAndNoArgs( );
void testBwAndBadArgs( );
void testBwAndInts( );
void testBwAndLongs( );
void testBwAndMultiple( );
void testOrNoArgs( );
void testOrBadArgs( );
void testOr00( );
void testOr01( );
void testOr10( );
void testOr11( );
void testOrMultiple( );
void testOrLong( );
void testOrSillyValues( );
void testBwOrNoArgs( );
void testBwOrBadArgs( );
void testBwOrInts( );
void testBwOrLongs( );
void testBwOrMultiple( );
void testXorNoArgs( );
void testXorBadArgs( );
void testXor00( );
void testXor01( );
void testXor10( );
void testXor11( );
void testXorMultiple( );
void testXorLong( );
void testXorSillyValues( );
void testBwXorNoArgs( );
void testBwXorBadArgs( );
void testBwXorInts( );
void testBwXorLongs( );
void testBwXorMultiple( );
};
CPPUNIT_TEST_SUITE_REGISTRATION( SRDPreprocCmdLogicTest );
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdLogicTest::testNotNoArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -not )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "not enough arguments" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 8 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testNotTooManyArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -not 0 2 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "too many arguments" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 10 );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testNotBadArg( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -not 0. )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "integer argument expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 8 );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testNotZero( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -not 0 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testNotNonZeroInt( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -not 12 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testNotNonZeroLong( )
{
T_SRDErrors errors;
T_SRDList output( process( "(-set x ( -not 12000000000 ))(-to-integer $x)(-type-of $x)" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "0 long" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdLogicTest::testBwNotNoArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-not )" , 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 SRDPreprocCmdLogicTest::testBwNotTooManyArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-not 1 2 )" , 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( "-2" , output ) );
}
void SRDPreprocCmdLogicTest::testBwNotBadArg( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-not 2.2 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "integer argument expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 11 );
CPPUNIT_ASSERT( check( "-3" , output ) );
}
void SRDPreprocCmdLogicTest::testBwNotInt( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-not 129 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "-130" , output ) );
}
void SRDPreprocCmdLogicTest::testBwNotLong( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-not 12000000000 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "-12000000001" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdLogicTest::testAndNoArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -and )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "not enough arguments" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 8 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testAndBadArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -and 1 1. ( ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "integer argument expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 10 );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testAnd00( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -and 0 0 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testAnd01( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -and 0 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testAnd10( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -and 1 0 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testAnd11( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -and 1 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testAndMultiple( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -and 1 1 1 1 )( -and 1 0 1 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1 0" , output ) );
}
void SRDPreprocCmdLogicTest::testAndLong( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -and 1 ( -to-long 1 ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testAndSillyValues( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -and -42384 35845 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdLogicTest::testBwAndNoArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-and )" , 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 SRDPreprocCmdLogicTest::testBwAndBadArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-and 1.2 ( ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "integer argument expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 11 );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testBwAndInts( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-and 5 6 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "4" , output ) );
}
void SRDPreprocCmdLogicTest::testBwAndLongs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-and 12884901888 4294967296 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "4294967296" , output ) );
}
void SRDPreprocCmdLogicTest::testBwAndMultiple( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-and 15 7 3 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "3" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdLogicTest::testOrNoArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -or )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "not enough arguments" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 7 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testOrBadArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -or 1 1. ( ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "integer argument expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 9 );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testOr00( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -or 0 0 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testOr01( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -or 0 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testOr10( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -or 1 0 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testOr11( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -or 1 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testOrMultiple( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -or 1 1 1 1 )( -or 1 0 1 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1 1" , output ) );
}
void SRDPreprocCmdLogicTest::testOrLong( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -or 1 ( -to-long 1 ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testOrSillyValues( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -or 0 35845 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdLogicTest::testBwOrNoArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-or )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "not enough arguments" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 10 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testBwOrBadArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-or 1.2 ( ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "integer argument expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 10 );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testBwOrInts( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-or 5 6 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "7" , output ) );
}
void SRDPreprocCmdLogicTest::testBwOrLongs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-or 8589934592 4294967296 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "12884901888" , output ) );
}
void SRDPreprocCmdLogicTest::testBwOrMultiple( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-or 2 4 8 6 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "14" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdLogicTest::testXorNoArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -xor )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "not enough arguments" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 8 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testXorBadArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -xor 1 1. ( ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "integer argument expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 10 );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testXor00( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -xor 0 0 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testXor01( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -xor 0 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testXor10( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -xor 1 0 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testXor11( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -xor 1 1 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testXorMultiple( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -xor 1 0 0 0 )( -xor 1 0 1 0 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1 0" , output ) );
}
void SRDPreprocCmdLogicTest::testXorLong( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -xor 1 ( -to-long 1 ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( uint32_t( 0 ) , errors.size( ) );
CPPUNIT_ASSERT( check( "0" , output ) );
}
void SRDPreprocCmdLogicTest::testXorSillyValues( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -xor 0 35845 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "1" , output ) );
}
/*----------------------------------------------------------------------------*/
void SRDPreprocCmdLogicTest::testBwXorNoArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-xor )" , 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 SRDPreprocCmdLogicTest::testBwXorBadArgs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-xor 1.2 ( ) )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 2u , errors.size( ) );
M_CKERR_( 0 , "integer argument expected" , 1 , 3 );
M_CKERR_( 1 , "previous error cause" , 1 , 11 );
CPPUNIT_ASSERT( check( "1" , output ) );
}
void SRDPreprocCmdLogicTest::testBwXorInts( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-xor 5 6 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "3" , output ) );
}
void SRDPreprocCmdLogicTest::testBwXorLongs( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-xor 21474836480 25769803776 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "12884901888" , output ) );
}
void SRDPreprocCmdLogicTest::testBwXorMultiple( )
{
T_SRDErrors errors;
T_SRDList output( process( "( -bw-xor 2 4 8 6 )" , errors ) );
CPPUNIT_ASSERT_EQUAL( 0u , errors.size( ) );
CPPUNIT_ASSERT( check( "8" , output ) );
}