--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/cone/validation/tests/unittest_problem_type_filter.py Tue Aug 10 14:29:28 2010 +0300
@@ -0,0 +1,135 @@
+#
+# 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 unittest
+
+from cone.public import api
+from cone.validation.problem_type_filter import ProblemTypeFilter
+
+class TestProblemTypeFilter(unittest.TestCase):
+ def test_empty_matches_everything(self):
+ filter = ProblemTypeFilter([], [])
+ self.assertTrue(filter.match(''))
+ self.assertTrue(filter.match('foo'))
+ self.assertTrue(filter.match('foo.bar'))
+ self.assertTrue(filter.match('foo.bar.baz'))
+
+ def test_single_include(self):
+ filter = ProblemTypeFilter(['foo.bar'], [])
+ self.assertFalse(filter.match(''))
+ self.assertFalse(filter.match('foo'))
+ self.assertTrue(filter.match('foo.bar'))
+ self.assertTrue(filter.match('foo.bar.baz'))
+ self.assertFalse(filter.match('bar'))
+
+ def test_single_exclude(self):
+ filter = ProblemTypeFilter([], ['foo.bar'])
+ self.assertTrue(filter.match(''))
+ self.assertTrue(filter.match('foo'))
+ self.assertTrue(filter.match('bar'))
+ self.assertFalse(filter.match('foo.bar'))
+ self.assertFalse(filter.match('foo.bar.baz'))
+
+ def test_include_and_exclude(self):
+ filter = ProblemTypeFilter(['foo'], ['foo.bar.baz'])
+ self.assertFalse(filter.match(''))
+ self.assertTrue(filter.match('foo'))
+ self.assertFalse(filter.match('bar'))
+ self.assertTrue(filter.match('foo.bar'))
+ self.assertFalse(filter.match('foo.bar.baz'))
+ self.assertFalse(filter.match('foo.bar.baz.x'))
+
+ def test_multiple_includes_and_excludes(self):
+ filter = ProblemTypeFilter(['foo', 'boo'], ['foo.bar.baz', 'boo.bar.baz'])
+
+ self.assertFalse(filter.match(''))
+ self.assertFalse(filter.match('bar'))
+
+ self.assertTrue(filter.match('foo'))
+ self.assertTrue(filter.match('foo.bar'))
+ self.assertFalse(filter.match('foo.bar.baz'))
+ self.assertFalse(filter.match('foo.bar.baz.x'))
+
+ self.assertTrue(filter.match('boo'))
+ self.assertTrue(filter.match('boo.bar'))
+ self.assertFalse(filter.match('boo.bar.baz'))
+ self.assertFalse(filter.match('boo.bar.baz.x'))
+
+ def test_wildcard_in_include(self):
+ filter = ProblemTypeFilter(['*.bar'], [])
+
+ self.assertFalse(filter.match('foo'))
+ self.assertFalse(filter.match('boo'))
+ self.assertFalse(filter.match('foo.baz.bar'))
+
+ self.assertTrue(filter.match('foo.bar'))
+ self.assertTrue(filter.match('foo.bar.baz'))
+ self.assertTrue(filter.match('boo.bar'))
+ self.assertTrue(filter.match('boo.bar.baz'))
+
+
+ filter = ProblemTypeFilter(['*.*.baz'], [])
+ self.assertTrue(filter.match('foo.bar.baz'))
+ self.assertTrue(filter.match('boo.bar.baz'))
+
+ self.assertFalse(filter.match('baz'))
+ self.assertFalse(filter.match('foo.baz'))
+
+ def test_wildcard_in_exclude(self):
+ filter = ProblemTypeFilter([], ['*.bar'])
+
+ self.assertTrue(filter.match('foo'))
+ self.assertTrue(filter.match('boo'))
+ self.assertTrue(filter.match('foo.baz.bar'))
+
+ self.assertFalse(filter.match('foo.bar'))
+ self.assertFalse(filter.match('foo.bar.baz'))
+ self.assertFalse(filter.match('boo.bar'))
+ self.assertFalse(filter.match('boo.bar.baz'))
+
+
+ filter = ProblemTypeFilter([], ['*.*.baz'])
+ self.assertFalse(filter.match('foo.bar.baz'))
+ self.assertFalse(filter.match('boo.bar.baz'))
+
+ self.assertTrue(filter.match('baz'))
+ self.assertTrue(filter.match('foo.baz'))
+
+ def test_filter_problems(self):
+ filter = ProblemTypeFilter(['foo'], ['foo.bar.baz'])
+ problems = [api.Problem('', type=''),
+ api.Problem('', type='foo'),
+ api.Problem('', type='bar'),
+ api.Problem('', type='foo.bar'),
+ api.Problem('', type='foo.bar.baz'),
+ api.Problem('', type='foo.bar.baz.x')]
+
+ filtered_problems = filter.filter(problems)
+ self.assertEquals(filtered_problems,
+ [api.Problem('', type='foo'),
+ api.Problem('', type='foo.bar')])
+
+ def test_filter_strings(self):
+ filter = ProblemTypeFilter(['foo'], ['foo.bar.baz'])
+ problems = ['',
+ 'foo',
+ 'bar',
+ 'foo.bar',
+ 'foo.bar.baz',
+ 'foo.bar.baz.x']
+
+ filtered_problems = filter.filter(problems, key=lambda item: item)
+ self.assertEquals(filtered_problems, ['foo', 'foo.bar'])