class ParserTreeHelperTests(unittest.TestCase): emptyTokenTag = "" def setUp(self): self.pth = ParserTreeHelper() #tag Valdetion def testValidTag(self): validTokenTag = "~~" self.assertTrue(self.pth.isTokenATag(validTokenTag), 'Tag should be marked as Tag Token') def testInvalidTag(self): invalidTokenTag = "Just a simple text" self.assertFalse(self.pth.isTokenATag(invalidTokenTag), 'Tag is invalid and should NOT be marked as Tag Token') def testEmptyTag(self): self.assertFalse(self.pth.isTokenATag(self.emptyTokenTag), 'Tag is empty and should NOT be marked as Tag Token') #getEndingTag method def testGettingEndingTagWithEmptyToken(self): self.assertEqual(self.pth.getEndingTag(self.emptyTokenTag), None, 'Result is not None') def testGettingEndingTagWithValidToken(self): validSimpleTag = "*" self.assertEqual(self.pth.getEndingTag(validSimpleTag), "*", 'Returned token is not valid') def testGettingEndingTagWithInvalidToken(self): invalidTag = "blabla" self.assertEqual(self.pth.getEndingTag(invalidTag), None, 'Invalid token did not return none') #getTagId method def testGettingTagIdWithEmptyToken(self): emptyTokenTag = "" returnedValue = self.pth.getTagId(emptyTokenTag) expectedValue = None self.assertEqual(returnedValue, expectedValue, 'Empty token did not return None') def testGettingTagIdWithValidToken(self): validTokenTag = "*" returnedValue = self.pth.getTagId(validTokenTag) expectedValue = 'bold' self.assertEqual(returnedValue, expectedValue, 'Valid token returned wrong value') def testGettingTagIdWithInvalidToken(self): invalidTokenTag = "i'n'v" returnedValue = self.pth.getTagId(invalidTokenTag) expectedValue = None self.assertEqual(returnedValue, expectedValue, 'Empty token did not return None') def testAffectingLineWithInvalidToken(self): invalidToken = "a" returnedValue = self.pth.affectsLine(invalidToken) expectedValue = False self.assertEqual(returnedValue, expectedValue, 'Invalid affecting token did not return None')
class ListManager(object): __list = None __pth = None __debug = None def __init__(self): self.__pth = ParserTreeHelper() self.__debug = False @staticmethod def clearListFromEmptyTokens(tokenList): whiteTokensCount = tokenList.count('') for i in range(whiteTokensCount): tokenList.pop(tokenList.index('')) return tokenList def loadList(self, list): self.__list = list #TODO test def findIndexOfEndingTag(self, token): if not self.__pth.isTokenATag(token): raise NotATagException specialRequirement = self.__pth.getSpecialRequirements(token) endingTag = self.__pth.getEndingTag(token) expectedIndexOfEndingTag = 0 skipFirstOccurenceOfTag = False if token == endingTag: skipFirstOccurenceOfTag = True counter = 0 start_token_found = False for idx, currentTokenElement in enumerate(self.__list): counter = idx if currentTokenElement == token: start_token_found = True if specialRequirement == 'FirstInLine': if idx != 0: if self.__list[idx-1] != '\n': raise NotATagException if (currentTokenElement == endingTag) and start_token_found: if skipFirstOccurenceOfTag: skipFirstOccurenceOfTag = False continue else: expectedIndexOfEndingTag = idx break if self.__pth.affectsLine(token): return counter return expectedIndexOfEndingTag #todo test def parseListToElement(self): headElement = Element("headElement") skip = None for i, currentToken in enumerate(self.__list): if i < skip: continue newElement = Element("token") if not self.__pth.isTokenATag(currentToken): newElement.set('name', 'text') newElement.text = currentToken else: try: endingTagIndex = self.findIndexOfEndingTag(currentToken) except NotATagException: newElement.set('name', 'text') newElement.text = currentToken else: currentTokenName = self.__pth.getTagId(currentToken) newElement.set('name', currentTokenName) trimmedList = self.cutList(i, endingTagIndex) tmpListManger = ListManager() tmpListManger.loadList(trimmedList) returnedElement = tmpListManger.parseListToElement() newElement.append(returnedElement) skip = endingTagIndex headElement.append(newElement) return headElement def cutList(self, startingIndex, endingIndex): return self.__list[startingIndex+1 : endingIndex]
def setUp(self): self.pth = ParserTreeHelper()
def __init__(self): self.__pth = ParserTreeHelper() self.__debug = False