## @file | |
# This file contain unit test for CommentParsing | |
# | |
# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR> | |
# | |
# This program and the accompanying materials are licensed and made available | |
# under the terms and conditions of the BSD License which accompanies this | |
# distribution. The full text of the license may be found at | |
# http://opensource.org/licenses/bsd-license.php | |
# | |
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
import os | |
import unittest | |
import Logger.Log as Logger | |
from GenMetaFile.GenInfFile import GenGuidSections | |
from GenMetaFile.GenInfFile import GenProtocolPPiSections | |
from GenMetaFile.GenInfFile import GenPcdSections | |
from GenMetaFile.GenInfFile import GenSpecialSections | |
from Library.CommentGenerating import GenGenericCommentF | |
from Library.CommentGenerating import _GetHelpStr | |
from Object.POM.CommonObject import TextObject | |
from Object.POM.CommonObject import GuidObject | |
from Object.POM.CommonObject import ProtocolObject | |
from Object.POM.CommonObject import PpiObject | |
from Object.POM.CommonObject import PcdObject | |
from Object.POM.ModuleObject import HobObject | |
from Library.String import GetSplitValueList | |
from Library.DataType import TAB_SPACE_SPLIT | |
from Library.DataType import TAB_LANGUAGE_EN_US | |
from Library.DataType import TAB_LANGUAGE_ENG | |
from Library.DataType import ITEM_UNDEFINED | |
from Library.DataType import TAB_INF_FEATURE_PCD | |
from Library import GlobalData | |
from Library.Misc import CreateDirectory | |
# | |
# Test _GetHelpStr | |
# | |
class _GetHelpStrTest(unittest.TestCase): | |
def setUp(self): | |
pass | |
def tearDown(self): | |
pass | |
# | |
# Normal case1: have one help text object with Lang = 'en-US' | |
# | |
def testNormalCase1(self): | |
HelpStr = 'Hello world' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang(TAB_LANGUAGE_EN_US) | |
HelpTextObj.SetString(HelpStr) | |
HelpTextList = [HelpTextObj] | |
Result = _GetHelpStr(HelpTextList) | |
self.assertEqual(Result, HelpStr) | |
# | |
# Normal case2: have two help text object with Lang = 'en-US' and other | |
# | |
def testNormalCase2(self): | |
HelpStr = 'Hello world' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang(TAB_LANGUAGE_ENG) | |
HelpTextObj.SetString(HelpStr) | |
HelpTextList = [HelpTextObj] | |
ExpectedStr = 'Hello world1' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang(TAB_LANGUAGE_EN_US) | |
HelpTextObj.SetString(ExpectedStr) | |
HelpTextList.append(HelpTextObj) | |
Result = _GetHelpStr(HelpTextList) | |
self.assertEqual(Result, ExpectedStr) | |
# | |
# Normal case3: have two help text object with Lang = '' and 'eng' | |
# | |
def testNormalCase3(self): | |
HelpStr = 'Hello world' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang('') | |
HelpTextObj.SetString(HelpStr) | |
HelpTextList = [HelpTextObj] | |
ExpectedStr = 'Hello world1' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang(TAB_LANGUAGE_ENG) | |
HelpTextObj.SetString(ExpectedStr) | |
HelpTextList.append(HelpTextObj) | |
Result = _GetHelpStr(HelpTextList) | |
self.assertEqual(Result, ExpectedStr) | |
# | |
# Normal case4: have two help text object with Lang = '' and '' | |
# | |
def testNormalCase4(self): | |
ExpectedStr = 'Hello world1' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang(TAB_LANGUAGE_ENG) | |
HelpTextObj.SetString(ExpectedStr) | |
HelpTextList = [HelpTextObj] | |
HelpStr = 'Hello world' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang('') | |
HelpTextObj.SetString(HelpStr) | |
HelpTextList.append(HelpTextObj) | |
Result = _GetHelpStr(HelpTextList) | |
self.assertEqual(Result, ExpectedStr) | |
# | |
# Normal case: have three help text object with Lang = '','en', 'en-US' | |
# | |
def testNormalCase5(self): | |
ExpectedStr = 'Hello world1' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang(TAB_LANGUAGE_EN_US) | |
HelpTextObj.SetString(ExpectedStr) | |
HelpTextList = [HelpTextObj] | |
HelpStr = 'Hello unknown world' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang('') | |
HelpTextObj.SetString(HelpStr) | |
HelpTextList.append(HelpTextObj) | |
HelpStr = 'Hello mysterious world' | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang('') | |
HelpTextObj.SetString(HelpStr) | |
HelpTextList.append(HelpTextObj) | |
Result = _GetHelpStr(HelpTextList) | |
self.assertEqual(Result, ExpectedStr) | |
HelpTextList.sort() | |
self.assertEqual(Result, ExpectedStr) | |
HelpTextList.sort(reverse=True) | |
self.assertEqual(Result, ExpectedStr) | |
# | |
# Test GenGuidSections | |
# | |
class GenGuidSectionsTest(unittest.TestCase): | |
def setUp(self): | |
pass | |
def tearDown(self): | |
pass | |
# | |
# This is the API to generate Guid Object to help UnitTest | |
# | |
def GuidFactory(self, CName, FFE, Usage, GuidType, VariableName, HelpStr): | |
Guid = GuidObject() | |
Guid.SetCName(CName) | |
Guid.SetFeatureFlag(FFE) | |
Guid.SetGuidTypeList([GuidType]) | |
Guid.SetUsage(Usage) | |
Guid.SetVariableName(VariableName) | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang('') | |
HelpTextObj.SetString(HelpStr) | |
Guid.SetHelpTextList([HelpTextObj]) | |
return Guid | |
# | |
# Normal case: have two GuidObject | |
# | |
def testNormalCase1(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
GuidType = 'Event' | |
VariableName = '' | |
HelpStr = 'Usage comment line 1' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'CONSUMES' | |
GuidType = 'Variable' | |
VariableName = '' | |
HelpStr = 'Usage comment line 2' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
## PRODUCES ## Event # Usage comment line 1 | |
## CONSUMES ## Variable: # Usage comment line 2 | |
Guid1|FFE1''' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# Normal case: have two GuidObject | |
# | |
def testNormalCase2(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
GuidType = 'Event' | |
VariableName = '' | |
HelpStr = 'Usage comment line 1' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
GuidType = 'UNDEFINED' | |
VariableName = '' | |
HelpStr = 'Generic comment line 1\n Generic comment line 2' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
## PRODUCES ## Event # Usage comment line 1 | |
# Generic comment line 1 | |
# Generic comment line 2 | |
Guid1|FFE1''' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# Normal case: have two GuidObject, one help goes to generic help, | |
# the other go into usage comment | |
# | |
def testNormalCase3(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
GuidType = 'UNDEFINED' | |
VariableName = '' | |
HelpStr = 'Generic comment' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
GuidType = 'Event' | |
VariableName = '' | |
HelpStr = 'Usage comment line 1' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
# Generic comment | |
## PRODUCES ## Event # Usage comment line 1 | |
Guid1|FFE1''' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# Normal case: have one GuidObject, generic comment multiple lines | |
# | |
def testNormalCase5(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
GuidType = 'UNDEFINED' | |
VariableName = '' | |
HelpStr = 'Generic comment line1 \n generic comment line 2' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
# Generic comment line1 | |
# generic comment line 2 | |
Guid1|FFE1''' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# Normal case: have one GuidObject, usage comment multiple lines | |
# | |
def testNormalCase6(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
GuidType = 'Event' | |
VariableName = '' | |
HelpStr = 'Usage comment line 1\n Usage comment line 2' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
Guid1|FFE1 ## PRODUCES ## Event # Usage comment line 1 Usage comment line 2 | |
''' | |
self.assertEqual(Result.strip(), Expected.strip()) | |
# | |
# Normal case: have one GuidObject, usage comment one line | |
# | |
def testNormalCase7(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
GuidType = 'UNDEFINED' | |
VariableName = '' | |
HelpStr = 'Usage comment line 1' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
Guid1|FFE1 # Usage comment line 1 | |
''' | |
self.assertEqual(Result.strip(), Expected.strip()) | |
# | |
# Normal case: have two GuidObject | |
# | |
def testNormalCase8(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
GuidType = 'Event' | |
VariableName = '' | |
HelpStr = 'Usage comment line 1\n Usage comment line 2' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
GuidType = 'Event' | |
VariableName = '' | |
HelpStr = 'Usage comment line 3' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
## PRODUCES ## Event # Usage comment line 1 Usage comment line 2 | |
## PRODUCES ## Event # Usage comment line 3 | |
Guid1|FFE1 | |
''' | |
self.assertEqual(Result.strip(), Expected.strip()) | |
# | |
# Normal case: have no GuidObject | |
# | |
def testNormalCase9(self): | |
GuidList = [] | |
Result = GenGuidSections(GuidList) | |
Expected = '' | |
self.assertEqual(Result.strip(), Expected.strip()) | |
# | |
# Normal case: have one GuidObject with no comment generated | |
# | |
def testNormalCase10(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
GuidType = 'UNDEFINED' | |
VariableName = '' | |
HelpStr = '' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
Guid1|FFE1 | |
''' | |
self.assertEqual(Result.strip(), Expected.strip()) | |
# | |
# Normal case: have three GuidObject | |
# | |
def testNormalCase11(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
GuidType = 'UNDEFINED' | |
VariableName = '' | |
HelpStr = 'general comment line 1' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
GuidType = 'Event' | |
VariableName = '' | |
HelpStr = 'Usage comment line 3' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
GuidType = 'UNDEFINED' | |
VariableName = '' | |
HelpStr = 'general comment line 2' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
# general comment line 1 | |
## PRODUCES ## Event # Usage comment line 3 | |
# general comment line 2 | |
Guid1|FFE1 | |
''' | |
self.assertEqual(Result.strip(), Expected.strip()) | |
# | |
# Normal case: have three GuidObject, with Usage/Type and no help | |
# | |
def testNormalCase12(self): | |
GuidList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
GuidType = 'GUID' | |
VariableName = '' | |
HelpStr = '' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
GuidType = 'Event' | |
VariableName = '' | |
HelpStr = '' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'CONSUMES' | |
GuidType = 'Event' | |
VariableName = '' | |
HelpStr = '' | |
Guid1 = self.GuidFactory(CName, FFE, Usage, GuidType, | |
VariableName, HelpStr) | |
GuidList.append(Guid1) | |
Result = GenGuidSections(GuidList) | |
Expected = '''[Guids] | |
## PRODUCES ## GUID | |
## PRODUCES ## Event | |
## CONSUMES ## Event | |
Guid1|FFE1 | |
''' | |
self.assertEqual(Result.strip(), Expected.strip()) | |
# | |
# Test GenProtocolPPiSections | |
# | |
class GenProtocolPPiSectionsTest(unittest.TestCase): | |
def setUp(self): | |
pass | |
def tearDown(self): | |
pass | |
# | |
# This is the API to generate Protocol/Ppi Object to help UnitTest | |
# | |
def ObjectFactory(self, CName, FFE, Usage, Notify, HelpStr, IsProtocol): | |
if IsProtocol: | |
Object = ProtocolObject() | |
else: | |
Object = PpiObject() | |
Object.SetCName(CName) | |
Object.SetFeatureFlag(FFE) | |
Object.SetUsage(Usage) | |
Object.SetNotify(Notify) | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang('') | |
HelpTextObj.SetString(HelpStr) | |
Object.SetHelpTextList([HelpTextObj]) | |
return Object | |
# Usage Notify Help INF Comment | |
#1 UNDEFINED true Present ## UNDEFINED ## NOTIFY # Help | |
#2 UNDEFINED true Not Present ## UNDEFINED ## NOTIFY | |
#3 UNDEFINED false Present ## UNDEFINED # Help | |
#4 UNDEFINED false Not Present ## UNDEFINED | |
#5 UNDEFINED Not Present Present # Help | |
#6 UNDEFINED Not Present Not Present <empty> | |
#7 Other true Present ## Other ## NOTIFY # Help | |
#8 Other true Not Present ## Other ## NOTIFY | |
#9 Other false Present ## Other # Help | |
#A Other false Not Present ## Other | |
#B Other Not Present Present ## Other # Help | |
#C Other Not Present Not Present ## Other | |
def testNormalCase1(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
Notify = True | |
HelpStr = 'Help' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## UNDEFINED ## NOTIFY # Help''' | |
self.assertEqual(Result.strip(), Expected) | |
IsProtocol = False | |
ObjectList = [] | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Ppis] | |
Guid1|FFE1 ## UNDEFINED ## NOTIFY # Help''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase2(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
Notify = True | |
HelpStr = '' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## UNDEFINED ## NOTIFY''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase3(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
Notify = False | |
HelpStr = 'Help' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## UNDEFINED # Help''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase4(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
Notify = False | |
HelpStr = '' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## UNDEFINED''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase5(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
Notify = '' | |
HelpStr = 'Help' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 # Help''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase6(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'UNDEFINED' | |
Notify = '' | |
HelpStr = '' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase7(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
Notify = True | |
HelpStr = 'Help' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## PRODUCES ## NOTIFY # Help''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase8(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
Notify = True | |
HelpStr = '' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## PRODUCES ## NOTIFY''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase9(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
Notify = False | |
HelpStr = 'Help' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## PRODUCES # Help''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCaseA(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
Notify = False | |
HelpStr = '' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## PRODUCES''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCaseB(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
Notify = '' | |
HelpStr = 'Help' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## PRODUCES # Help''' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCaseC(self): | |
ObjectList = [] | |
CName = 'Guid1' | |
FFE = 'FFE1' | |
Usage = 'PRODUCES' | |
Notify = '' | |
HelpStr = '' | |
IsProtocol = True | |
Object = self.ObjectFactory(CName, FFE, Usage, Notify, | |
HelpStr, IsProtocol) | |
ObjectList.append(Object) | |
Result = GenProtocolPPiSections(ObjectList, IsProtocol) | |
Expected = '''[Protocols] | |
Guid1|FFE1 ## PRODUCES''' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# Test GenPcdSections | |
# | |
class GenPcdSectionsTest(unittest.TestCase): | |
def setUp(self): | |
pass | |
def tearDown(self): | |
pass | |
# | |
# This is the API to generate Pcd Object to help UnitTest | |
# | |
def ObjectFactory(self, ItemType, TSCName, CName, DValue, FFE, Usage, Str): | |
Object = PcdObject() | |
HelpStr = Str | |
Object.SetItemType(ItemType) | |
Object.SetTokenSpaceGuidCName(TSCName) | |
Object.SetCName(CName) | |
Object.SetDefaultValue(DValue) | |
Object.SetFeatureFlag(FFE) | |
Object.SetValidUsage(Usage) | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang('') | |
HelpTextObj.SetString(HelpStr) | |
Object.SetHelpTextList([HelpTextObj]) | |
return Object | |
# Usage Help INF Comment | |
#1 UNDEFINED Present # Help | |
#2 UNDEFINED Not Present <empty> | |
#3 Other Present ## Other # Help | |
#4 Other Not Present ## Other | |
def testNormalCase1(self): | |
ObjectList = [] | |
ItemType = 'Pcd' | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'UNDEFINED' | |
Str = 'Help' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = \ | |
'[Pcd]\n' + \ | |
'TSCName.CName|DValue|FFE # Help' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase2(self): | |
ObjectList = [] | |
ItemType = 'Pcd' | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'UNDEFINED' | |
Str = '' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = '[Pcd]\nTSCName.CName|DValue|FFE' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase3(self): | |
ObjectList = [] | |
ItemType = 'Pcd' | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'CONSUMES' | |
Str = 'Help' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = '[Pcd]\nTSCName.CName|DValue|FFE ## CONSUMES # Help' | |
self.assertEqual(Result.strip(), Expected) | |
def testNormalCase4(self): | |
ObjectList = [] | |
ItemType = 'Pcd' | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'CONSUMES' | |
Str = '' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = '[Pcd]\nTSCName.CName|DValue|FFE ## CONSUMES' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# multiple lines for normal usage | |
# | |
def testNormalCase5(self): | |
ObjectList = [] | |
ItemType = 'Pcd' | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'CONSUMES' | |
Str = 'commment line 1\ncomment line 2' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = '''[Pcd] | |
TSCName.CName|DValue|FFE ## CONSUMES # commment line 1 comment line 2''' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# multiple lines for UNDEFINED usage | |
# | |
def testNormalCase6(self): | |
ObjectList = [] | |
ItemType = 'Pcd' | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'UNDEFINED' | |
Str = 'commment line 1\ncomment line 2' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Usage = 'UNDEFINED' | |
Str = 'commment line 3' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = '''[Pcd] | |
# commment line 1 | |
# comment line 2 | |
# commment line 3 | |
TSCName.CName|DValue|FFE''' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# multiple lines for UNDEFINED and normal usage | |
# | |
def testNormalCase7(self): | |
ObjectList = [] | |
ItemType = 'Pcd' | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'UNDEFINED' | |
Str = 'commment line 1\ncomment line 2' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Usage = 'CONSUMES' | |
Str = 'Foo' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Usage = 'UNDEFINED' | |
Str = 'commment line 3' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = '''[Pcd] | |
# commment line 1 | |
# comment line 2 | |
## CONSUMES # Foo | |
# commment line 3 | |
TSCName.CName|DValue|FFE''' | |
self.assertEqual(Result.strip(), Expected) | |
# Usage Help INF Comment | |
# CONSUMES Present # Help (keep <EOL> and insert '#' at beginning of each new line) | |
# CONSUMES Not Present <empty> | |
# | |
# TAB_INF_FEATURE_PCD | |
# | |
def testNormalCase8(self): | |
ObjectList = [] | |
ItemType = TAB_INF_FEATURE_PCD | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'CONSUMES' | |
Str = 'commment line 1\ncomment line 2' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = '''[FeaturePcd] | |
# commment line 1 | |
# comment line 2 | |
TSCName.CName|DValue|FFE''' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# TAB_INF_FEATURE_PCD | |
# | |
def testNormalCase9(self): | |
ObjectList = [] | |
ItemType = TAB_INF_FEATURE_PCD | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'CONSUMES' | |
Str = '' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = '''[FeaturePcd] | |
TSCName.CName|DValue|FFE''' | |
self.assertEqual(Result.strip(), Expected) | |
# | |
# TAB_INF_FEATURE_PCD | |
# | |
def testNormalCase10(self): | |
ObjectList = [] | |
ItemType = TAB_INF_FEATURE_PCD | |
TSCName = 'TSCName' | |
CName = 'CName' | |
DValue = 'DValue' | |
FFE = 'FFE' | |
Usage = 'PRODUCES' | |
Str = 'commment line 1\ncomment line 2' | |
Object = self.ObjectFactory(ItemType, TSCName, CName, DValue, FFE, | |
Usage, Str) | |
ObjectList.append(Object) | |
Result = GenPcdSections(ObjectList) | |
Expected = ''' | |
[FeaturePcd] | |
# commment line 1 | |
# comment line 2 | |
TSCName.CName|DValue|FFE | |
''' | |
self.assertEqual(Result, Expected) | |
# | |
# Test GenSpecialSections of Hob | |
# | |
class GenHobSectionsTest(unittest.TestCase): | |
def setUp(self): | |
pass | |
def tearDown(self): | |
pass | |
# | |
# This is the API to generate Event Object to help UnitTest | |
# | |
def ObjectFactory(self, SupArchList, Type, Usage, Str): | |
Object = HobObject() | |
HelpStr = Str | |
Object.SetHobType(Type) | |
Object.SetUsage(Usage) | |
Object.SetSupArchList(SupArchList) | |
HelpTextObj = TextObject() | |
HelpTextObj.SetLang('') | |
HelpTextObj.SetString(HelpStr) | |
Object.SetHelpTextList([HelpTextObj]) | |
return Object | |
def testNormalCase1(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = 'Help' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # Help | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase2(self): | |
ObjectList = [] | |
SupArchList = [] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = 'Help' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob] | |
# ## | |
# # Help | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase3(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = '\nComment Line 1\n\n' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # Comment Line 1 | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase4(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = '\nComment Line 1\n' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # Comment Line 1 | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase5(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = 'Comment Line 1\n\n' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # Comment Line 1 | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase6(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = '' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase7(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = '\nNew Stack HoB' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # New Stack HoB | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase8(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = '\nNew Stack HoB\n\nTail Comment' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # New Stack HoB | |
# # | |
# # Tail Comment | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase9(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = '\n\n' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase10(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = '\n' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase11(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = '\n\n\n' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
def testNormalCase12(self): | |
ObjectList = [] | |
SupArchList = ['X64'] | |
Type = 'Foo' | |
Usage = 'UNDEFINED' | |
Str = '\n\n\n\n' | |
Object = self.ObjectFactory(SupArchList, Type, Usage, Str) | |
ObjectList.append(Object) | |
Result = GenSpecialSections(ObjectList, 'Hob') | |
Expected = '''# [Hob.X64] | |
# ## | |
# # | |
# # | |
# # | |
# Foo ## UNDEFINED | |
# | |
# | |
''' | |
self.assertEqual(Result, Expected) | |
# | |
# Test GenGenericCommentF | |
# | |
class GenGenericCommentFTest(unittest.TestCase): | |
def setUp(self): | |
pass | |
def tearDown(self): | |
pass | |
def testNormalCase1(self): | |
CommentLines = 'Comment Line 1' | |
Result = GenGenericCommentF(CommentLines) | |
Expected = '# Comment Line 1\n' | |
self.assertEqual(Result, Expected) | |
def testNormalCase2(self): | |
CommentLines = '\n' | |
Result = GenGenericCommentF(CommentLines) | |
Expected = '#\n' | |
self.assertEqual(Result, Expected) | |
def testNormalCase3(self): | |
CommentLines = '\n\n\n' | |
Result = GenGenericCommentF(CommentLines) | |
Expected = '#\n#\n#\n' | |
self.assertEqual(Result, Expected) | |
def testNormalCase4(self): | |
CommentLines = 'coment line 1\n' | |
Result = GenGenericCommentF(CommentLines) | |
Expected = '# coment line 1\n' | |
self.assertEqual(Result, Expected) | |
def testNormalCase5(self): | |
CommentLines = 'coment line 1\n coment line 2\n' | |
Result = GenGenericCommentF(CommentLines) | |
Expected = '# coment line 1\n# coment line 2\n' | |
self.assertEqual(Result, Expected) | |
if __name__ == '__main__': | |
Logger.Initialize() | |
unittest.main() |