76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
import unittest
|
|
from Core.LineConveyor.NullPreprocessor import NullPreprocessor
|
|
from parsers.SettingsParser.SettingsParser import SettingsParser
|
|
|
|
|
|
|
|
class TestSettingsParser(unittest.TestCase):
|
|
def setUp(self):
|
|
self.preprocessor = NullPreprocessor()
|
|
self.parser = SettingsParser(self.preprocessor)
|
|
|
|
def test_processLine(self):
|
|
line1 = "x.y.name1 = 'value1'"
|
|
line2 = "x.y.name2 = 'value2'"
|
|
line3 = "x.z.name1 = 'value3'"
|
|
line4 = "x.z.name2 = 'value4'"
|
|
|
|
line5 = "a.y.name1 = 'value5'"
|
|
line6 = "a.y.name2 = 'value6'"
|
|
line7 = "a.z.name1 = 'value7'"
|
|
line8 = "a.z.name2 = 'value8'"
|
|
|
|
self.parser.processLine(line1)
|
|
self.parser.processLine(line2)
|
|
self.parser.processLine(line3)
|
|
self.parser.processLine(line4)
|
|
self.parser.processLine(line5)
|
|
self.parser.processLine(line6)
|
|
self.parser.processLine(line7)
|
|
self.parser.processLine(line8)
|
|
|
|
self.assertEqual('value1', self.parser.settings['x']['y']['name1'])
|
|
self.assertEqual('value2', self.parser.settings['x']['y']['name2'])
|
|
self.assertEqual('value3', self.parser.settings['x']['z']['name1'])
|
|
self.assertEqual('value4', self.parser.settings['x']['z']['name2'])
|
|
|
|
self.assertEqual('value5', self.parser.settings['a']['y']['name1'])
|
|
self.assertEqual('value6', self.parser.settings['a']['y']['name2'])
|
|
self.assertEqual('value7', self.parser.settings['a']['z']['name1'])
|
|
self.assertEqual('value8', self.parser.settings['a']['z']['name2'])
|
|
|
|
def test_emptyLinesAndComments(self):
|
|
|
|
class PartialSettingsParser(SettingsParser):
|
|
def __init__(self, textPreprocessor):
|
|
SettingsParser.__init__(self, textPreprocessor)
|
|
self.processLineCall = 0
|
|
|
|
def processLine(self, line):
|
|
self.processLineCall += 1
|
|
|
|
self.parser = PartialSettingsParser(self.preprocessor)
|
|
content = """
|
|
valid.line.with.setting = 'some value'
|
|
# this is comment
|
|
|
|
another.valid.line = 'another value'
|
|
"""
|
|
|
|
self.parser.parse(content)
|
|
|
|
# всего 6 строк, 2 из которых пустые
|
|
# NullPreprocessor не уберет комментарии, поэтому будет 4 вызова processLine
|
|
self.assertEqual(4, self.parser.processLineCall)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|