]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/UPT/UnitTest/CommentGeneratingUnitTest.py
BaseTools: Clean up source files
[mirror_edk2.git] / BaseTools / Source / Python / UPT / UnitTest / CommentGeneratingUnitTest.py
1 ## @file
2 # This file contain unit test for CommentParsing
3 #
4 # Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
5 #
6 # This program and the accompanying materials are licensed and made available
7 # under the terms and conditions of the BSD License which accompanies this
8 # distribution. The full text of the license may be found at
9 # http://opensource.org/licenses/bsd-license.php
10 #
11 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 import os
15 import unittest
16
17 import Logger.Log as Logger
18 from GenMetaFile.GenInfFile import GenGuidSections
19 from GenMetaFile.GenInfFile import GenProtocolPPiSections
20 from GenMetaFile.GenInfFile import GenPcdSections
21 from GenMetaFile.GenInfFile import GenSpecialSections
22 from Library.CommentGenerating import GenGenericCommentF
23 from Library.CommentGenerating import _GetHelpStr
24 from Object.POM.CommonObject import TextObject
25 from Object.POM.CommonObject import GuidObject
26 from Object.POM.CommonObject import ProtocolObject
27 from Object.POM.CommonObject import PpiObject
28 from Object.POM.CommonObject import PcdObject
29 from Object.POM.ModuleObject import HobObject
30
31 from Library.StringUtils import GetSplitValueList
32 from Library.DataType import TAB_SPACE_SPLIT
33 from Library.DataType import TAB_LANGUAGE_EN_US
34 from Library.DataType import TAB_LANGUAGE_ENG
35 from Library.DataType import ITEM_UNDEFINED
36 from Library.DataType import TAB_INF_FEATURE_PCD
37 from Library import GlobalData
38 from Library.Misc import CreateDirectory
39
40 #
41 # Test _GetHelpStr
42 #
43 class _GetHelpStrTest(unittest.TestCase):
44 def setUp(self):
45 pass
46
47 def tearDown(self):
48 pass
49
50 #
51 # Normal case1: have one help text object with Lang = 'en-US'
52 #
53 def testNormalCase1(self):
54 HelpStr = 'Hello world'
55 HelpTextObj = TextObject()
56 HelpTextObj.SetLang(TAB_LANGUAGE_EN_US)
57 HelpTextObj.SetString(HelpStr)
58
59 HelpTextList = [HelpTextObj]
60 Result = _GetHelpStr(HelpTextList)
61 self.assertEqual(Result, HelpStr)
62
63 #
64 # Normal case2: have two help text object with Lang = 'en-US' and other
65 #
66 def testNormalCase2(self):
67 HelpStr = 'Hello world'
68 HelpTextObj = TextObject()
69 HelpTextObj.SetLang(TAB_LANGUAGE_ENG)
70 HelpTextObj.SetString(HelpStr)
71
72 HelpTextList = [HelpTextObj]
73
74 ExpectedStr = 'Hello world1'
75 HelpTextObj = TextObject()
76 HelpTextObj.SetLang(TAB_LANGUAGE_EN_US)
77 HelpTextObj.SetString(ExpectedStr)
78
79 HelpTextList.append(HelpTextObj)
80
81 Result = _GetHelpStr(HelpTextList)
82 self.assertEqual(Result, ExpectedStr)
83
84 #
85 # Normal case3: have two help text object with Lang = '' and 'eng'
86 #
87 def testNormalCase3(self):
88 HelpStr = 'Hello world'
89 HelpTextObj = TextObject()
90 HelpTextObj.SetLang('')
91 HelpTextObj.SetString(HelpStr)
92
93 HelpTextList = [HelpTextObj]
94
95 ExpectedStr = 'Hello world1'
96 HelpTextObj = TextObject()
97 HelpTextObj.SetLang(TAB_LANGUAGE_ENG)
98 HelpTextObj.SetString(ExpectedStr)
99
100 HelpTextList.append(HelpTextObj)
101
102 Result = _GetHelpStr(HelpTextList)
103 self.assertEqual(Result, ExpectedStr)
104
105 #
106 # Normal case4: have two help text object with Lang = '' and ''
107 #
108 def testNormalCase4(self):
109
110 ExpectedStr = 'Hello world1'
111 HelpTextObj = TextObject()
112 HelpTextObj.SetLang(TAB_LANGUAGE_ENG)
113 HelpTextObj.SetString(ExpectedStr)
114 HelpTextList = [HelpTextObj]
115
116 HelpStr = 'Hello world'
117 HelpTextObj = TextObject()
118 HelpTextObj.SetLang('')
119 HelpTextObj.SetString(HelpStr)
120 HelpTextList.append(HelpTextObj)
121
122 Result = _GetHelpStr(HelpTextList)
123 self.assertEqual(Result, ExpectedStr)
124
125 #
126 # Normal case: have three help text object with Lang = '','en', 'en-US'
127 #
128 def testNormalCase5(self):
129
130 ExpectedStr = 'Hello world1'
131 HelpTextObj = TextObject()
132 HelpTextObj.SetLang(TAB_LANGUAGE_EN_US)
133 HelpTextObj.SetString(ExpectedStr)
134 HelpTextList = [HelpTextObj]
135
136 HelpStr = 'Hello unknown world'
137 HelpTextObj = TextObject()
138 HelpTextObj.SetLang('')
139 HelpTextObj.SetString(HelpStr)
140 HelpTextList.append(HelpTextObj)
141
142 HelpStr = 'Hello mysterious world'
143 HelpTextObj = TextObject()
144 HelpTextObj.SetLang('')
145 HelpTextObj.SetString(HelpStr)
146 HelpTextList.append(HelpTextObj)
147
148 Result = _GetHelpStr(HelpTextList)
149 self.assertEqual(Result, ExpectedStr)
150
151 HelpTextList.sort()
152 self.assertEqual(Result, ExpectedStr)
153
154 HelpTextList.sort(reverse=True)
155 self.assertEqual(Result, ExpectedStr)
156
157
158 #
159 # Test GenGuidSections
160 #
161 class GenGuidSectionsTest(unittest.TestCase):
162 def setUp(self):
163 pass
164
165 def tearDown(self):
166 pass
167
168 #
169 # This is the API to generate Guid Object to help UnitTest
170 #
171 def GuidFactory(self, CName, FFE, Usage, GuidType, VariableName, HelpStr):
172 Guid = GuidObject()
173 Guid.SetCName(CName)
174 Guid.SetFeatureFlag(FFE)
175 Guid.SetGuidTypeList([GuidType])
176 Guid.SetUsage(Usage)
177 Guid.SetVariableName(VariableName)
178
179 HelpTextObj = TextObject()
180 HelpTextObj.SetLang('')
181 HelpTextObj.SetString(HelpStr)
182 Guid.SetHelpTextList([HelpTextObj])
183
184 return Guid
185
186 #
187 # Normal case: have two GuidObject
188 #
189 def testNormalCase1(self):
190 GuidList = []
191
192 CName = 'Guid1'
193 FFE = 'FFE1'
194 Usage = 'PRODUCES'
195 GuidType = 'Event'
196 VariableName = ''
197 HelpStr = 'Usage comment line 1'
198 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
199 VariableName, HelpStr)
200 GuidList.append(Guid1)
201
202 CName = 'Guid1'
203 FFE = 'FFE1'
204 Usage = 'CONSUMES'
205 GuidType = 'Variable'
206 VariableName = ''
207 HelpStr = 'Usage comment line 2'
208 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
209 VariableName, HelpStr)
210 GuidList.append(Guid1)
211
212 Result = GenGuidSections(GuidList)
213 Expected = '''[Guids]
214 ## PRODUCES ## Event # Usage comment line 1
215 ## CONSUMES ## Variable: # Usage comment line 2
216 Guid1|FFE1'''
217 self.assertEqual(Result.strip(), Expected)
218
219 #
220 # Normal case: have two GuidObject
221 #
222 def testNormalCase2(self):
223 GuidList = []
224
225 CName = 'Guid1'
226 FFE = 'FFE1'
227 Usage = 'PRODUCES'
228 GuidType = 'Event'
229 VariableName = ''
230 HelpStr = 'Usage comment line 1'
231 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
232 VariableName, HelpStr)
233 GuidList.append(Guid1)
234
235 CName = 'Guid1'
236 FFE = 'FFE1'
237 Usage = 'UNDEFINED'
238 GuidType = 'UNDEFINED'
239 VariableName = ''
240 HelpStr = 'Generic comment line 1\n Generic comment line 2'
241 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
242 VariableName, HelpStr)
243 GuidList.append(Guid1)
244
245 Result = GenGuidSections(GuidList)
246 Expected = '''[Guids]
247 ## PRODUCES ## Event # Usage comment line 1
248 # Generic comment line 1
249 # Generic comment line 2
250 Guid1|FFE1'''
251
252 self.assertEqual(Result.strip(), Expected)
253
254 #
255 # Normal case: have two GuidObject, one help goes to generic help,
256 # the other go into usage comment
257 #
258 def testNormalCase3(self):
259 GuidList = []
260
261 CName = 'Guid1'
262 FFE = 'FFE1'
263 Usage = 'UNDEFINED'
264 GuidType = 'UNDEFINED'
265 VariableName = ''
266 HelpStr = 'Generic comment'
267 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
268 VariableName, HelpStr)
269 GuidList.append(Guid1)
270
271 CName = 'Guid1'
272 FFE = 'FFE1'
273 Usage = 'PRODUCES'
274 GuidType = 'Event'
275 VariableName = ''
276 HelpStr = 'Usage comment line 1'
277 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
278 VariableName, HelpStr)
279 GuidList.append(Guid1)
280
281 Result = GenGuidSections(GuidList)
282 Expected = '''[Guids]
283 # Generic comment
284 ## PRODUCES ## Event # Usage comment line 1
285 Guid1|FFE1'''
286
287 self.assertEqual(Result.strip(), Expected)
288
289 #
290 # Normal case: have one GuidObject, generic comment multiple lines
291 #
292 def testNormalCase5(self):
293 GuidList = []
294
295 CName = 'Guid1'
296 FFE = 'FFE1'
297 Usage = 'UNDEFINED'
298 GuidType = 'UNDEFINED'
299 VariableName = ''
300 HelpStr = 'Generic comment line1 \n generic comment line 2'
301 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
302 VariableName, HelpStr)
303 GuidList.append(Guid1)
304
305 Result = GenGuidSections(GuidList)
306 Expected = '''[Guids]
307 # Generic comment line1
308 # generic comment line 2
309 Guid1|FFE1'''
310
311 self.assertEqual(Result.strip(), Expected)
312
313 #
314 # Normal case: have one GuidObject, usage comment multiple lines
315 #
316 def testNormalCase6(self):
317 GuidList = []
318
319 CName = 'Guid1'
320 FFE = 'FFE1'
321 Usage = 'PRODUCES'
322 GuidType = 'Event'
323 VariableName = ''
324 HelpStr = 'Usage comment line 1\n Usage comment line 2'
325 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
326 VariableName, HelpStr)
327 GuidList.append(Guid1)
328
329 Result = GenGuidSections(GuidList)
330 Expected = '''[Guids]
331 Guid1|FFE1 ## PRODUCES ## Event # Usage comment line 1 Usage comment line 2
332 '''
333 self.assertEqual(Result.strip(), Expected.strip())
334
335 #
336 # Normal case: have one GuidObject, usage comment one line
337 #
338 def testNormalCase7(self):
339 GuidList = []
340
341 CName = 'Guid1'
342 FFE = 'FFE1'
343 Usage = 'UNDEFINED'
344 GuidType = 'UNDEFINED'
345 VariableName = ''
346 HelpStr = 'Usage comment line 1'
347 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
348 VariableName, HelpStr)
349 GuidList.append(Guid1)
350
351 Result = GenGuidSections(GuidList)
352 Expected = '''[Guids]
353 Guid1|FFE1 # Usage comment line 1
354 '''
355 self.assertEqual(Result.strip(), Expected.strip())
356
357 #
358 # Normal case: have two GuidObject
359 #
360 def testNormalCase8(self):
361 GuidList = []
362
363 CName = 'Guid1'
364 FFE = 'FFE1'
365 Usage = 'PRODUCES'
366 GuidType = 'Event'
367 VariableName = ''
368 HelpStr = 'Usage comment line 1\n Usage comment line 2'
369 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
370 VariableName, HelpStr)
371 GuidList.append(Guid1)
372
373 CName = 'Guid1'
374 FFE = 'FFE1'
375 Usage = 'PRODUCES'
376 GuidType = 'Event'
377 VariableName = ''
378 HelpStr = 'Usage comment line 3'
379 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
380 VariableName, HelpStr)
381 GuidList.append(Guid1)
382
383 Result = GenGuidSections(GuidList)
384 Expected = '''[Guids]
385 ## PRODUCES ## Event # Usage comment line 1 Usage comment line 2
386 ## PRODUCES ## Event # Usage comment line 3
387 Guid1|FFE1
388 '''
389 self.assertEqual(Result.strip(), Expected.strip())
390
391 #
392 # Normal case: have no GuidObject
393 #
394 def testNormalCase9(self):
395 GuidList = []
396
397 Result = GenGuidSections(GuidList)
398 Expected = ''
399 self.assertEqual(Result.strip(), Expected.strip())
400
401 #
402 # Normal case: have one GuidObject with no comment generated
403 #
404 def testNormalCase10(self):
405 GuidList = []
406
407 CName = 'Guid1'
408 FFE = 'FFE1'
409 Usage = 'UNDEFINED'
410 GuidType = 'UNDEFINED'
411 VariableName = ''
412 HelpStr = ''
413 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
414 VariableName, HelpStr)
415 GuidList.append(Guid1)
416
417 Result = GenGuidSections(GuidList)
418 Expected = '''[Guids]
419 Guid1|FFE1
420 '''
421 self.assertEqual(Result.strip(), Expected.strip())
422
423 #
424 # Normal case: have three GuidObject
425 #
426 def testNormalCase11(self):
427 GuidList = []
428
429 CName = 'Guid1'
430 FFE = 'FFE1'
431 Usage = 'UNDEFINED'
432 GuidType = 'UNDEFINED'
433 VariableName = ''
434 HelpStr = 'general comment line 1'
435 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
436 VariableName, HelpStr)
437 GuidList.append(Guid1)
438
439 CName = 'Guid1'
440 FFE = 'FFE1'
441 Usage = 'PRODUCES'
442 GuidType = 'Event'
443 VariableName = ''
444 HelpStr = 'Usage comment line 3'
445 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
446 VariableName, HelpStr)
447 GuidList.append(Guid1)
448
449 CName = 'Guid1'
450 FFE = 'FFE1'
451 Usage = 'UNDEFINED'
452 GuidType = 'UNDEFINED'
453 VariableName = ''
454 HelpStr = 'general comment line 2'
455 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
456 VariableName, HelpStr)
457 GuidList.append(Guid1)
458
459 Result = GenGuidSections(GuidList)
460 Expected = '''[Guids]
461 # general comment line 1
462 ## PRODUCES ## Event # Usage comment line 3
463 # general comment line 2
464 Guid1|FFE1
465 '''
466 self.assertEqual(Result.strip(), Expected.strip())
467
468 #
469 # Normal case: have three GuidObject, with Usage/Type and no help
470 #
471 def testNormalCase12(self):
472 GuidList = []
473
474 CName = 'Guid1'
475 FFE = 'FFE1'
476 Usage = 'PRODUCES'
477 GuidType = 'GUID'
478 VariableName = ''
479 HelpStr = ''
480 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
481 VariableName, HelpStr)
482 GuidList.append(Guid1)
483
484 CName = 'Guid1'
485 FFE = 'FFE1'
486 Usage = 'PRODUCES'
487 GuidType = 'Event'
488 VariableName = ''
489 HelpStr = ''
490 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
491 VariableName, HelpStr)
492 GuidList.append(Guid1)
493
494 CName = 'Guid1'
495 FFE = 'FFE1'
496 Usage = 'CONSUMES'
497 GuidType = 'Event'
498 VariableName = ''
499 HelpStr = ''
500 Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType,
501 VariableName, HelpStr)
502 GuidList.append(Guid1)
503
504 Result = GenGuidSections(GuidList)
505 Expected = '''[Guids]
506 ## PRODUCES ## GUID
507 ## PRODUCES ## Event
508 ## CONSUMES ## Event
509 Guid1|FFE1
510 '''
511 self.assertEqual(Result.strip(), Expected.strip())
512
513 #
514 # Test GenProtocolPPiSections
515 #
516 class GenProtocolPPiSectionsTest(unittest.TestCase):
517 def setUp(self):
518 pass
519
520 def tearDown(self):
521 pass
522
523 #
524 # This is the API to generate Protocol/Ppi Object to help UnitTest
525 #
526 def ObjectFactory(self, CName, FFE, Usage, Notify, HelpStr, IsProtocol):
527 if IsProtocol:
528 Object = ProtocolObject()
529 else:
530 Object = PpiObject()
531
532 Object.SetCName(CName)
533 Object.SetFeatureFlag(FFE)
534 Object.SetUsage(Usage)
535 Object.SetNotify(Notify)
536
537 HelpTextObj = TextObject()
538 HelpTextObj.SetLang('')
539 HelpTextObj.SetString(HelpStr)
540 Object.SetHelpTextList([HelpTextObj])
541
542 return Object
543
544 # Usage Notify Help INF Comment
545 #1 UNDEFINED true Present ## UNDEFINED ## NOTIFY # Help
546 #2 UNDEFINED true Not Present ## UNDEFINED ## NOTIFY
547 #3 UNDEFINED false Present ## UNDEFINED # Help
548 #4 UNDEFINED false Not Present ## UNDEFINED
549 #5 UNDEFINED Not Present Present # Help
550 #6 UNDEFINED Not Present Not Present <empty>
551 #7 Other true Present ## Other ## NOTIFY # Help
552 #8 Other true Not Present ## Other ## NOTIFY
553 #9 Other false Present ## Other # Help
554 #A Other false Not Present ## Other
555 #B Other Not Present Present ## Other # Help
556 #C Other Not Present Not Present ## Other
557
558 def testNormalCase1(self):
559 ObjectList = []
560
561 CName = 'Guid1'
562 FFE = 'FFE1'
563
564 Usage = 'UNDEFINED'
565 Notify = True
566 HelpStr = 'Help'
567 IsProtocol = True
568 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
569 HelpStr, IsProtocol)
570 ObjectList.append(Object)
571
572
573 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
574 Expected = '''[Protocols]
575 Guid1|FFE1 ## UNDEFINED ## NOTIFY # Help'''
576 self.assertEqual(Result.strip(), Expected)
577
578 IsProtocol = False
579 ObjectList = []
580 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
581 HelpStr, IsProtocol)
582 ObjectList.append(Object)
583
584
585 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
586 Expected = '''[Ppis]
587 Guid1|FFE1 ## UNDEFINED ## NOTIFY # Help'''
588 self.assertEqual(Result.strip(), Expected)
589
590 def testNormalCase2(self):
591 ObjectList = []
592
593 CName = 'Guid1'
594 FFE = 'FFE1'
595
596 Usage = 'UNDEFINED'
597 Notify = True
598 HelpStr = ''
599 IsProtocol = True
600 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
601 HelpStr, IsProtocol)
602 ObjectList.append(Object)
603
604
605 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
606 Expected = '''[Protocols]
607 Guid1|FFE1 ## UNDEFINED ## NOTIFY'''
608 self.assertEqual(Result.strip(), Expected)
609
610 def testNormalCase3(self):
611 ObjectList = []
612
613 CName = 'Guid1'
614 FFE = 'FFE1'
615
616 Usage = 'UNDEFINED'
617 Notify = False
618 HelpStr = 'Help'
619 IsProtocol = True
620 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
621 HelpStr, IsProtocol)
622 ObjectList.append(Object)
623
624
625 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
626 Expected = '''[Protocols]
627 Guid1|FFE1 ## UNDEFINED # Help'''
628 self.assertEqual(Result.strip(), Expected)
629
630 def testNormalCase4(self):
631 ObjectList = []
632
633 CName = 'Guid1'
634 FFE = 'FFE1'
635
636 Usage = 'UNDEFINED'
637 Notify = False
638 HelpStr = ''
639 IsProtocol = True
640 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
641 HelpStr, IsProtocol)
642 ObjectList.append(Object)
643
644
645 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
646 Expected = '''[Protocols]
647 Guid1|FFE1 ## UNDEFINED'''
648 self.assertEqual(Result.strip(), Expected)
649
650 def testNormalCase5(self):
651 ObjectList = []
652
653 CName = 'Guid1'
654 FFE = 'FFE1'
655
656 Usage = 'UNDEFINED'
657 Notify = ''
658 HelpStr = 'Help'
659 IsProtocol = True
660 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
661 HelpStr, IsProtocol)
662 ObjectList.append(Object)
663
664
665 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
666 Expected = '''[Protocols]
667 Guid1|FFE1 # Help'''
668 self.assertEqual(Result.strip(), Expected)
669
670 def testNormalCase6(self):
671 ObjectList = []
672
673 CName = 'Guid1'
674 FFE = 'FFE1'
675
676 Usage = 'UNDEFINED'
677 Notify = ''
678 HelpStr = ''
679 IsProtocol = True
680 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
681 HelpStr, IsProtocol)
682 ObjectList.append(Object)
683
684
685 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
686 Expected = '''[Protocols]
687 Guid1|FFE1'''
688 self.assertEqual(Result.strip(), Expected)
689
690 def testNormalCase7(self):
691 ObjectList = []
692
693 CName = 'Guid1'
694 FFE = 'FFE1'
695
696 Usage = 'PRODUCES'
697 Notify = True
698 HelpStr = 'Help'
699 IsProtocol = True
700 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
701 HelpStr, IsProtocol)
702 ObjectList.append(Object)
703
704
705 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
706 Expected = '''[Protocols]
707 Guid1|FFE1 ## PRODUCES ## NOTIFY # Help'''
708 self.assertEqual(Result.strip(), Expected)
709
710 def testNormalCase8(self):
711 ObjectList = []
712
713 CName = 'Guid1'
714 FFE = 'FFE1'
715
716 Usage = 'PRODUCES'
717 Notify = True
718 HelpStr = ''
719 IsProtocol = True
720 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
721 HelpStr, IsProtocol)
722 ObjectList.append(Object)
723
724
725 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
726 Expected = '''[Protocols]
727 Guid1|FFE1 ## PRODUCES ## NOTIFY'''
728 self.assertEqual(Result.strip(), Expected)
729
730 def testNormalCase9(self):
731 ObjectList = []
732
733 CName = 'Guid1'
734 FFE = 'FFE1'
735
736 Usage = 'PRODUCES'
737 Notify = False
738 HelpStr = 'Help'
739 IsProtocol = True
740 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
741 HelpStr, IsProtocol)
742 ObjectList.append(Object)
743
744
745 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
746 Expected = '''[Protocols]
747 Guid1|FFE1 ## PRODUCES # Help'''
748 self.assertEqual(Result.strip(), Expected)
749
750 def testNormalCaseA(self):
751 ObjectList = []
752
753 CName = 'Guid1'
754 FFE = 'FFE1'
755
756 Usage = 'PRODUCES'
757 Notify = False
758 HelpStr = ''
759 IsProtocol = True
760 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
761 HelpStr, IsProtocol)
762 ObjectList.append(Object)
763
764
765 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
766 Expected = '''[Protocols]
767 Guid1|FFE1 ## PRODUCES'''
768 self.assertEqual(Result.strip(), Expected)
769
770 def testNormalCaseB(self):
771 ObjectList = []
772
773 CName = 'Guid1'
774 FFE = 'FFE1'
775
776 Usage = 'PRODUCES'
777 Notify = ''
778 HelpStr = 'Help'
779 IsProtocol = True
780 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
781 HelpStr, IsProtocol)
782 ObjectList.append(Object)
783
784
785 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
786 Expected = '''[Protocols]
787 Guid1|FFE1 ## PRODUCES # Help'''
788 self.assertEqual(Result.strip(), Expected)
789
790 def testNormalCaseC(self):
791 ObjectList = []
792
793 CName = 'Guid1'
794 FFE = 'FFE1'
795
796 Usage = 'PRODUCES'
797 Notify = ''
798 HelpStr = ''
799 IsProtocol = True
800 Object = self.ObjectFactory(CName, FFE, Usage, Notify,
801 HelpStr, IsProtocol)
802 ObjectList.append(Object)
803
804
805 Result = GenProtocolPPiSections(ObjectList, IsProtocol)
806 Expected = '''[Protocols]
807 Guid1|FFE1 ## PRODUCES'''
808 self.assertEqual(Result.strip(), Expected)
809
810 #
811 # Test GenPcdSections
812 #
813 class GenPcdSectionsTest(unittest.TestCase):
814 def setUp(self):
815 pass
816
817 def tearDown(self):
818 pass
819
820 #
821 # This is the API to generate Pcd Object to help UnitTest
822 #
823 def ObjectFactory(self, ItemType, TSCName, CName, DValue, FFE, Usage, Str):
824 Object = PcdObject()
825 HelpStr = Str
826
827 Object.SetItemType(ItemType)
828 Object.SetTokenSpaceGuidCName(TSCName)
829 Object.SetCName(CName)
830 Object.SetDefaultValue(DValue)
831 Object.SetFeatureFlag(FFE)
832 Object.SetValidUsage(Usage)
833
834 HelpTextObj = TextObject()
835 HelpTextObj.SetLang('')
836 HelpTextObj.SetString(HelpStr)
837 Object.SetHelpTextList([HelpTextObj])
838
839 return Object
840
841
842 # Usage Help INF Comment
843 #1 UNDEFINED Present # Help
844 #2 UNDEFINED Not Present <empty>
845 #3 Other Present ## Other # Help
846 #4 Other Not Present ## Other
847
848 def testNormalCase1(self):
849 ObjectList = []
850 ItemType = 'Pcd'
851 TSCName = 'TSCName'
852 CName = 'CName'
853 DValue = 'DValue'
854 FFE = 'FFE'
855
856 Usage = 'UNDEFINED'
857 Str = 'Help'
858
859 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
860 Usage, Str)
861 ObjectList.append(Object)
862
863 Result = GenPcdSections(ObjectList)
864 Expected = \
865 '[Pcd]\n' + \
866 'TSCName.CName|DValue|FFE # Help'
867 self.assertEqual(Result.strip(), Expected)
868
869 def testNormalCase2(self):
870 ObjectList = []
871 ItemType = 'Pcd'
872 TSCName = 'TSCName'
873 CName = 'CName'
874 DValue = 'DValue'
875 FFE = 'FFE'
876
877 Usage = 'UNDEFINED'
878 Str = ''
879
880 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
881 Usage, Str)
882 ObjectList.append(Object)
883
884 Result = GenPcdSections(ObjectList)
885 Expected = '[Pcd]\nTSCName.CName|DValue|FFE'
886 self.assertEqual(Result.strip(), Expected)
887
888 def testNormalCase3(self):
889 ObjectList = []
890 ItemType = 'Pcd'
891 TSCName = 'TSCName'
892 CName = 'CName'
893 DValue = 'DValue'
894 FFE = 'FFE'
895
896 Usage = 'CONSUMES'
897 Str = 'Help'
898
899 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
900 Usage, Str)
901 ObjectList.append(Object)
902
903 Result = GenPcdSections(ObjectList)
904 Expected = '[Pcd]\nTSCName.CName|DValue|FFE ## CONSUMES # Help'
905 self.assertEqual(Result.strip(), Expected)
906
907 def testNormalCase4(self):
908 ObjectList = []
909 ItemType = 'Pcd'
910 TSCName = 'TSCName'
911 CName = 'CName'
912 DValue = 'DValue'
913 FFE = 'FFE'
914
915 Usage = 'CONSUMES'
916 Str = ''
917
918 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
919 Usage, Str)
920 ObjectList.append(Object)
921
922 Result = GenPcdSections(ObjectList)
923 Expected = '[Pcd]\nTSCName.CName|DValue|FFE ## CONSUMES'
924 self.assertEqual(Result.strip(), Expected)
925
926 #
927 # multiple lines for normal usage
928 #
929 def testNormalCase5(self):
930 ObjectList = []
931 ItemType = 'Pcd'
932 TSCName = 'TSCName'
933 CName = 'CName'
934 DValue = 'DValue'
935 FFE = 'FFE'
936
937 Usage = 'CONSUMES'
938 Str = 'commment line 1\ncomment line 2'
939 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
940 Usage, Str)
941 ObjectList.append(Object)
942
943 Result = GenPcdSections(ObjectList)
944 Expected = '''[Pcd]
945 TSCName.CName|DValue|FFE ## CONSUMES # commment line 1 comment line 2'''
946 self.assertEqual(Result.strip(), Expected)
947
948 #
949 # multiple lines for UNDEFINED usage
950 #
951 def testNormalCase6(self):
952 ObjectList = []
953 ItemType = 'Pcd'
954 TSCName = 'TSCName'
955 CName = 'CName'
956 DValue = 'DValue'
957 FFE = 'FFE'
958
959 Usage = 'UNDEFINED'
960 Str = 'commment line 1\ncomment line 2'
961 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
962 Usage, Str)
963 ObjectList.append(Object)
964
965 Usage = 'UNDEFINED'
966 Str = 'commment line 3'
967 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
968 Usage, Str)
969 ObjectList.append(Object)
970
971 Result = GenPcdSections(ObjectList)
972 Expected = '''[Pcd]
973 # commment line 1
974 # comment line 2
975 # commment line 3
976 TSCName.CName|DValue|FFE'''
977 self.assertEqual(Result.strip(), Expected)
978
979 #
980 # multiple lines for UNDEFINED and normal usage
981 #
982 def testNormalCase7(self):
983 ObjectList = []
984 ItemType = 'Pcd'
985 TSCName = 'TSCName'
986 CName = 'CName'
987 DValue = 'DValue'
988 FFE = 'FFE'
989
990 Usage = 'UNDEFINED'
991 Str = 'commment line 1\ncomment line 2'
992 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
993 Usage, Str)
994 ObjectList.append(Object)
995
996 Usage = 'CONSUMES'
997 Str = 'Foo'
998 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
999 Usage, Str)
1000 ObjectList.append(Object)
1001
1002 Usage = 'UNDEFINED'
1003 Str = 'commment line 3'
1004 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
1005 Usage, Str)
1006 ObjectList.append(Object)
1007
1008 Result = GenPcdSections(ObjectList)
1009 Expected = '''[Pcd]
1010 # commment line 1
1011 # comment line 2
1012 ## CONSUMES # Foo
1013 # commment line 3
1014 TSCName.CName|DValue|FFE'''
1015 self.assertEqual(Result.strip(), Expected)
1016
1017 # Usage Help INF Comment
1018 # CONSUMES Present # Help (keep <EOL> and insert '#' at beginning of each new line)
1019 # CONSUMES Not Present <empty>
1020
1021 #
1022 # TAB_INF_FEATURE_PCD
1023 #
1024 def testNormalCase8(self):
1025 ObjectList = []
1026 ItemType = TAB_INF_FEATURE_PCD
1027 TSCName = 'TSCName'
1028 CName = 'CName'
1029 DValue = 'DValue'
1030 FFE = 'FFE'
1031
1032 Usage = 'CONSUMES'
1033 Str = 'commment line 1\ncomment line 2'
1034 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
1035 Usage, Str)
1036 ObjectList.append(Object)
1037
1038 Result = GenPcdSections(ObjectList)
1039 Expected = '''[FeaturePcd]
1040 # commment line 1
1041 # comment line 2
1042 TSCName.CName|DValue|FFE'''
1043 self.assertEqual(Result.strip(), Expected)
1044
1045 #
1046 # TAB_INF_FEATURE_PCD
1047 #
1048 def testNormalCase9(self):
1049 ObjectList = []
1050 ItemType = TAB_INF_FEATURE_PCD
1051 TSCName = 'TSCName'
1052 CName = 'CName'
1053 DValue = 'DValue'
1054 FFE = 'FFE'
1055
1056 Usage = 'CONSUMES'
1057 Str = ''
1058 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
1059 Usage, Str)
1060 ObjectList.append(Object)
1061
1062 Result = GenPcdSections(ObjectList)
1063 Expected = '''[FeaturePcd]
1064 TSCName.CName|DValue|FFE'''
1065 self.assertEqual(Result.strip(), Expected)
1066
1067 #
1068 # TAB_INF_FEATURE_PCD
1069 #
1070 def testNormalCase10(self):
1071 ObjectList = []
1072 ItemType = TAB_INF_FEATURE_PCD
1073 TSCName = 'TSCName'
1074 CName = 'CName'
1075 DValue = 'DValue'
1076 FFE = 'FFE'
1077
1078 Usage = 'PRODUCES'
1079 Str = 'commment line 1\ncomment line 2'
1080 Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE,
1081 Usage, Str)
1082 ObjectList.append(Object)
1083
1084 Result = GenPcdSections(ObjectList)
1085 Expected = '''
1086
1087 [FeaturePcd]
1088 # commment line 1
1089 # comment line 2
1090 TSCName.CName|DValue|FFE
1091 '''
1092 self.assertEqual(Result, Expected)
1093
1094
1095 #
1096 # Test GenSpecialSections of Hob
1097 #
1098 class GenHobSectionsTest(unittest.TestCase):
1099 def setUp(self):
1100 pass
1101
1102 def tearDown(self):
1103 pass
1104
1105 #
1106 # This is the API to generate Event Object to help UnitTest
1107 #
1108 def ObjectFactory(self, SupArchList, Type, Usage, Str):
1109 Object = HobObject()
1110 HelpStr = Str
1111
1112 Object.SetHobType(Type)
1113 Object.SetUsage(Usage)
1114 Object.SetSupArchList(SupArchList)
1115
1116 HelpTextObj = TextObject()
1117 HelpTextObj.SetLang('')
1118 HelpTextObj.SetString(HelpStr)
1119 Object.SetHelpTextList([HelpTextObj])
1120
1121 return Object
1122
1123 def testNormalCase1(self):
1124 ObjectList = []
1125 SupArchList = ['X64']
1126 Type = 'Foo'
1127 Usage = 'UNDEFINED'
1128 Str = 'Help'
1129
1130 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1131 ObjectList.append(Object)
1132
1133 Result = GenSpecialSections(ObjectList, 'Hob')
1134 Expected = '''# [Hob.X64]
1135 # ##
1136 # # Help
1137 # #
1138 # Foo ## UNDEFINED
1139 #
1140 #
1141 '''
1142 self.assertEqual(Result, Expected)
1143
1144 def testNormalCase2(self):
1145 ObjectList = []
1146 SupArchList = []
1147 Type = 'Foo'
1148 Usage = 'UNDEFINED'
1149 Str = 'Help'
1150
1151 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1152 ObjectList.append(Object)
1153
1154 Result = GenSpecialSections(ObjectList, 'Hob')
1155 Expected = '''# [Hob]
1156 # ##
1157 # # Help
1158 # #
1159 # Foo ## UNDEFINED
1160 #
1161 #
1162 '''
1163 self.assertEqual(Result, Expected)
1164
1165 def testNormalCase3(self):
1166 ObjectList = []
1167 SupArchList = ['X64']
1168 Type = 'Foo'
1169 Usage = 'UNDEFINED'
1170 Str = '\nComment Line 1\n\n'
1171
1172 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1173 ObjectList.append(Object)
1174
1175 Result = GenSpecialSections(ObjectList, 'Hob')
1176 Expected = '''# [Hob.X64]
1177 # ##
1178 # # Comment Line 1
1179 # #
1180 # Foo ## UNDEFINED
1181 #
1182 #
1183 '''
1184 self.assertEqual(Result, Expected)
1185
1186 def testNormalCase4(self):
1187 ObjectList = []
1188 SupArchList = ['X64']
1189 Type = 'Foo'
1190 Usage = 'UNDEFINED'
1191 Str = '\nComment Line 1\n'
1192
1193 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1194 ObjectList.append(Object)
1195
1196 Result = GenSpecialSections(ObjectList, 'Hob')
1197 Expected = '''# [Hob.X64]
1198 # ##
1199 # # Comment Line 1
1200 # #
1201 # Foo ## UNDEFINED
1202 #
1203 #
1204 '''
1205 self.assertEqual(Result, Expected)
1206
1207 def testNormalCase5(self):
1208 ObjectList = []
1209 SupArchList = ['X64']
1210 Type = 'Foo'
1211 Usage = 'UNDEFINED'
1212 Str = 'Comment Line 1\n\n'
1213
1214 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1215 ObjectList.append(Object)
1216
1217 Result = GenSpecialSections(ObjectList, 'Hob')
1218 Expected = '''# [Hob.X64]
1219 # ##
1220 # # Comment Line 1
1221 # #
1222 # Foo ## UNDEFINED
1223 #
1224 #
1225 '''
1226 self.assertEqual(Result, Expected)
1227
1228 def testNormalCase6(self):
1229 ObjectList = []
1230 SupArchList = ['X64']
1231 Type = 'Foo'
1232 Usage = 'UNDEFINED'
1233 Str = ''
1234
1235 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1236 ObjectList.append(Object)
1237
1238 Result = GenSpecialSections(ObjectList, 'Hob')
1239 Expected = '''# [Hob.X64]
1240 # Foo ## UNDEFINED
1241 #
1242 #
1243 '''
1244 self.assertEqual(Result, Expected)
1245
1246 def testNormalCase7(self):
1247 ObjectList = []
1248 SupArchList = ['X64']
1249 Type = 'Foo'
1250 Usage = 'UNDEFINED'
1251 Str = '\nNew Stack HoB'
1252
1253
1254 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1255 ObjectList.append(Object)
1256
1257 Result = GenSpecialSections(ObjectList, 'Hob')
1258 Expected = '''# [Hob.X64]
1259 # ##
1260 # # New Stack HoB
1261 # #
1262 # Foo ## UNDEFINED
1263 #
1264 #
1265 '''
1266 self.assertEqual(Result, Expected)
1267
1268 def testNormalCase8(self):
1269 ObjectList = []
1270 SupArchList = ['X64']
1271 Type = 'Foo'
1272 Usage = 'UNDEFINED'
1273 Str = '\nNew Stack HoB\n\nTail Comment'
1274
1275
1276 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1277 ObjectList.append(Object)
1278
1279 Result = GenSpecialSections(ObjectList, 'Hob')
1280 Expected = '''# [Hob.X64]
1281 # ##
1282 # # New Stack HoB
1283 # #
1284 # # Tail Comment
1285 # #
1286 # Foo ## UNDEFINED
1287 #
1288 #
1289 '''
1290 self.assertEqual(Result, Expected)
1291
1292 def testNormalCase9(self):
1293 ObjectList = []
1294 SupArchList = ['X64']
1295 Type = 'Foo'
1296 Usage = 'UNDEFINED'
1297 Str = '\n\n'
1298
1299
1300 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1301 ObjectList.append(Object)
1302
1303 Result = GenSpecialSections(ObjectList, 'Hob')
1304 Expected = '''# [Hob.X64]
1305 # ##
1306 # #
1307 # #
1308 # Foo ## UNDEFINED
1309 #
1310 #
1311 '''
1312 self.assertEqual(Result, Expected)
1313
1314 def testNormalCase10(self):
1315 ObjectList = []
1316 SupArchList = ['X64']
1317 Type = 'Foo'
1318 Usage = 'UNDEFINED'
1319 Str = '\n'
1320
1321 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1322 ObjectList.append(Object)
1323
1324 Result = GenSpecialSections(ObjectList, 'Hob')
1325 Expected = '''# [Hob.X64]
1326 # ##
1327 # #
1328 # #
1329 # Foo ## UNDEFINED
1330 #
1331 #
1332 '''
1333 self.assertEqual(Result, Expected)
1334
1335 def testNormalCase11(self):
1336 ObjectList = []
1337 SupArchList = ['X64']
1338 Type = 'Foo'
1339 Usage = 'UNDEFINED'
1340 Str = '\n\n\n'
1341
1342 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1343 ObjectList.append(Object)
1344
1345 Result = GenSpecialSections(ObjectList, 'Hob')
1346 Expected = '''# [Hob.X64]
1347 # ##
1348 # #
1349 # #
1350 # Foo ## UNDEFINED
1351 #
1352 #
1353 '''
1354 self.assertEqual(Result, Expected)
1355
1356 def testNormalCase12(self):
1357 ObjectList = []
1358 SupArchList = ['X64']
1359 Type = 'Foo'
1360 Usage = 'UNDEFINED'
1361 Str = '\n\n\n\n'
1362
1363 Object = self.ObjectFactory(SupArchList, Type, Usage, Str)
1364 ObjectList.append(Object)
1365
1366 Result = GenSpecialSections(ObjectList, 'Hob')
1367 Expected = '''# [Hob.X64]
1368 # ##
1369 # #
1370 # #
1371 # #
1372 # Foo ## UNDEFINED
1373 #
1374 #
1375 '''
1376 self.assertEqual(Result, Expected)
1377
1378 #
1379 # Test GenGenericCommentF
1380 #
1381 class GenGenericCommentFTest(unittest.TestCase):
1382 def setUp(self):
1383 pass
1384
1385 def tearDown(self):
1386 pass
1387
1388 def testNormalCase1(self):
1389 CommentLines = 'Comment Line 1'
1390 Result = GenGenericCommentF(CommentLines)
1391 Expected = '# Comment Line 1\n'
1392 self.assertEqual(Result, Expected)
1393
1394 def testNormalCase2(self):
1395 CommentLines = '\n'
1396 Result = GenGenericCommentF(CommentLines)
1397 Expected = '#\n'
1398 self.assertEqual(Result, Expected)
1399
1400 def testNormalCase3(self):
1401 CommentLines = '\n\n\n'
1402 Result = GenGenericCommentF(CommentLines)
1403 Expected = '#\n#\n#\n'
1404 self.assertEqual(Result, Expected)
1405
1406 def testNormalCase4(self):
1407 CommentLines = 'coment line 1\n'
1408 Result = GenGenericCommentF(CommentLines)
1409 Expected = '# coment line 1\n'
1410 self.assertEqual(Result, Expected)
1411
1412 def testNormalCase5(self):
1413 CommentLines = 'coment line 1\n coment line 2\n'
1414 Result = GenGenericCommentF(CommentLines)
1415 Expected = '# coment line 1\n# coment line 2\n'
1416 self.assertEqual(Result, Expected)
1417
1418 if __name__ == '__main__':
1419 Logger.Initialize()
1420 unittest.main()