예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    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'])