00001
00002
00003
00004
00005
00006
00007
00008 namespace impulse {
00009
00010 struct Test : public Frame {
00011
00012 Value test( Array& args, Value self ) { return args.at(0).getFloat() + 10.0; }
00013
00014 };
00015
00016 class MethodTest : public UnitTest {
00017
00018 public:
00019
00020 void runTests()
00021 {
00022 cout << "Testing Method..." << endl;
00023 cout << "------------------------------------------------------------" << endl;
00024
00025 Array args;
00026 args.push( 5 );
00027
00028 Array margs;
00029 margs.push( new Test() );
00030 margs.push( &args );
00031
00032 Frame* method;
00033 ASSERT( method = new Method<Test>( "test", &Test::test ) );
00034
00035 try
00036 {
00037 ASSERT( method->eval( margs, 10.0 ).getFloat() == 15.0 );
00038 }
00039 catch( string error )
00040 {
00041 cout << error << endl;
00042 }
00043
00044 cout << "------------------------------------------------------------" << endl;
00045 cout << endl;
00046 }
00047
00048 };
00049
00050 }