def testEmitCode(self): program = util.source('''\ var x as int print x ''') util.runProgram('variable_test', program, ['mscorlib'])
def testCallMethod(self): program = util.source(''' var o = TestClass.TestClass() o.Method('Hello to C# from Nine!') ''') util.runProgram('extern_method_test', program, ['bin/ClassLibrary1'])
def testCreateType(self): program = util.source(''' delegate MyDelegate(a as int) as string ''' ) util.runProgram('delegate_type_test', program, [])
def testCompileString(self): program = util.source(''' print 'Expect 9:' var count = 0 if 1<9: count = count + 1 else: count = count + 99 if 1>9: pass else: count = count + 3 if 1>9: pass elif 9>1: count = count + 4 if 9<1: pass elif 9<1: pass else: count = count + 1 print count if count == 9: print 'Looks like it passed. Woohoo!' else: print 'Oh no it failed!!' ''') util.runProgram('if_test',program)
def testCodeGen(self): program = util.source(''' var a = -9 var b = -3.1415926535897931 var c = +9 var d = -c var e = ~0 var f = ~(~1) print a print b print c print d print e print f var t1 = true var f1 = false var f2 = not t1 var t2 = not f2 var t3 = not f1 print '' print 'Expect True, False, False, True, True' print t1 print f1 print f2 print t2 print t3 ''') util.runProgram('unary_codegen_test', program)
def testReadAttribute(self): program = util.source(''' var o = TestClass.TestClass() print o.x ''') util.runProgram('extern_read_attr_test', program, ['bin/ClassLibrary1'])
def testTypes(self): util.runProgram('print_types', util.source(''' print (27 as int) print (27 as float) print (27 as System.Double) print (true as boolean) '''), ['mscorlib'])
def testReadProperty(self): program = util.source(''' var o = TestClass.TestClass(2) print o.Property ''') util.runProgram('extern_read_property_test', program, ['mscorlib', 'bin/ClassLibrary1'])
def testWriteAttribute(self): program = util.source(''' var o = TestClass.TestClass() o.x = 999 print o.x ''') util.runProgram('extern_write_attr_test', program, ['bin/ClassLibrary1'])
def testCallValueTypeMember(self): program = util.source(''' var pi = 3.1415926535897931 print 'Pi:' print pi.ToString() ''') util.runProgram('extern_call_value_type_member_test', program)
def testWriteProperty(self): program = util.source(''' var o = TestClass.TestClass(2) o.Property = 'Nine!' print o.Property ''') util.runProgram('extern_write_property_test', program, ['mscorlib', 'bin/ClassLibrary1'])
def testResolveOverload(self): program = util.source(''' var o = TestClass.TestClass(2) o.Method(9) #o.Method('String!') ''') util.runProgram('extern_overload_test', program, ['mscorlib', 'bin/ClassLibrary1'])
def testIndexValueTypeMethod(self): program = util.source(''' var things = array(int, 1) print things[0].ToString() ''') util.runProgram('array_index_value_type_method_test', program)
def testCompileString(self): program = util.source(''' class Foo: def ctor(a as string): print a var b as Foo = Foo("Constructor works!")''' ) util.runProgram("ctor_test", program, [])
def testCompileString(self): program = '''\ print 'ADD' print 3 + 6 print 'SUB' print 12 - 3 ''' util.runProgram('printadd_test', program)
def testAssignChar(self): p=util.source(''' var a = "niNe" var b as char= a[2] print "see N:" print b ''') util.runProgram('TestStringIndexAssign',p)
def testAssignDelegateExternal(self): program = util.source(''' delegate ExternDelegate(arg as System.Double) as System.Double var b = ExternDelegate(System.Math.Cos) ''' ) util.runProgram('delegate_external_assign_test', program, ['mscorlib'])
def testCodeGen(self): program = util.source(''' var x = 27 var y = 3 var z = 'The following line should be "9"' print z print x / y ''') util.runProgram('print_codegen_test', program)
def testAssignDelegateExternalOverloaded(self): program = util.source(''' delegate ExternDelegate(a as int) as string var b = ExternDelegate(System.Convert.ToString) print b(9)''' ) util.runProgram('delegate_external_overloaded_assign_test', program, ['mscorlib'])
def testAssign(self): program = util.source(''' var oob as System.Object var x = 1 print x oob = 1 print oob ''') util.runProgram('box_assign_test', program, ['mscorlib'])
def testGenerateCode(self): program = util.source(''' var x as int var y = x var z = 'hooooorj' print z print x ''') util.runProgram('vardecl_test', program)
def testPrimitiveMethods(self): program = util.source( """ var y = "Hello Nine!" print y.Length """ ) util.runProgram("primitive_method_test", program, ["mscorlib"])
def testCharEmitLoad(self): p=util.source(''' var a = "x" var b = 'y' print "see x then y:" print a[0] print b[0] ''') util.runProgram('TestStringIndexCharEmitLoad',p)
def testStringConcat(self): program = util.source(''' var x = "Hello " var y = "World" var z = "!" var a = x + y + z print a ''') util.runProgram('string_concat_test', program)
def testOverride(self): program = util.source(''' class MyClass(System.Object): override def ToString() as string: return "Hello, overriding Object.ToString here!" var cls = MyClass() print cls ''') util.runProgram('external_override_test', program, ['mscorlib'])
def testAssignDelegate(self): program = util.source(''' def output(a as int): print a delegate MyDelegate(a as int) var b = MyDelegate(output)''' ) util.runProgram('delegate_assign_test', program, [])
def testCodeGen(self): program = util.source(''' def foo(x as int, y as int, msg as string): print msg var result = x * y print result foo(3, 3, 'Following should be 9:') ''') util.runProgram('functioncall_test', program)
def testCallMethod(self): program = util.source(''' class A: def foo(a as int, b as int): print a + b var a = A() a.foo(4, 5) ''') util.runProgram('functioncall_method_test', program)
def testRun(self): program = util.source(''' print "There should be nothing other than this" var x = 5 while x > 1: x=x-1 continue print x ''') util.runProgram('continue_test', program)
def testCompile(self): program = util.source( """ try: raise System.StackOverflowException() print 'Failed to raise! @_@' except System.StackOverflowException: print "Caught an exception" """ ) util.runProgram("raise_test", program, ["mscorlib"])