Exemplo n.º 1
0
 def testDumpAll(self):
     folder = cxx_writer.Folder('temp')
     intDecl = cxx_writer.intType
     privateVar = cxx_writer.Attribute('pippo', intDecl, 'private')
     emptyBody = cxx_writer.Code('')
     publicConstr = cxx_writer.Constructor(emptyBody, 'public')
     classDecl = cxx_writer.ClassDeclaration('MyClass', [privateVar])
     classDecl.addConstructor(publicConstr)
     implFile = cxx_writer.FileDumper('prova.cpp', False, indentSize = 4, lineWidth = 80)
     implFile.addMember(classDecl)
     headFile = cxx_writer.FileDumper('prova.hpp', True, indentSize = 4, lineWidth = 80)
     headFile.addMember(classDecl)
     folder.addHeader(headFile)
     folder.addCode(implFile)
     folder.create()
     testImplFile = open('temp/prova.cpp', 'rt')
     lines = testImplFile.readlines()
     testImplFile.close()
     os.remove('temp/prova.cpp')
     self.assertEqual(len(lines), 3 + 14)
     self.assertEqual(lines[12], 'MyClass::MyClass() {\n')
     self.assertEqual(lines[13], '\n')
     self.assertEqual(lines[14], '} // MyClass()\n')
     testHeadFile = open('temp/prova.hpp', 'rt')
     lines = testHeadFile.readlines()
     testHeadFile.close()
     os.remove('temp/prova.hpp')
     self.assertEqual(len(lines), 8 + 18)
     self.assertEqual(lines[14], 'class MyClass {\n')
     self.assertEqual(lines[15], '    public:\n')
     self.assertEqual(lines[16], '    MyClass();\n')
     self.assertEqual(lines[17], '\n')
     self.assertEqual(lines[18], '    private:\n')
     self.assertEqual(lines[19], '    int pippo;\n')
     self.assertEqual(lines[20], '\n')
     self.assertEqual(lines[21], '}; // class MyClass\n')
     testWscriptFile = open('temp/wscript', 'rt')
     lines = testWscriptFile.readlines()
     testWscriptFile.close()
     os.remove('temp/wscript')
     self.assertEqual(len(lines), 16)
     self.assertEqual(lines[0], '#!/usr/bin/env python\n')
     self.assertEqual(lines[1], '# -*- coding: iso-8859-1 -*-\n')
     self.assertEqual(lines[2], '\n')
     self.assertEqual(lines[3], 'import os\n')
     self.assertEqual(lines[4], '\n')
     self.assertEqual(lines[5], '\n')
     self.assertEqual(lines[6], 'def build(bld):\n')
     self.assertEqual(lines[7], '    sources = \"\"\"\n')
     self.assertEqual(lines[8], '        prova.cpp\n')
     self.assertEqual(lines[9], '    \"\"\"\n')
     self.assertEqual(lines[10], '    uselib = \'BOOST SYSTEMC TLM TRAP\'\n')
     self.assertEqual(lines[11], '    objects = \'\'\n')
     self.assertEqual(lines[12], '    includes = \'.\'\n')
     self.assertEqual(lines[13], '    target = \'temp\'\n')
     self.assertEqual(lines[15], '    bld.program(source = sources, target = target, use = uselib + \' \' + objects, includes = includes)\n')
     import shutil
     shutil.rmtree('temp', True)
Exemplo n.º 2
0
 def testDumpTemplateClassHeader(self):
     intDecl = cxx_writer.intType
     stringDecl = cxx_writer.stringType
     privateVar = cxx_writer.Attribute('pippo', intDecl, 'private')
     emptyBody = cxx_writer.Code('')
     publicConstr = cxx_writer.Constructor(emptyBody, 'public', [], ['std::string()'])
     classDecl = cxx_writer.ClassDeclaration('MyClass', [privateVar], [stringDecl], ['T'])
     classDecl.addConstructor(publicConstr)
     dumper = cxx_writer.FileDumper('prova.cpp', True, indentSize = 4, lineWidth = 80)
     dumper.addMember(classDecl)
     dumper.write()
     testFile = open('prova.cpp', 'rt')
     lines = testFile.readlines()
     testFile.close()
     os.remove('prova.cpp')
     self.assertEqual(len(lines), 15 + 18)
     self.assertEqual(lines[16], 'template <typename T>\n')
     self.assertEqual(lines[17], 'class MyClass : public std::string {\n')
     self.assertEqual(lines[18], '    public:\n')
     self.assertEqual(lines[19], '    MyClass() :\n')
     self.assertEqual(lines[20], '        std::string() {\n')
     self.assertEqual(lines[21], '\n')
     self.assertEqual(lines[22], '    } // MyClass()\n')
     self.assertEqual(lines[23], '\n')
     self.assertEqual(lines[24], '\n')
     self.assertEqual(lines[25], '    private:\n')
     self.assertEqual(lines[26], '    int pippo;\n')
     self.assertEqual(lines[27], '\n')
     self.assertEqual(lines[28], '}; // class MyClass\n')
Exemplo n.º 3
0
 def testDumpVariablesHeader(self):
     tempType = cxx_writer.TemplateType('std::map', [cxx_writer.intType, cxx_writer.stringType], 'map')
     tempVar = cxx_writer.Variable('pippo', tempType)
     dumper = cxx_writer.FileDumper('prova.cpp', True, indentSize = 4, lineWidth = 80)
     dumper.addMember(tempVar)
     dumper.write()
     testFile = open('prova.cpp', 'rt')
     lines = testFile.readlines()
     testFile.close()
     os.remove('prova.cpp')
     self.assertEqual(len(lines), 2 + 18)
     self.assertEqual(lines[13], '#include <map>\n')
     self.assertEqual(lines[14], '#include <string>\n')
