diff --git a/scripts/TouchinBuild/Tests/UnitTests/SettingsMerger/test_SettingsMerger.py b/scripts/TouchinBuild/Tests/UnitTests/SettingsMerger/test_SettingsMerger.py index 6936e13..a97056c 100644 --- a/scripts/TouchinBuild/Tests/UnitTests/SettingsMerger/test_SettingsMerger.py +++ b/scripts/TouchinBuild/Tests/UnitTests/SettingsMerger/test_SettingsMerger.py @@ -45,3 +45,32 @@ class TestSettingsMerger(unittest.TestCase): self.assertEqual('new_value3', self.globalSettings['child1']['sub_key1']) self.assertEqual('value4', self.globalSettings['child1']['sub_key2']) + def test_getPropertyName(self): + self.checkName(['one', 'two', 'three'], 'three') + self.checkName(['one', 'two'], 'two') + self.checkName(['one'], 'one') + + def checkName(self, segments, expectedName): + name = self.merger.getPropertyName(segments) + self.assertEqual(name, expectedName) + + def test_checkPath(self): + self.checkPath(['one', 'two', 'three'], ['one', 'two']) + self.checkPath(['one', 'two'], ['one']) + self.checkPath(['one'], []) + + def checkPath(self, segments, expectedPath): + path = self.merger.getPath(segments) + + self.assertListEqual(expectedPath, path) + + def test_mergeNotExistSetting(self): + description = { + 'segments': ['new_key'], + 'value': 'new_value' + } + + print self.globalSettings + self.assertEqual('new_value', self.globalSettings['new_key']) + + diff --git a/scripts/TouchinBuild/parsers/SettingsParser/SettingsMerger.py b/scripts/TouchinBuild/parsers/SettingsParser/SettingsMerger.py index 9bb5684..b45b829 100644 --- a/scripts/TouchinBuild/parsers/SettingsParser/SettingsMerger.py +++ b/scripts/TouchinBuild/parsers/SettingsParser/SettingsMerger.py @@ -6,8 +6,8 @@ class SettingsMerger: value = settingDescription['value'] segments = settingDescription['segments'] - propPath = segments[0:-1] - propName = segments[-1] + propPath = self.getPath(segments) + propName = self.getPropertyName(segments) settingsDict = self.getSettingsDictByPath(globalSettings, propPath) settingsDict[propName] = value @@ -22,4 +22,12 @@ class SettingsMerger: settingsDict = settingsDict[segment] - return settingsDict \ No newline at end of file + return settingsDict + + def getPath(self, segments): + assert segments is not None + return segments[0:-1] + + def getPropertyName(self, segments): + assert segments is not None + return segments[-1] \ No newline at end of file