00001
00002
00003
00004
00005
00006
00007
00008 namespace impulse {
00009
00010 class ExpressTest : public UnitTest {
00011
00012 public:
00013
00014 void runTests()
00015 {
00016 cout << "Testing Express..." << endl;
00017 cout << "------------------------------------------------------------" << endl;
00018
00019 Value lobby = new Lobby();
00020
00021 Express expr;
00022 expr.push( Value(-10.0) );
00023 expr.push( new Message( Symbol::at("abs") ) );
00024
00025 Array args;
00026 Value value;
00027
00028
00029 {
00030 value = expr.invoke( args, lobby );
00031 }
00032
00033 ASSERT( value.getFloat() == 10.0 );
00034
00035
00036
00037
00038
00039
00040 Array args2;
00041
00042 Express code3;
00043 code3.push( Value( 5.0 ) );
00044
00045 Express code2;
00046 code2.push( Value( 10.0 ) );
00047 code2.push( new Message( Symbol::at("+"), &code3 ) );
00048
00049 Express expr2( code2 );
00050 ASSERT( expr2.invoke( args, lobby ).getFloat() == 15.0 );
00051
00052 cout << "------------------------------------------------------------" << endl;
00053 cout << endl;
00054 }
00055
00056 };
00057
00058 }