/* handler for function 1 */ static Obj HdlrFunc1 ( Obj self ) { Obj t_1 = 0; Obj t_2 = 0; Bag oldFrame; /* allocate new stack frame */ SWITCH_TO_NEW_FRAME(self,0,0,oldFrame); /* runtest := function ( ) Print( 1, "\n" ); Print( "abc", "\n" ); Print( (1,2)(5,6), "\n" ); Print( [ 1, "abc" ], "\n" ); Print( Group( (1,2,3) ), "\n" ); return; end; */ t_1 = NewFunction( NameFunc[2], 0, 0, HdlrFunc2 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewFunctionBody(); SET_STARTLINE_BODY(t_2, 1); SET_ENDLINE_BODY(t_2, 7); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); AssGVar( G_runtest, t_1 ); /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; }
/* handler for function 1 */ static Obj HdlrFunc1 ( Obj self ) { Obj t_1 = 0; Obj t_2 = 0; Bag oldFrame; /* allocate new stack frame */ SWITCH_TO_NEW_FRAME(self,0,0,oldFrame); /* runtest := function ( ) return 1 + 2; end; */ t_1 = NewFunction( NameFunc[2], 0, 0, HdlrFunc2 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewBag( T_BODY, sizeof(BodyHeader) ); SET_STARTLINE_BODY(t_2, 1); SET_ENDLINE_BODY(t_2, 3); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); CHANGED_BAG( STATE(CurrLVars) ); AssGVar( G_runtest, t_1 ); /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; }
/* handler for function 1 */ static Obj HdlrFunc1 ( Obj self ) { Obj t_1 = 0; Obj t_2 = 0; Bag oldFrame; /* allocate new stack frame */ SWITCH_TO_NEW_FRAME(self,0,0,oldFrame); /* runtest := function ( ) Print( AssertionLevel( ), "\n" ); Assert( 1, false, "fail-A" ); Assert( 1, false ); Assert( 0, true, "fail-B" ); Assert( 0, true ); SetAssertionLevel( 2 ); Print( AssertionLevel( ), "\n" ); Assert( 3, false, "fail-C" ); Assert( 3, false ); Assert( 2, true, "fail-D" ); Assert( 2, true ); Assert( 2, false, "pass!\n" ); Print( "end of function\n" ); return; end; */ t_1 = NewFunction( NameFunc[2], 0, 0, HdlrFunc2 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewBag( T_BODY, sizeof(BodyHeader) ); SET_STARTLINE_BODY(t_2, 1); SET_ENDLINE_BODY(t_2, 18); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); CHANGED_BAG( STATE(CurrLVars) ); AssGVar( G_runtest, t_1 ); /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; }
/* handler for function 1 */ static Obj HdlrFunc1 ( Obj self ) { Obj t_1 = 0; Obj t_2 = 0; Bag oldFrame; /* allocate new stack frame */ SWITCH_TO_NEW_FRAME(self,0,0,oldFrame); /* f1 := function ( a ) Print( "f1:", a, "\n" ); return; end; */ t_1 = NewFunction( NameFunc[2], 1, 0, HdlrFunc2 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewBag( T_BODY, sizeof(BodyHeader) ); SET_STARTLINE_BODY(t_2, 1); SET_ENDLINE_BODY(t_2, 3); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); CHANGED_BAG( STATE(CurrLVars) ); AssGVar( G_f1, t_1 ); /* f2 := function ( a, b ) Print( "f2:", a, ":", b, "\n" ); return; end; */ t_1 = NewFunction( NameFunc[3], 2, 0, HdlrFunc3 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewBag( T_BODY, sizeof(BodyHeader) ); SET_STARTLINE_BODY(t_2, 5); SET_ENDLINE_BODY(t_2, 7); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); CHANGED_BAG( STATE(CurrLVars) ); AssGVar( G_f2, t_1 ); /* f3 := function ( a... ) Print( "f3:", a, "\n" ); return; end; */ t_1 = NewFunction( NameFunc[4], -1, 0, HdlrFunc4 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewBag( T_BODY, sizeof(BodyHeader) ); SET_STARTLINE_BODY(t_2, 9); SET_ENDLINE_BODY(t_2, 11); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); CHANGED_BAG( STATE(CurrLVars) ); AssGVar( G_f3, t_1 ); /* f4 := function ( a, b... ) Print( "f4:", a, ":", b, "\n" ); return; end; */ t_1 = NewFunction( NameFunc[5], -2, 0, HdlrFunc5 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewBag( T_BODY, sizeof(BodyHeader) ); SET_STARTLINE_BODY(t_2, 13); SET_ENDLINE_BODY(t_2, 15); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); CHANGED_BAG( STATE(CurrLVars) ); AssGVar( G_f4, t_1 ); /* runtest := function ( ) f1( 2 ); f2( 2, 3 ); f3( ); f3( 2 ); f3( 2, 3, 4 ); f4( 1 ); f4( 1, 2 ); f4( 1, 2, 3 ); return; end; */ t_1 = NewFunction( NameFunc[6], 0, 0, HdlrFunc6 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewBag( T_BODY, sizeof(BodyHeader) ); SET_STARTLINE_BODY(t_2, 17); SET_ENDLINE_BODY(t_2, 26); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); CHANGED_BAG( STATE(CurrLVars) ); AssGVar( G_runtest, t_1 ); /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; }
/* handler for function 1 */ static Obj HdlrFunc1 ( Obj self ) { Obj t_1 = 0; Obj t_2 = 0; Bag oldFrame; /* allocate new stack frame */ SWITCH_TO_NEW_FRAME(self,0,0,oldFrame); /* range2 := function ( a, b ) return [ a .. b ]; end; */ t_1 = NewFunction( NameFunc[2], 2, ArgStringToList("a,b"), HdlrFunc2 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewFunctionBody(); SET_STARTLINE_BODY(t_2, 1); SET_ENDLINE_BODY(t_2, 1); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); AssGVar( G_range2, t_1 ); /* range3 := function ( a, b, c ) return [ a, b .. c ]; end; */ t_1 = NewFunction( NameFunc[3], 3, ArgStringToList("a,b,c"), HdlrFunc3 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewFunctionBody(); SET_STARTLINE_BODY(t_2, 2); SET_ENDLINE_BODY(t_2, 2); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); AssGVar( G_range3, t_1 ); /* runtest := function ( ) BreakOnError := false; CALL_WITH_CATCH( range2, [ 1, 2 ^ 80 ] ); CALL_WITH_CATCH( range2, [ - 2 ^ 80, 0 ] ); CALL_WITH_CATCH( range3, [ 1, 2, 2 ^ 80 ] ); CALL_WITH_CATCH( range3, [ - 2 ^ 80, 0, 1 ] ); CALL_WITH_CATCH( range3, [ 0, 2 ^ 80, 2 ^ 81 ] ); Display( [ 1, 2 .. 2 ] ); CALL_WITH_CATCH( range3, [ 2, 2, 2 ] ); Display( [ 2, 4 .. 6 ] ); CALL_WITH_CATCH( range3, [ 2, 4, 7 ] ); Display( [ 2, 4 .. 2 ] ); Display( [ 2, 4 .. 0 ] ); CALL_WITH_CATCH( range3, [ 4, 2, 1 ] ); Display( [ 4, 2 .. 0 ] ); Display( [ 4, 2 .. 8 ] ); return; end; */ t_1 = NewFunction( NameFunc[4], 0, 0, HdlrFunc4 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewFunctionBody(); SET_STARTLINE_BODY(t_2, 4); SET_ENDLINE_BODY(t_2, 26); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); AssGVar( G_runtest, t_1 ); /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; /* return; */ SWITCH_TO_OLD_FRAME(oldFrame); return 0; }