реализовал тест для парсера InsideSetArrayParser

This commit is contained in:
rzaitov 2013-11-12 20:40:04 +04:00
parent e9ce303a6c
commit 9d93d6ff49
3 changed files with 63 additions and 5 deletions

View File

@ -0,0 +1 @@
__author__ = 'rzaitov'

View File

@ -0,0 +1,46 @@
import unittest
from Tests.UnitTests.LineParserTestCaseBase import LineParserTestCaseBase
from parsers.InsideParser.InsideSetArrayParser import InsideSetArrayParser
class TestInsideSetArrayParser(LineParserTestCaseBase):
_validSingleValueTest = "inside 'my.txt' set KEY with values 'value1'"
_validMultiValueTest = "inside 'my.txt' set KEY with values 'value1:value2:value3'"
def setUp(self):
self.textParser = InsideSetArrayParser('txt')
def test_isValid(self):
self.isValidText(TestInsideSetArrayParser._validSingleValueTest)
self.isValidText(TestInsideSetArrayParser._validMultiValueTest)
self.isValidText("inside 'my.txt' set KEY with values 'value1:value2:value3'")
def test_isNotValid(self):
self.isNotValidText("inside 'my.sln' set KEY with values 'value1'")
self.isNotValidText("inside 'my.sln' set KEY with values 'value1:value2'")
self.isNotValidText("inside 'my.txt' set KEY with values 'value1' ")
self.isNotValidText("inside 'my.txt' set KEY with values 'value1' bla bla")
def test_parse(self):
self.checkParse(TestInsideSetArrayParser._validSingleValueTest, 'my.txt', 'KEY', 'value1')
self.checkParse(TestInsideSetArrayParser._validMultiValueTest, 'my.txt', 'KEY', 'value1:value2:value3')
def test_values(self):
self.checkValues(TestInsideSetArrayParser._validSingleValueTest, ['value1'])
self.checkValues(TestInsideSetArrayParser._validMultiValueTest, ['value1', 'value2', 'value3'])
def checkParse(self, line, filePath, key, value):
result = self.textParser.parseLine(line)
self.assertEqual(filePath, result[0])
self.assertEqual(key, result[1])
self.assertEqual(value, result[2])
def checkValues(self, text, expectedValues):
self.textParser.parseLine(text)
self.assertEqual(len(expectedValues), len(self.textParser.values))
for v in self.textParser.values:
self.assertTrue(v in expectedValues)

View File

@ -6,25 +6,36 @@ class InsideSetArrayParser(InsideParserBase):
def __init__(self, fileExt):
InsideParserBase.__init__(self, fileExt)
self.values = None
def parseLine(self, line):
match = self.fetchMatchFor(line)
filePath = match.group('file')
key = match.group('key')
value = match.group('value')
valuesStr = match.group('values')
return filePath, key, value
self.values = self.parseValues(valuesStr)
return filePath, key, valuesStr
def getMatchInfo(self, line):
assert line is not None
keyRegexp = r'(?P<key>[a-zA-Z]+)'
valueRegexp = r"'(?P<value>[^']+)'$"
valueRegexp = r"'(?P<values>[^']+)'$"
regexpSource = self.startsWith('inside') + self.filePathRegexp + self.keywordToken('set') + keyRegexp + \
self.keywordToken('to') + valueRegexp
self.keywordToken('with') + self.than('values') + valueRegexp
regexp = re.compile(regexpSource, re.UNICODE)
match = regexp.match(line)
return match, regexpSource
return match, regexpSource
def parseValues(self, valuesStr):
assert valuesStr is not None
assert len(valuesStr) > 0
values = valuesStr.split(':')
return values