Home | History | Annotate | Download | only in UnitTest
      1 ## @file

      2 # This file contain unit test for CommentParsing

      3 #

      4 # Copyright (c) 2011 - 2014, 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.String 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()