def macroTests(): testRelJump = ''' set 200 0 set 100 3 ''' + toStr( macros.relativeJump( 100 ) ) + ''' set 200 1 goto finish set 200 2 goto finish set 200 3 goto finish label finish assert 200 2 ''' test( testRelJump ) testCopy = ''' set 100 1 ''' + toStr( macros.copy( 100, 200 ) ) + ''' assert 200 1 ''' test( testCopy ) testAdd = ''' set 100 1000 set 101 2000 ''' + toStr( macros.add( 100, 101, 102 ) ) + ''' assert 102 3000 ''' test( testAdd ) testIncr = ''' set 100 2000 set 200 2000 ''' + toStr( macros.incrementBy( 100, 1 ) ) + ''' ''' + toStr( macros.incrementBy( 200, -1 ) ) + ''' assert 100 2001 assert 200 1999 ''' test( testIncr ) testDeref = ''' set 100 200 set 200 1000 set 300 0 ''' + toStr( macros.deref( 100, 300 ) ) + ''' assert 300 1000 ''' test( testDeref ) testIndirectSet = ''' set 100 101 set 101 1000 set 200 201 set 201 0 ''' + toStr( macros.indirectSet( 100, 200 ) ) + ''' assert 201 1000 ''' test( testIndirectSet ) testIndirectSetLiteral = ''' set 100 200 set 200 0 ''' + toStr( macros.indirectSetLiteral( 100, 123 ) ) + ''' assert 200 123 ''' test( testIndirectSet ) testIndirectIncrement = ''' set 100 101 set 101 1000 ''' + toStr( macros.indirectIncrement( 100, 50 ) ) + ''' assert 101 1050 ''' test( testIndirectIncrement ) testIndirectIncrement = ''' set 100 101 set 101 1000 ''' + toStr( macros.indirectIncrement( 100, 50 ) ) + ''' assert 101 1050 ''' test( testIndirectIncrement ) testStack = ''' set 100 2222 set 200 0 ''' + toStr( macros.push( 100 ) ) + ''' assert -1 2222 ''' + toStr( macros.pop( 200 ) ) + ''' doc assert 200 2222 ''' + toStr( macros.pushLiteral( 10 ) ) + ''' assert -1 10 '''+ toStr( macros.pushLiteral( 4 ) ) + ''' assert -2 4 '''+ toStr( macros.pop( 100 ) ) + ''' assert 100 4 '''+ toStr( macros.pop( 200 ) ) + ''' assert 200 10 ''' test( testStack ) pcall = ''' ''' + toStr( macros.procedure( "foo", [ 'set 300 1 ', 'set 301 2'])) + ''' ''' + toStr( macros.call( "foo", "blah" ) ) + ''' assert 300 1 assert 301 2 ''' test( pcall )
''' + toStr( macros.pushLiteral( 10 ) ) + ''' assert -1 10 '''+ toStr( macros.pushLiteral( 4 ) ) + ''' assert -2 4 '''+ toStr( macros.pop( 100 ) ) + ''' assert 100 4 '''+ toStr( macros.pop( 200 ) ) + ''' assert 200 10 ''' test( testStack ) pcall = ''' ''' + toStr( macros.procedure( "foo", [ 'set 300 1 ', 'set 301 2'])) + ''' ''' + toStr( macros.call( "foo", "blah" ) ) + ''' assert 300 1 assert 301 2 ''' test( pcall ) macroTests() testIndirectIncrement = ''' set 100 101 set 101 1000 ''' + toStr( macros.indirectIncrement( 100, 50 ) ) + ''' assert 101 1050 ''' test( testIndirectIncrement )