diff -r 87cfa131b535 -r e7e0ae78773e configurationengine/source/cone/validation/tests/unittest_confmlfixing.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/source/cone/validation/tests/unittest_confmlfixing.py Tue Aug 10 14:29:28 2010 +0300 @@ -0,0 +1,79 @@ +# +# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +import os +import unittest +import logging + +ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) +TESTDATA_DIR = os.path.join(ROOT_PATH, 'testdata') +TEMP_DIR = os.path.join(ROOT_PATH, 'temp') + +from testautomation.base_testcase import BaseTestCase +from cone.public import api +import cone.validation.confmlvalidation + +class TestConfmlFixing(unittest.TestCase): + def test_confml_fixer_filter_problems(self): + fixer = cone.validation.confmlvalidation.FixerBase() + prbs = [api.Problem("msg1", type="test.foo.bar"), + api.Problem("msg2", type="test.foo.bar"), + api.Problem("msg3", type="test.foo.faa"), + api.Problem("msg4", type="test.foo.bar")] + self.assertEquals(len(fixer.filter_problems(prbs,'test.foo.bar')),3) + + def test_get_fixer_classes(self): + fixers = cone.validation.confmlvalidation.get_fixer_classes() + self.assertEquals(len(fixers),1) + +class TestConfmlFixModel(BaseTestCase): + def test_fix_duplicates(self): + prj_dir = os.path.join(TESTDATA_DIR, 'model/confml/single_files') + prj = api.Project(api.Storage.open(prj_dir)) + conf = prj.get_configuration("duplicate_root.confml") + vc = cone.validation.confmlvalidation.fix_configuration(conf) + self.assertEqual(len(vc.fixes), 1) + self.assertEquals(conf.list_configurations(),['duplicate_settings1.confml', + 'duplicate_settings2.confml']) + subconf1 = conf.get_configuration('duplicate_settings1.confml') + subconf2 = conf.get_configuration('duplicate_settings2.confml') + self.assertEquals(subconf2.list_all_features(),[]) + self.assertEquals(subconf1.list_all_features(),['Feature', + 'Feature.One', + 'Feature.Two', + 'Feature.Three', + 'Feature.NoData', + 'Feature.TestSequence', + 'Feature.TestSequence.SeqTwo', + 'Feature.TestSequence.SeqThree']) + +class TestConfmlFixingFiles(BaseTestCase): + + def test_export_fixed_configuration_test(self): + # Open the file as a configuration + prj_dir = os.path.join(TESTDATA_DIR, 'model/confml/single_files') + prj = api.Project(api.Storage.open(prj_dir)) + conf = prj.get_configuration('duplicate_root.confml') + vc = cone.validation.confmlvalidation.fix_configuration(conf) + self.recreate_dir(os.path.join(TEMP_DIR,'fixed')) + rstorage = api.Storage.open(os.path.join(TEMP_DIR,'fixed'), "w") + prj.export_configuration(conf, rstorage) + rstorage.save() + rstorage.close() + self.assert_dir_contents_equal(os.path.join(TEMP_DIR,'fixed'), + os.path.join(TESTDATA_DIR, 'model/confml/fixed_expected'), + ignore=[".metadata", '.svn']) +