def GenPcdDeclaration(ContainerFile, PcdInfo, Language, MacroReplaceDict): HelpStr = '' PromptStr = '' TailHelpStr = '' TokenGuidCName, TokenName, Value, DatumType, Token, Type, \ GenericComment, TailComment, Arch = PcdInfo Pcd = PcdObject() Pcd.SetCName(TokenName) Pcd.SetToken(Token) Pcd.SetTokenSpaceGuidCName(TokenGuidCName) Pcd.SetDatumType(DatumType) Pcd.SetDefaultValue(Value) Pcd.SetValidUsage(Type) # # MaxDatumSize is required field for 'VOID*' PCD # if DatumType == TAB_PTR_TYPE_PCD: Pcd.SetMaxDatumSize(ITEM_UNDEFINED) SupArchList = [Arch] Pcd.SetSupArchList(SupArchList) if GenericComment: HelpStr, PcdErrList, PromptStr = ParseDecPcdGenericComment(GenericComment, ContainerFile, TokenGuidCName, TokenName, MacroReplaceDict) if PcdErrList: Pcd.SetPcdErrorsList(PcdErrList) if TailComment: SupModuleList, TailHelpStr = ParseDecPcdTailComment(TailComment, ContainerFile) if SupModuleList: Pcd.SetSupModuleList(SupModuleList) if HelpStr and (not HelpStr.endswith('\n')) and TailHelpStr: HelpStr += '\n' HelpStr += TailHelpStr if HelpStr: HelpTxtObj = TextObject() HelpTxtObj.SetLang(Language) HelpTxtObj.SetString(HelpStr) Pcd.SetHelpTextList([HelpTxtObj]) if PromptStr: TxtObj = TextObject() TxtObj.SetLang(Language) TxtObj.SetString(PromptStr) Pcd.SetPromptList([TxtObj]) return Pcd
def testNormalCase2(self): TestCommentLines = \ '''## hello world # second line # @ValidList 1, 2, 3 # other line''' CommentList = GetSplitValueList(TestCommentLines, "\n") LineNum = 0 TestCommentLinesList = [] for Comment in CommentList: LineNum += 1 TestCommentLinesList.append((Comment, LineNum)) (HelpTxt, PcdErr) = \ ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest') self.failIf(not HelpTxt) self.failIf(not PcdErr) self.assertEqual(HelpTxt, 'hello world\n' + 'second line\n' + 'other line') ExpectedList = GetSplitValueList('1 2 3', TAB_SPACE_SPLIT) ActualList = [item for item in \ GetSplitValueList(PcdErr.GetValidValue(), TAB_SPACE_SPLIT) if item] self.assertEqual(ExpectedList, ActualList) self.failIf(PcdErr.GetExpression()) self.failIf(PcdErr.GetValidValueRange())
def testNormalCase6(self): TestCommentLines = \ '''#''' CommentList = GetSplitValueList(TestCommentLines, "\n") LineNum = 0 TestCommentLinesList = [] for Comment in CommentList: LineNum += 1 TestCommentLinesList.append((Comment, LineNum)) (HelpTxt, PcdErr) = \ ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest') self.assertEqual(HelpTxt, '\n') self.failIf(PcdErr)
def testNormalCase1(self): TestCommentLines = \ '''## hello world # second line''' CommentList = GetSplitValueList(TestCommentLines, "\n") LineNum = 0 TestCommentLinesList = [] for Comment in CommentList: LineNum += 1 TestCommentLinesList.append((Comment, LineNum)) (HelpTxt, PcdErr) = \ ParseDecPcdGenericComment(TestCommentLinesList, 'testNormalCase1') self.failIf(not HelpTxt) self.failIf(PcdErr) self.assertEqual(HelpTxt, 'hello world\n' + 'second line')
def testNormalCase5(self): TestCommentLines = \ '''# @Expression LT 1 AND GT 2''' CommentList = GetSplitValueList(TestCommentLines, "\n") LineNum = 0 TestCommentLinesList = [] for Comment in CommentList: LineNum += 1 TestCommentLinesList.append((Comment, LineNum)) (HelpTxt, PcdErr) = \ ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest') self.failIf(HelpTxt) self.failIf(not PcdErr) self.assertEqual(PcdErr.GetExpression().strip(), 'LT 1 AND GT 2') self.failIf(PcdErr.GetValidValueRange()) self.failIf(PcdErr.GetValidValue())
def testErrorCase1(self): TestCommentLines = \ '''## hello world # second line # @ValidList 1, 2, 3 # @Expression LT 1 AND GT 2 # other line''' CommentList = GetSplitValueList(TestCommentLines, "\n") LineNum = 0 TestCommentLinesList = [] for Comment in CommentList: LineNum += 1 TestCommentLinesList.append((Comment, LineNum)) try: ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest') except Logger.FatalError: pass
def testNormalCase3(self): TestCommentLines = \ '''## hello world # second line # @ValidRange LT 1 AND GT 2 # other line''' CommentList = GetSplitValueList(TestCommentLines, "\n") LineNum = 0 TestCommentLinesList = [] for Comment in CommentList: LineNum += 1 TestCommentLinesList.append((Comment, LineNum)) (HelpTxt, PcdErr) = \ ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest') self.failIf(not HelpTxt) self.failIf(not PcdErr) self.assertEqual(HelpTxt, 'hello world\n' + 'second line\n' + 'other line') self.assertEqual(PcdErr.GetValidValueRange().strip(), 'LT 1 AND GT 2') self.failIf(PcdErr.GetExpression()) self.failIf(PcdErr.GetValidValue())