Exemplo n.º 4
0
 def testTemplateFunctionsImpl(self):
     tempType = cxx_writer.TemplateType('std::map', [cxx_writer.intType, cxx_writer.stringType], 'map')
     tempVar = cxx_writer.Function('pippo', cxx_writer.Code('std::map<int, std::string> myMap;\nmyMap[5] = \"ccc\";\nreturn myMap;'), tempType, [], False, ['T'])
     dumper = cxx_writer.FileDumper('prova.cpp', False, indentSize = 4, lineWidth = 80)
     dumper.addMember(tempVar)
     dumper.write()
     testFile = open('prova.cpp', 'rt')
     lines = testFile.readlines()
     testFile.close()
     os.remove('prova.cpp')
     self.assertEqual(len(lines), 2 + 14)
     self.assertEqual(lines[11], '#include <map>\n')
     self.assertEqual(lines[12], '#include <string>\n')
Exemplo n.º 5
0
 def testDumpTemplateClassImpl(self):
     intDecl = cxx_writer.intType
     stringDecl = cxx_writer.stringType
     privateVar = cxx_writer.Attribute('pippo', intDecl, 'private')
     emptyBody = cxx_writer.Code('')
     publicConstr = cxx_writer.Constructor(emptyBody, 'public', [], ['std::string()'])
     classDecl = cxx_writer.ClassDeclaration('MyClass', [privateVar], [stringDecl], ['T'])
     classDecl.addConstructor(publicConstr)
     dumper = cxx_writer.FileDumper('prova.cpp', False, indentSize = 4, lineWidth = 80)
     dumper.addMember(classDecl)
     dumper.write()
     testFile = open('prova.cpp', 'rt')
     lines = testFile.readlines()
     testFile.close()
     os.remove('prova.cpp')
     self.assertEqual(len(lines), 1 + 14)
Exemplo n.º 6
0
 def testDumpClassImpl(self):
     intDecl = cxx_writer.intType
     privateVar = cxx_writer.Attribute('pippo', intDecl, 'private')
     emptyBody = cxx_writer.Code('')
     publicConstr = cxx_writer.Constructor(emptyBody, 'public')
     classDecl = cxx_writer.ClassDeclaration('MyClass', [privateVar])
     classDecl.addConstructor(publicConstr)
     dumper = cxx_writer.FileDumper('prova.cpp', False, indentSize = 4, lineWidth = 80)
     dumper.addMember(classDecl)
     dumper.write()
     testFile = open('prova.cpp', 'rt')
     lines = testFile.readlines()
     testFile.close()
     os.remove('prova.cpp')
     self.assertEqual(len(lines), 3 + 14)
     self.assertEqual(lines[12], 'MyClass::MyClass() {\n')
     self.assertEqual(lines[13], '\n')
     self.assertEqual(lines[14], '} // MyClass()\n')
Exemplo n.º 7
0
 def testTemplateFunctionsHeader(self):
     tempType = cxx_writer.TemplateType('std::map', [cxx_writer.intType, cxx_writer.stringType], 'map')
     tempVar = cxx_writer.Function('pippo', cxx_writer.Code('std::map<int, std::string> myMap;\nmyMap[5] = \"ccc\";\nreturn myMap;'), tempType, [], False, False, ['T'])
     dumper = cxx_writer.FileDumper('prova.cpp', True, indentSize = 4, lineWidth = 80)
     dumper.addMember(tempVar)
     dumper.write()
     testFile = open('prova.cpp', 'rt')
     lines = testFile.readlines()
     testFile.close()
     os.remove('prova.cpp')
     self.assertEqual(len(lines), 7 + 18)
     self.assertEqual(lines[13], '#include <map>\n')
     self.assertEqual(lines[14], '#include <string>\n')
     self.assertEqual(lines[17], 'template <typename T> std::map<int, std::string> pippo() {\n')
     self.assertEqual(lines[18], '    std::map<int, std::string> myMap;\n')
     self.assertEqual(lines[19], '    myMap[5] = \"ccc\";\n')
     self.assertEqual(lines[20], '    return myMap;\n')
     self.assertEqual(lines[21], '} // pippo()\n')
Exemplo n.º 8
0
 def testDumpClassHeader(self):
     intDecl = cxx_writer.intType
     privateVar = cxx_writer.Attribute('pippo', intDecl, 'private')
     emptyBody = cxx_writer.Code('')
     publicConstr = cxx_writer.Constructor(emptyBody, 'public')
     classDecl = cxx_writer.ClassDeclaration('MyClass', [privateVar])
     classDecl.addConstructor(publicConstr)
     dumper = cxx_writer.FileDumper('prova.cpp', True, indentSize = 4, lineWidth = 80)
     dumper.addMember(classDecl)
     dumper.write()
     testFile = open('prova.cpp', 'rt')
     lines = testFile.readlines()
     testFile.close()
     os.remove('prova.cpp')
     self.assertEqual(len(lines), 8 + 18)
     self.assertEqual(lines[14], 'class MyClass {\n')
     self.assertEqual(lines[15], '    public:\n')
     self.assertEqual(lines[16], '    MyClass();\n')
     self.assertEqual(lines[17], '\n')
     self.assertEqual(lines[18], '    private:\n')
     self.assertEqual(lines[19], '    int pippo;\n')
     self.assertEqual(lines[20], '\n')
     self.assertEqual(lines[21], '}; // class MyClass\n')