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

      2 # This file contain unit test for Test [Binary] section part of InfParser 

      3 #

      4 # Copyright (c) 2011, 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 Object.Parser.InfObject as InfObject

     16 from Object.Parser.InfCommonObject import CurrentLine
     17 from Object.Parser.InfCommonObject import InfLineCommentObject
     18 from Object.Parser.InfBinaryObject import InfBinariesObject
     19 import Logger.Log as Logger
     20 import Library.GlobalData as Global
     21 ##

     22 # Test Common binary item

     23 #

     24 
     25 #-------------start of common binary item test input--------------------------#

     26 
     27 #

     28 # Only has 1 element, binary item Type

     29 #

     30 SectionStringsCommonItem1 = \
     31 """
     32 GUID
     33 """
     34 #

     35 # Have 2 elements, binary item Type and FileName

     36 #

     37 SectionStringsCommonItem2 = \
     38 """
     39 GUID | Test/Test.guid
     40 """
     41 
     42 #

     43 # Have 3 elements, Type | FileName | Target | Family | TagName | FeatureFlagExp

     44 #

     45 SectionStringsCommonItem3 = \
     46 """
     47 GUID | Test/Test.guid | DEBUG
     48 """
     49 
     50 #

     51 # Have 3 elements, Type | FileName | Target 

     52 # Target with MACRO defined in [Define] section

     53 #

     54 SectionStringsCommonItem4 = \
     55 """
     56 GUID | Test/Test.guid | $(TARGET)
     57 """
     58 
     59 #

     60 # Have 3 elements, Type | FileName | Target 

     61 # FileName with MACRO defined in [Binary] section

     62 #

     63 SectionStringsCommonItem5 = \
     64 """
     65 DEFINE BINARY_FILE_PATH = Test
     66 GUID | $(BINARY_FILE_PATH)/Test.guid | $(TARGET)
     67 """
     68 
     69 #

     70 # Have 4 elements, Type | FileName | Target | Family

     71 #

     72 SectionStringsCommonItem6 = \
     73 """
     74 GUID | Test/Test.guid | DEBUG | *
     75 """
     76 
     77 #

     78 # Have 4 elements, Type | FileName | Target | Family

     79 #

     80 SectionStringsCommonItem7 = \
     81 """
     82 GUID | Test/Test.guid | DEBUG | MSFT
     83 """
     84 
     85 #

     86 # Have 5 elements, Type | FileName | Target | Family | TagName

     87 #

     88 SectionStringsCommonItem8 = \
     89 """
     90 GUID | Test/Test.guid | DEBUG | MSFT | TEST
     91 """
     92 
     93 #

     94 # Have 6 elements, Type | FileName | Target | Family | TagName | FFE

     95 #

     96 SectionStringsCommonItem9 = \
     97 """
     98 GUID | Test/Test.guid | DEBUG | MSFT | TEST | TRUE
     99 """
    100 
    101 #

    102 # Have 7 elements, Type | FileName | Target | Family | TagName | FFE | Overflow

    103 # Test wrong format

    104 #

    105 SectionStringsCommonItem10 = \
    106 """
    107 GUID | Test/Test.guid | DEBUG | MSFT | TEST | TRUE | OVERFLOW
    108 """
    109 
    110 #-------------end of common binary item test input----------------------------#

    111 
    112 
    113 
    114 #-------------start of VER type binary item test input------------------------#

    115 
    116 #

    117 # Has 1 element, error format 

    118 #

    119 SectionStringsVerItem1 = \
    120 """
    121 VER
    122 """
    123 #

    124 # Have 5 elements, error format(Maximum elements amount is 4)

    125 #

    126 SectionStringsVerItem2 = \
    127 """
    128 VER | Test/Test.ver | * | TRUE | OverFlow
    129 """
    130 
    131 #

    132 # Have 2 elements, Type | FileName

    133 #

    134 SectionStringsVerItem3 = \
    135 """
    136 VER | Test/Test.ver
    137 """
    138 
    139 #

    140 # Have 3 elements, Type | FileName | Target

    141 #

    142 SectionStringsVerItem4 = \
    143 """
    144 VER | Test/Test.ver | DEBUG
    145 """
    146 
    147 #

    148 # Have 4 elements, Type | FileName | Target | FeatureFlagExp

    149 #

    150 SectionStringsVerItem5 = \
    151 """
    152 VER | Test/Test.ver | DEBUG | TRUE
    153 """
    154 
    155 #

    156 # Exist 2 VER items, both opened.

    157 #

    158 SectionStringsVerItem6 = \
    159 """
    160 VER | Test/Test.ver | * | TRUE
    161 VER | Test/Test2.ver | * | TRUE
    162 """
    163 
    164 
    165 #

    166 # Exist 2 VER items, only 1 opened.

    167 #

    168 SectionStringsVerItem7 = \
    169 """
    170 VER | Test/Test.ver | * | TRUE
    171 VER | Test/Test2.ver | * | FALSE
    172 """
    173 
    174 #-------------end of VER type binary item test input--------------------------#

    175 
    176 
    177 #-------------start of UI type binary item test input-------------------------#

    178 
    179 #

    180 # Test only one UI section can exist

    181 #

    182 SectionStringsUiItem1 = \
    183 """
    184 UI | Test/Test.ui | * | TRUE
    185 UI | Test/Test2.ui | * | TRUE
    186 """
    187 
    188 SectionStringsUiItem2 = \
    189 """
    190 UI | Test/Test.ui | * | TRUE
    191 SEC_UI | Test/Test2.ui | * | TRUE
    192 """
    193 
    194 SectionStringsUiItem3 = \
    195 """
    196 UI | Test/Test.ui | * | TRUE
    197 UI | Test/Test2.ui | * | FALSE
    198 """
    199 
    200 #

    201 # Has 1 element, error format 

    202 #

    203 SectionStringsUiItem4 = \
    204 """
    205 UI
    206 """
    207 #

    208 # Have 5 elements, error format(Maximum elements amount is 4)

    209 #

    210 SectionStringsUiItem5 = \
    211 """
    212 UI | Test/Test.ui | * | TRUE | OverFlow
    213 """
    214 
    215 #

    216 # Have 2 elements, Type | FileName

    217 #

    218 SectionStringsUiItem6 = \
    219 """
    220 UI | Test/Test.ui
    221 """
    222 
    223 #

    224 # Have 3 elements, Type | FileName | Target

    225 #

    226 SectionStringsUiItem7 = \
    227 """
    228 UI | Test/Test.ui | DEBUG
    229 """
    230 
    231 #

    232 # Have 4 elements, Type | FileName | Target | FeatureFlagExp

    233 #

    234 SectionStringsUiItem8 = \
    235 """
    236 UI | Test/Test.ui | DEBUG | TRUE
    237 """
    238 #---------------end of UI type binary item test input-------------------------#

    239 
    240 
    241 gFileName = "BinarySectionTest.inf"
    242 
    243 ##

    244 # Construct SectionString for call section parser usage.

    245 #

    246 def StringToSectionString(String):
    247     Lines = String.split('\n')
    248     LineNo = 0
    249     SectionString = []
    250     for Line in Lines:
    251         if Line.strip() == '':
    252             continue
    253         SectionString.append((Line, LineNo, ''))
    254         LineNo = LineNo + 1
    255         
    256     return SectionString
    257 
    258 def PrepareTest(String):
    259     SectionString = StringToSectionString(String)
    260     ItemList = []
    261     for Item in SectionString:
    262         ValueList = Item[0].split('|')
    263         for count in range(len(ValueList)):
    264             ValueList[count] = ValueList[count].strip()
    265         if len(ValueList) >= 2:
    266             #

    267             # Create a temp file for test.

    268             #

    269             FileName = os.path.normpath(os.path.realpath(ValueList[1].strip()))
    270             try:
    271                 TempFile  = open (FileName, "w")    
    272                 TempFile.close()
    273             except:
    274                 print "File Create Error"
    275         CurrentLine = CurrentLine()
    276         CurrentLine.SetFileName("Test")
    277         CurrentLine.SetLineString(Item[0])
    278         CurrentLine.SetLineNo(Item[1])
    279         InfLineCommentObject = InfLineCommentObject()
    280         
    281         ItemList.append((ValueList, InfLineCommentObject, CurrentLine))
    282                 
    283     return ItemList
    284 
    285 if __name__ == '__main__':
    286     Logger.Initialize()
    287     
    288     InfBinariesInstance = InfBinariesObject()
    289     ArchList = ['COMMON']
    290     Global.gINF_MODULE_DIR = os.getcwd()
    291     
    292     AllPassedFlag = True
    293     
    294     #

    295     # For All Ui test

    296     #

    297     UiStringList = [ 
    298                     SectionStringsUiItem1,
    299                     SectionStringsUiItem2,
    300                     SectionStringsUiItem3,
    301                     SectionStringsUiItem4,
    302                     SectionStringsUiItem5,
    303                     SectionStringsUiItem6,
    304                     SectionStringsUiItem7,
    305                     SectionStringsUiItem8 
    306                     ]
    307     
    308     for Item in UiStringList:        
    309         Ui = PrepareTest(Item)
    310         if Item == SectionStringsUiItem4 or Item == SectionStringsUiItem5:
    311             try:
    312                 InfBinariesInstance.SetBinary(Ui = Ui, ArchList = ArchList)
    313             except Logger.FatalError:
    314                 pass
    315         else:
    316             try:		
    317                 InfBinariesInstance.SetBinary(Ui = Ui, ArchList = ArchList)
    318             except:
    319                 AllPassedFlag = False   				
    320  
    321     #

    322     # For All Ver Test

    323     #

    324     VerStringList = [
    325                      SectionStringsVerItem1,
    326                      SectionStringsVerItem2,
    327                      SectionStringsVerItem3,
    328                      SectionStringsVerItem4,
    329                      SectionStringsVerItem5,
    330                      SectionStringsVerItem6,
    331                      SectionStringsVerItem7
    332                      ]
    333     for Item in VerStringList:        
    334         Ver = PrepareTest(Item)
    335         if Item == SectionStringsVerItem1 or \
    336            Item == SectionStringsVerItem2:
    337             
    338             try:
    339                 InfBinariesInstance.SetBinary(Ver = Ver, ArchList = ArchList)
    340             except:
    341                 pass
    342                     
    343         else:
    344             try:
    345                 InfBinariesInstance.SetBinary(Ver = Ver, ArchList = ArchList)
    346             except:
    347                 AllPassedFlag = False   
    348     
    349     #

    350     # For All Common Test

    351     #    

    352     CommonStringList = [
    353                      SectionStringsCommonItem1,
    354                      SectionStringsCommonItem2,
    355                      SectionStringsCommonItem3,
    356                      SectionStringsCommonItem4,
    357                      SectionStringsCommonItem5,
    358                      SectionStringsCommonItem6,
    359                      SectionStringsCommonItem7,
    360                      SectionStringsCommonItem8,
    361                      SectionStringsCommonItem9,
    362                      SectionStringsCommonItem10
    363                      ]
    364 
    365     for Item in CommonStringList:        
    366         CommonBin = PrepareTest(Item)
    367         if Item == SectionStringsCommonItem10 or \
    368            Item == SectionStringsCommonItem1:
    369             
    370             try:
    371                 InfBinariesInstance.SetBinary(CommonBinary = CommonBin, ArchList = ArchList)
    372             except:
    373                 pass
    374                     
    375         else:
    376             try:
    377                 InfBinariesInstance.SetBinary(Ver = Ver, ArchList = ArchList)
    378             except:
    379                 print "Test Failed!"
    380                 AllPassedFlag = False
    381     
    382     if AllPassedFlag :
    383         print 'All tests passed...'
    384     else:
    385         print 'Some unit test failed!'
    386 
    387