def testStaticMethod(self): program = util.source(''' class NineTest: static def Method(): x = x + 1 print x var x = 0 while x < 10: NineTest.Method() ''') util.runProgram('classdecl_static_method_test', program)
def testStaticFactory(self): # Test a problem that occurred when trying to construct an instance # of a class within methods of that class. program = util.source(''' class Test: static def MakeTest() as Test: var test = Test() return test var t = Test.MakeTest() ''') util.runProgram('classdecl_static_factory_test', program)
def testAttributes(self): program = util.source(''' class NineTest: var x as int def Method(): self.x = self.x + 1 print self.x var t = NineTest() while t.x < 10: t.Method() ''') util.runProgram('classdecl_attribute_test', program)
def testStaticAttribute(self): program = util.source(''' class NineTest: static var x as int def Method(): self.x = self.x + 1 print self.x var t = NineTest() while NineTest.x < 10: t.Method() ''') util.runProgram('classdecl_static_attr_test', program)
def testOverride(self): program = util.source(''' class Base: var x as int def NonVirtual(): print 'nonvirtual' print self.x self.x += 1 virtual def Method(): print 'Base!' def wuzzah(): print 'wuzzah!' print self.x class Child1(Base): override def Method(): print 'Child1!' class Child2(Base): override def Method(): print 'Child2!' var t = Base() t.Method() t.NonVirtual() t.wuzzah() t = Child1() t.Method() t.NonVirtual() t.wuzzah() t = Child2() t.Method() t.NonVirtual() t.wuzzah() ''') util.runProgram('classdecl_override_test', program)
def testAbstractClass(self): program = util.source(''' abstract class A: abstract def Foo() class B(A): override def Foo(): print 'B.Foo' class C(A): override def Foo(): print 'C.Foo' var a as A a = B() a.Foo() a = C() a.Foo() ''') util.runProgram('classdecl_abstract_class_test', program, ['mscorlib'])