Mercurial > hg > orthanc-stone
diff Resources/CodeGeneration/stonegentool_test.py @ 485:772516adcbf6 bgo-commands-codegen
Ongoing work on code generation. Enums and structs OK in ts and cpp
author | bgo-osimis |
---|---|
date | Fri, 15 Feb 2019 12:07:09 +0100 |
parents | f58fe38c8c04 |
children | 8e40355a172b |
line wrap: on
line diff
--- a/Resources/CodeGeneration/stonegentool_test.py Thu Feb 14 20:58:42 2019 +0100 +++ b/Resources/CodeGeneration/stonegentool_test.py Fri Feb 15 12:07:09 2019 +0100 @@ -2,6 +2,12 @@ EatToken,SplitListOfTypes,ParseTemplateType,LoadSchema,CheckSchemaSchema,ProcessSchema import unittest import os +import re + +def RemoveDateTimeLine(s : str): + # regex are non-multiline by default, and $ does NOT match the end of the line + s2 = re.sub(r"^// autogenerated by stonegentool on .*\n","",s) + return s2 class TestStonegentool(unittest.TestCase): def test_EatToken_empty(self): @@ -89,18 +95,87 @@ def test_GenOrderQueue(self): fn = os.path.join(os.path.dirname(__file__), 'test', 'test1.jsonc') obj = LoadSchema(fn) - genOrderQueue, outputStreams = ProcessSchema(obj) + genOrderQueue:str + _, _, genOrderQueue = ProcessSchema(obj) self.assertEqual(3,len(genOrderQueue)) self.assertEqual("A",genOrderQueue[0]) - self.assertEqual("B",genOrderQueue[0]) - self.assertEqual("C",genOrderQueue[0]) - #print(f"genOrderQueue = {genOrderQueue}") - #print("") + self.assertEqual("B",genOrderQueue[1]) + self.assertEqual("C",genOrderQueue[2]) def test_GenerateTypeScriptEnumeration(self): fn = os.path.join(os.path.dirname(__file__), 'test', 'test1.jsonc') obj = LoadSchema(fn) - (rootName,outputStreams) = ProcessSchema(obj) + (_,outputStreams,_) = ProcessSchema(obj) + + tsRef = """// autogenerated by stonegentool on Fri Feb 15 07:36:51 2019 +enum MovieType +{ + Romcom, + Horror, + ScienceFiction, + Vegetables +}; + +class A +{ + public Array<string> someStrings; + public Array<number> someInts2; +}; + +class B +{ + public Array<A> someAs; + public Array<number> someInts; +}; + +class C +{ + public Array<B> someBs; + public Array<D> ddd; +}; + +""" + tsRef = RemoveDateTimeLine(tsRef) + tsActual = RemoveDateTimeLine(outputStreams['ts'].getvalue()) + + self.assertEqual(tsActual,tsRef) + + cppRef="""// autogenerated by stonegentool on Fri Feb 15 07:36:51 2019 +#include <cstdint> +#include <string> +#include <vector> +#include <map> +enum MovieType +{ + Romcom, + Horror, + ScienceFiction, + Vegetables +}; + +struct A +{ + std::vector<string> someStrings; + std::vector<int32_t> someInts2; +}; + +struct B +{ + std::vector<A> someAs; + std::vector<int32_t> someInts; +}; + +struct C +{ + std::vector<B> someBs; + std::vector<D> ddd; +}; + +""" + cppRef = RemoveDateTimeLine(cppRef) + cppActual = RemoveDateTimeLine(outputStreams['cpp'].getvalue()) + + self.assertEqual(cppActual,cppRef) pass def test_GenerateCppEnumeration(self): @@ -132,5 +207,4 @@ # s.split(2) if __name__ == '__main__': - print("") unittest.main()