configurationengine/source/cone/validation/tests/unittest_confmlfixing.py
changeset 3 e7e0ae78773e
--- /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'])
+