реализовал тест для парсера InsideSetArrayParser
This commit is contained in:
parent
e9ce303a6c
commit
9d93d6ff49
|
|
@ -0,0 +1 @@
|
|||
__author__ = 'rzaitov'
|
||||
|
|
@ -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)
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue