Esempio n. 1
0
 def testSemantic1(self):
     util.semanticProgram(
         util.source('''
             class NineTest:
                 pass
         ''')
     )
Esempio n. 2
0
    def testParse3(self):
        program = util.source('''
            class NineTest:
                var memberVar
        ''')

        result = util.parseProgram(program)
        assert isinstance(result[0], ClassDecl)
        return result[0]
Esempio n. 3
0
    def testCodeGen(self):
        program = util.source('''
            class NineTest:
                var x as int
                def Method():
                    pass
        ''')

        util.buildProgram('classdecl_codegen_test', program)
Esempio n. 4
0
    def testParse2(self):
        program = util.source('''
            class NineTest:
                def Method():
                    pass
        ''')

        result = util.parseProgram(program)
        assert isinstance(result[0], ClassDecl)
        return result[0]
Esempio n. 5
0
    def testParse1(self):
        'Return the ClassDecl so that the testSemanticX methods can use it.'
        program = util.source('''
            class NineTest:
                pass
        ''')

        result = util.parseProgram(program)
        assert isinstance(result[0], ClassDecl)
        return result[0]
Esempio n. 6
0
    def testVirtualOverrideKeywords1(self):
        program = util.source('''
            class A_Class:
                override def Bork():
                    pass
        ''')

        self.assertRaises(
            error.OverrideError,
            lambda: util.semanticProgram(program)
        )
Esempio n. 7
0
    def testVirtualOverrideKeywords3(self):
        program = util.source('''
            class A_Class:
                virtual def Method():
                    pass
            class B_Class(A_Class):
                override def Method():
                    pass
        ''')

        util.semanticProgram(program)
Esempio n. 8
0
    def testSemantic2(self):
        program = util.source('''
            class NineTest:
                var x
                def Method():
                    pass
        ''')

        self.failUnlessRaises(
            error.SyntaxError,
            lambda: util.semanticProgram(program)
        )
Esempio n. 9
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)
Esempio n. 10
0
    def testCircularInheritance(self):
        program = util.source('''
            class A(B):
                pass

            class B(A):
                pass
        ''')

        self.assertRaises(
            error.CircularInheritanceError,
            lambda: util.semanticProgram(program)
        )
Esempio n. 11
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)
Esempio n. 12
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)
Esempio n. 13
0
    def testSealedClass(self):
        program = util.source('''
            sealed class A:
                virtual def Method():
                    print 'Hody2!'

            class B(A):
                pass
        ''')

        self.assertRaises(
            error.OverrideError,
            lambda: util.buildProgram('classdecl_sealedclass_test', program)
        )
Esempio n. 14
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)
Esempio n. 15
0
    def testSemantic3(self):
        program = util.source('''
            class DuplicateName:
                pass

            class DuplicateName:
                var x
                def Method():
                    pass
        ''')

        self.failUnlessRaises(
            error.NameError,
            lambda: util.semanticProgram(program)
        )
Esempio n. 16
0
    def testVirtualOverrideKeywords2(self):
        program = util.source('''
            class A_Class:
                override def Method():
                    pass
            class B_Class(A_Class):
                override def Method(x as int):
                    pass
            '''
        )

        self.assertRaises(
            error.OverrideError,
            lambda: util.semanticProgram(program)
        )
Esempio n. 17
0
    def testGetMethod(self):
        "testGetMethod: Test ClassDecl.getMethod()"
        from ast import vartypes

        program = util.source('''
            class A_Class:
                virtual def Method():
                    pass

            class B_Class(A_Class):
                override def Method():
                    pass
        ''')

        result = util.semanticProgram(program).pop()
        assert isinstance(result, ClassDecl)

        assert result.getMethod("Method", (), vartypes.VoidType) is not None
Esempio n. 18
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)
Esempio n. 19
0
    def testSealedMethod(self):
        program = util.source('''
            class A:
                virtual def Method():
                    print 'A'

            class B(A):
                sealed override def Method():
                    print 'B'

            class C(B):
                override def Method():
                    print 'C'
        ''')

        self.assertRaises(
            error.OverrideError,
            lambda: util.semanticProgram(program)
        )
Esempio n. 20
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'])
Esempio n. 21
0
    def testGetMethods(self):
        'testGetMethods: ClassDecl.getMethods'
        program = util.source('''
            class AClass:
                def a():
                    pass

                def b():
                    pass

                var c

                def d():
                    pass

                virtual def e():
                    pass
        ''')

        decl = util.parseProgram(program).pop()
        assert isinstance(decl, ClassDecl)

        names = [func.name for func in decl.getMethods()]
        self.assertEqual(names, ['a', 'b', 'd', 'e'])
Esempio n. 22
0
subst["RCM_DEPLOY_ROOTPATH"] = root_dir
subst["RCM_DEPLOY_INSTALLPATH"] = install
subst["RCM_DEPLOY_SPACKPATH"] = dest
for p in config_path_list:
    logger.info("config_dir-->" + p + "<-- ")
    for f in glob.glob(
            p + "/*.yaml"):  # generator, search immediate subdirectories
        outfile = os.path.basename(f)
        target = os.path.join(dest, 'etc', 'spack', outfile)
        logger.info("config_file " + outfile + " -->" + f + "<-- ")
        if not os.path.exists(target):
            templ = mytemplate.stringtemplate(open(f).read())
            out = templ.safe_substitute(subst)
            logger.info("WRITING config_file " + outfile + " -->" + target +
                        "<-- ")
            open(target, "w").write(out)

util.source(os.path.join(dest, 'share', 'spack', 'setup-env.sh'))
for p in config_path_list:
    initfile = os.path.join(p, 'config.sh')
    if os.path.exists(initfile):
        logger.info("parsing init file-->" + initfile + "<-- ")
        f = open(initfile, 'r')
        for line in f:
            if len(line) > 0:
                if not line[0] == '#':
                    templ = mytemplate.stringtemplate(line)
                    cmd = templ.safe_substitute(subst)
                    (ret, out, err) = util.run(cmd.split(), logger=logger)
                    logger.info("  " + out)
subst["RCM_DEPLOY_ROOTPATH"] = root_dir
subst["RCM_DEPLOY_INSTALLPATH"] = install
subst["RCM_DEPLOY_SPACKPATH"] = dest
for p in config_path_list:
    logger.info("config_dir-->"+p+"<-- ")
    for f in glob.glob(p+ "/*.yaml"): # generator, search immediate subdirectories
        outfile=os.path.basename(f)
        target=os.path.join(dest,'etc','spack',outfile)
        logger.info("config_file "+outfile+" -->"+f+"<-- ")
        if not os.path.exists(target):
            templ= mytemplate.stringtemplate(open(f).read())
            out=templ.safe_substitute(subst)
            logger.info("WRITING config_file "+outfile+" -->"+target+"<-- ")
            open(target,"w").write(out)

util.source(os.path.join(dest,'share','spack','setup-env.sh'))
for p in config_path_list:
    initfile=os.path.join(p,'config.sh')
    if os.path.exists(initfile):
        logger.info("parsing init file-->" + initfile + "<-- ")
        f=open(initfile,'r')
        for line in f:
            if len(line)>0:
                if not line[0] == '#':
                    templ= mytemplate.stringtemplate(line)
                    cmd=templ.safe_substitute(subst)
                    (ret,out,err)=util.run(cmd.split(),logger=logger)
                    logger.info("  " + out )


Esempio n. 24
0
    def testBlankFirstLine(self):
        util.buildProgram('classdecl_blank_first_line_test', util.source('''
            class Test:

                pass
        '''))