Mercurial > hg > orthanc-stone
comparison Resources/CodeGeneration/stonegentool_test.py @ 687:342f3e04bfa9 am-dev
CodeGen: test cleanup + all working again + using same yaml and stimuli files
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Thu, 16 May 2019 17:51:17 +0200 |
parents | 0d42bda615a8 |
children |
comparison
equal
deleted
inserted
replaced
686:0d42bda615a8 | 687:342f3e04bfa9 |
---|---|
85 self.assertEqual(ok4,True) | 85 self.assertEqual(ok4,True) |
86 self.assertEqual(a4,"map") | 86 self.assertEqual(a4,"map") |
87 self.assertEqual(b4,["int","vector<string>"]) | 87 self.assertEqual(b4,["int","vector<string>"]) |
88 | 88 |
89 def test_ParseSchema(self): | 89 def test_ParseSchema(self): |
90 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'test1.yaml') | 90 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml') |
91 obj = LoadSchema(fn) | 91 obj = LoadSchema(fn) |
92 # we're happy if it does not crash :) | 92 # we're happy if it does not crash :) |
93 CheckSchemaSchema(obj) | 93 CheckSchemaSchema(obj) |
94 | 94 |
95 def test_ComputeRequiredDeclarationOrder(self): | 95 def test_ComputeRequiredDeclarationOrder(self): |
96 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'test1.yaml') | 96 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml') |
97 obj = LoadSchema(fn) | 97 obj = LoadSchema(fn) |
98 genOrder: str = ComputeRequiredDeclarationOrder(obj) | 98 genOrder: str = ComputeRequiredDeclarationOrder(obj) |
99 self.assertEqual(5,len(genOrder)) | 99 self.assertEqual(5,len(genOrder)) |
100 self.assertEqual("A",genOrder[0]) | 100 self.assertEqual("A",genOrder[0]) |
101 self.assertEqual("B",genOrder[1]) | 101 self.assertEqual("B",genOrder[1]) |
108 # obj = LoadSchema(fn) | 108 # obj = LoadSchema(fn) |
109 # (_,genc,_) = ProcessSchema(obj) | 109 # (_,genc,_) = ProcessSchema(obj) |
110 | 110 |
111 def test_genEnums(self): | 111 def test_genEnums(self): |
112 self.maxDiff = None | 112 self.maxDiff = None |
113 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'test1.yaml') | 113 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml') |
114 obj = LoadSchema(fn) | 114 obj = LoadSchema(fn) |
115 genOrder: str = ComputeRequiredDeclarationOrder(obj) | 115 genOrder: str = ComputeRequiredDeclarationOrder(obj) |
116 processedSchema = ProcessSchema(obj, genOrder) | 116 processedSchema = ProcessSchema(obj, genOrder) |
117 self.assertTrue('rootName' in processedSchema) | 117 self.assertTrue('rootName' in processedSchema) |
118 | 118 |
125 | 125 |
126 self.assertTrue('C' in structs) | 126 self.assertTrue('C' in structs) |
127 self.assertTrue('someBs' in structs['C']['fields']) | 127 self.assertTrue('someBs' in structs['C']['fields']) |
128 self.assertTrue('CrispType' in enums) | 128 self.assertTrue('CrispType' in enums) |
129 self.assertTrue('Message1' in structs) | 129 self.assertTrue('Message1' in structs) |
130 self.assertEqual('int32', structs['Message1']['fields']['a'].type) | 130 self.assertEqual('int32', structs['Message1']['fields']['memberInt32'].type) |
131 self.assertEqual('string', structs['Message1']['fields']['b'].type) | 131 self.assertEqual('string', structs['Message1']['fields']['memberString'].type) |
132 self.assertEqual('EnumMonth0', structs['Message1']['fields']['c'].type) | 132 self.assertEqual('EnumMonth0', structs['Message1']['fields']['memberEnumMonth'].type) |
133 self.assertEqual('bool', structs['Message1']['fields']['d'].type) | 133 self.assertEqual('bool', structs['Message1']['fields']['memberBool'].type) |
134 self.assertEqual('float32', structs['Message1']['fields']['memberFloat32'].type) | |
135 self.assertEqual('float64', structs['Message1']['fields']['memberFloat64'].type) | |
134 | 136 |
135 def test_GenerateTypeScriptEnums(self): | 137 def test_GenerateTypeScriptEnums(self): |
136 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'test1.yaml') | 138 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml') |
137 tdico = GetTemplatingDictFromSchemaFilename(fn) | 139 tdico = GetTemplatingDictFromSchemaFilename(fn) |
138 template = Template(""" // end of generic methods | 140 template = Template(""" // end of generic methods |
139 {% for enum in enums%} export enum {{enum['name']}} { | 141 {% for enum in enums%} export enum {{enum['name']}} { |
140 {% for key in enum['fields']%} {{key}}, | 142 {% for key in enum['fields']%} {{key}}, |
141 {%endfor%} }; | 143 {%endfor%} }; |
165 | 167 |
166 """ | 168 """ |
167 self.assertEqual(renderedCodeRef,renderedCode) | 169 self.assertEqual(renderedCodeRef,renderedCode) |
168 | 170 |
169 def test_GenerateCplusplusEnums(self): | 171 def test_GenerateCplusplusEnums(self): |
170 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'test1.yaml') | 172 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml') |
171 tdico = GetTemplatingDictFromSchemaFilename(fn) | 173 tdico = GetTemplatingDictFromSchemaFilename(fn) |
172 template = Template(""" // end of generic methods | 174 template = Template(""" // end of generic methods |
173 {% for enum in enums%} enum {{enum['name']}} { | 175 {% for enum in enums%} enum {{enum['name']}} { |
174 {% for key in enum['fields']%} {{key}}, | 176 {% for key in enum['fields']%} {{key}}, |
175 {%endfor%} }; | 177 {%endfor%} }; |
199 | 201 |
200 """ | 202 """ |
201 self.assertEqual(renderedCodeRef,renderedCode) | 203 self.assertEqual(renderedCodeRef,renderedCode) |
202 | 204 |
203 def test_generateTsStructType(self): | 205 def test_generateTsStructType(self): |
204 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'test1.yaml') | 206 fn = os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml') |
205 tdico = GetTemplatingDictFromSchemaFilename(fn) | 207 tdico = GetTemplatingDictFromSchemaFilename(fn) |
206 ref = """ export class Message1 { | 208 |
207 a: number; | |
208 b: string; | |
209 c: EnumMonth0; | |
210 d: boolean; | |
211 e: number; | |
212 f: number; | |
213 | |
214 public StoneSerialize(): string { | |
215 let container: object = {}; | |
216 container['type'] = 'VsolStuff.Message1'; | |
217 container['value'] = this; | |
218 return JSON.stringify(container); | |
219 } | |
220 }; | |
221 | |
222 export class Message2 { | |
223 toto: string; | |
224 tata: Message1[]; | |
225 tutu: string[]; | |
226 titi: Map<string, string>; | |
227 lulu: Map<string, Message1>; | |
228 | |
229 constructor() | |
230 { | |
231 this.tata = new Array<Message1>(); | |
232 this.tutu = new Array<string>(); | |
233 this.titi = new Map<string, string>(); | |
234 this.lulu = new Map<string, Message1>(); | |
235 } | |
236 | |
237 public StoneSerialize(): string { | |
238 let container: object = {}; | |
239 container['type'] = 'VsolStuff.Message2'; | |
240 container['value'] = this; | |
241 return JSON.stringify(container); | |
242 } | |
243 }; | |
244 | |
245 """ | |
246 # template = MakeTemplate(""" // end of generic methods | 209 # template = MakeTemplate(""" // end of generic methods |
247 # {% for struct in struct%} export class {{struct['name']}} { | 210 # {% for struct in struct%} export class {{struct['name']}} { |
248 # {% for key in struct['fields']%} {{key}}:{{struct['fields'][key]}}, | 211 # {% for key in struct['fields']%} {{key}}:{{struct['fields'][key]}}, |
249 # {% endfor %} | 212 # {% endfor %} |
250 # constructor() { | 213 # constructor() { |
291 this.movies = new Array<MovieType>(); | 254 this.movies = new Array<MovieType>(); |
292 } | 255 } |
293 | 256 |
294 public StoneSerialize(): string { | 257 public StoneSerialize(): string { |
295 let container: object = {}; | 258 let container: object = {}; |
296 container['type'] = 'VsolMessages.A'; | 259 container['type'] = 'TestStoneCodeGen.A'; |
297 container['value'] = this; | 260 container['value'] = this; |
298 return JSON.stringify(container); | 261 return JSON.stringify(container); |
299 } | 262 } |
300 }; | 263 }; |
301 | 264 |
308 this.someInts = new Array<number>(); | 271 this.someInts = new Array<number>(); |
309 } | 272 } |
310 | 273 |
311 public StoneSerialize(): string { | 274 public StoneSerialize(): string { |
312 let container: object = {}; | 275 let container: object = {}; |
313 container['type'] = 'VsolMessages.B'; | 276 container['type'] = 'TestStoneCodeGen.B'; |
314 container['value'] = this; | 277 container['value'] = this; |
315 return JSON.stringify(container); | 278 return JSON.stringify(container); |
316 } | 279 } |
317 }; | 280 }; |
318 | 281 |
325 this.ddd = new Array<string>(); | 288 this.ddd = new Array<string>(); |
326 } | 289 } |
327 | 290 |
328 public StoneSerialize(): string { | 291 public StoneSerialize(): string { |
329 let container: object = {}; | 292 let container: object = {}; |
330 container['type'] = 'VsolMessages.C'; | 293 container['type'] = 'TestStoneCodeGen.C'; |
331 container['value'] = this; | 294 container['value'] = this; |
332 return JSON.stringify(container); | 295 return JSON.stringify(container); |
333 } | 296 } |
334 }; | 297 }; |
335 | 298 |
336 export class Message1 { | 299 export class Message1 { |
337 a:number; | 300 memberInt32:number; |
338 b:string; | 301 memberString:string; |
339 c:EnumMonth0; | 302 memberEnumMonth:EnumMonth0; |
340 d:boolean; | 303 memberBool:boolean; |
341 e:number; | 304 memberFloat32:number; |
342 f:number; | 305 memberFloat64:number; |
343 | 306 |
344 constructor() { | 307 constructor() { |
345 this.a = new number(); | 308 this.memberInt32 = new number(); |
346 this.b = new string(); | 309 this.memberString = new string(); |
347 this.c = new EnumMonth0(); | 310 this.memberEnumMonth = new EnumMonth0(); |
348 this.d = new boolean(); | 311 this.memberBool = new boolean(); |
349 this.e = new number(); | 312 this.memberFloat32 = new number(); |
350 this.f = new number(); | 313 this.memberFloat64 = new number(); |
351 } | 314 } |
352 | 315 |
353 public StoneSerialize(): string { | 316 public StoneSerialize(): string { |
354 let container: object = {}; | 317 let container: object = {}; |
355 container['type'] = 'VsolMessages.Message1'; | 318 container['type'] = 'TestStoneCodeGen.Message1'; |
356 container['value'] = this; | 319 container['value'] = this; |
357 return JSON.stringify(container); | 320 return JSON.stringify(container); |
358 } | 321 } |
359 }; | 322 }; |
360 | 323 |
361 export class Message2 { | 324 export class Message2 { |
362 toto:string; | 325 memberString:string; |
363 tata:Array<Message1>; | 326 memberStringWithDefault:string; |
364 tutu:Array<string>; | 327 memberVectorOfMessage1:Array<Message1>; |
365 titi:Map<string, string>; | 328 memberVectorOfString:Array<string>; |
366 lulu:Map<string, Message1>; | 329 memberMapStringString:Map<string, string>; |
367 movieType:MovieType; | 330 memberMapStringStruct:Map<string, Message1>; |
368 | 331 memberMapEnumFloat:Map<CrispType, number>; |
369 constructor() { | 332 memberEnumMovieType:MovieType; |
370 this.toto = new string(); | 333 memberJson:Object; |
371 this.tata = new Array<Message1>(); | 334 |
372 this.tutu = new Array<string>(); | 335 constructor() { |
373 this.titi = new Map<string, string>(); | 336 this.memberString = new string(); |
374 this.lulu = new Map<string, Message1>(); | 337 this.memberStringWithDefault = new string(); |
375 this.movieType = new MovieType(); | 338 this.memberVectorOfMessage1 = new Array<Message1>(); |
376 } | 339 this.memberVectorOfString = new Array<string>(); |
377 | 340 this.memberMapStringString = new Map<string, string>(); |
378 public StoneSerialize(): string { | 341 this.memberMapStringStruct = new Map<string, Message1>(); |
379 let container: object = {}; | 342 this.memberMapEnumFloat = new Map<CrispType, number>(); |
380 container['type'] = 'VsolMessages.Message2'; | 343 this.memberEnumMovieType = new MovieType(); |
344 this.memberJson = new Object(); | |
345 } | |
346 | |
347 public StoneSerialize(): string { | |
348 let container: object = {}; | |
349 container['type'] = 'TestStoneCodeGen.Message2'; | |
381 container['value'] = this; | 350 container['value'] = this; |
382 return JSON.stringify(container); | 351 return JSON.stringify(container); |
383 } | 352 } |
384 }; | 353 }; |
385 | 354 |
388 self.maxDiff = None | 357 self.maxDiff = None |
389 self.assertEqual(renderedCodeRef, renderedCode) | 358 self.assertEqual(renderedCodeRef, renderedCode) |
390 | 359 |
391 def test_generateWholeTsFile(self): | 360 def test_generateWholeTsFile(self): |
392 schemaFile = \ | 361 schemaFile = \ |
393 os.path.join(os.path.dirname(__file__), 'test_data', 'test1.yaml') | 362 os.path.join(os.path.dirname(__file__), 'test_data', 'testTestStoneCodeGen.yaml') |
394 tdico = GetTemplatingDictFromSchemaFilename(schemaFile) | 363 tdico = GetTemplatingDictFromSchemaFilename(schemaFile) |
395 tsTemplateFile = \ | 364 tsTemplateFile = \ |
396 os.path.join(os.path.dirname(__file__), 'template.in.ts.j2') | 365 os.path.join(os.path.dirname(__file__), 'template.in.ts.j2') |
397 template = MakeTemplateFromFile(tsTemplateFile) | 366 template = MakeTemplateFromFile(tsTemplateFile) |
398 renderedCode = template.render(**tdico) | 367 renderedCode = template.render(**tdico) |