diff -r 87cfa131b535 -r e7e0ae78773e configurationengine/source/cone/validation/tests/unittest_problem_type_filter.py --- /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'])