diff options
Diffstat (limited to 'tests/test_util.py')
-rw-r--r-- | tests/test_util.py | 367 |
1 files changed, 0 insertions, 367 deletions
diff --git a/tests/test_util.py b/tests/test_util.py deleted file mode 100644 index f87822a22..000000000 --- a/tests/test_util.py +++ /dev/null @@ -1,367 +0,0 @@ -# Authors: -# Jason Gerard DeRose <jderose@redhat.com> -# -# Copyright (C) 2008 Red Hat -# see file 'COPYING' for use and warranty information -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -""" -Test the `tests.util` module. -""" - -import re -import util -from util import raises, TYPE, VALUE, LEN, KEYS - - -class Prop(object): - def __init__(self, *ops): - self.__ops = frozenset(ops) - self.__prop = 'prop value' - - def __get_prop(self): - if 'get' not in self.__ops: - raise AttributeError('get prop') - return self.__prop - - def __set_prop(self, value): - if 'set' not in self.__ops: - raise AttributeError('set prop') - self.__prop = value - - def __del_prop(self): - if 'del' not in self.__ops: - raise AttributeError('del prop') - self.__prop = None - - prop = property(__get_prop, __set_prop, __del_prop) - - -class test_Fuzzy(object): - klass = util.Fuzzy - - def test_init(self): - inst = self.klass() - assert inst.regex is None - assert inst.type is None - assert inst.test is None - assert inst.re is None - - inst = self.klass('(foo|bar)') - assert inst.regex == '(foo|bar)' - assert inst.type is unicode - assert inst.test is None - assert isinstance(inst.re, re._pattern_type) - - inst = self.klass('(foo|bar)', type=str) - assert inst.regex == '(foo|bar)' - assert inst.type is str - assert inst.test is None - assert isinstance(inst.re, re._pattern_type) - - t = lambda other: other > 500 - - inst = self.klass(test=t) - assert inst.regex is None - assert inst.type is None - assert inst.test is t - assert inst.re is None - - inst = self.klass(type=(int, float), test=t) - assert inst.regex is None - assert inst.type == (int, float) - assert inst.test is t - assert inst.re is None - - def test_repr(self): - s = 'Fuzzy(%r, %r, %r)' - t = lambda other: 0.0 <= other <= 1.0 - - inst = self.klass() - assert repr(inst) == s % (None, None, None) - - inst = self.klass('foo') - assert repr(inst) == s % ('foo', unicode, None) - - inst = self.klass(type=(int, float)) - assert repr(inst) == s % (None, (int, float), None) - - inst = self.klass(type=(int, float), test=t) - assert repr(inst) == s % (None, (int, float), t) - - inst = self.klass(test=t) - assert repr(inst) == s % (None, None, t) - - def test_eq(self): - assert (self.klass('bar') == u'foobar') is True - assert (self.klass('^bar') == u'foobar') is False - assert (self.klass('bar', type=str) == u'foobar') is False - - assert ('18' == self.klass()) is True - assert ('18' == self.klass(type=int)) is False - assert (18 == self.klass(type=int)) is True - assert ('18' == self.klass(type=(int, str))) is True - - assert (self.klass() == '18') is True - assert (self.klass(type=int) == '18') is False - assert (self.klass(type=int) == 18) is True - assert (self.klass(type=(int, str)) == '18') is True - - t = lambda other: other.endswith('bar') - assert (self.klass(test=t) == 'foobar') is True - assert (self.klass(test=t, type=unicode) == 'foobar') is False - assert (self.klass(test=t) == 'barfoo') is False - - assert (False == self.klass()) is True - assert (True == self.klass()) is True - assert (None == self.klass()) is True - - -def test_assert_deepequal(): - f = util.assert_deepequal - - # Test with good scalar values: - f(u'hello', u'hello') - f(util.Fuzzy(), u'hello') - f(util.Fuzzy(type=unicode), u'hello') - f(util.Fuzzy('ell'), u'hello') - f(util.Fuzzy(test=lambda other: other.endswith('llo')), u'hello') - f(18, 18) - f(util.Fuzzy(), 18) - f(util.Fuzzy(type=int), 18) - f(util.Fuzzy(type=(int, float), test=lambda other: other > 17.9), 18) - - # Test with bad scalar values: - e = raises(AssertionError, f, u'hello', u'world', 'foo') - assert str(e) == VALUE % ( - 'foo', u'hello', u'world', tuple() - ) - - e = raises(AssertionError, f, 'hello', u'hello', 'foo') - assert str(e) == TYPE % ( - 'foo', str, unicode, 'hello', u'hello', tuple() - ) - - e = raises(AssertionError, f, 18, 18.0, 'foo') - assert str(e) == TYPE % ( - 'foo', int, float, 18, 18.0, tuple() - ) - - # Test with good compound values: - a = [ - u'hello', - dict(naughty=u'nurse'), - 18, - ] - b = [ - u'hello', - dict(naughty=u'nurse'), - 18, - ] - f(a, b) - - # Test with bad compound values: - b = [ - 'hello', - dict(naughty=u'nurse'), - 18, - ] - e = raises(AssertionError, f, a, b, 'foo') - assert str(e) == TYPE % ( - 'foo', unicode, str, u'hello', 'hello', (2,) - ) - - b = [ - u'hello', - dict(naughty='nurse'), - 18, - ] - e = raises(AssertionError, f, a, b, 'foo') - assert str(e) == TYPE % ( - 'foo', unicode, str, u'nurse', 'nurse', (1, 'naughty') - ) - - b = [ - u'hello', - dict(naughty=u'nurse'), - 18.0, - ] - e = raises(AssertionError, f, a, b, 'foo') - assert str(e) == TYPE % ( - 'foo', int, float, 18, 18.0, (0,) - ) - - # List length mismatch - b = [ - u'hello', - dict(naughty=u'nurse'), - 18, - 19 - ] - e = raises(AssertionError, f, a, b, 'foo') - assert str(e) == LEN % ( - 'foo', 3, 4, a, b, tuple() - ) - - b = [ - dict(naughty=u'nurse'), - 18, - ] - e = raises(AssertionError, f, a, b, 'foo') - assert str(e) == LEN % ( - 'foo', 3, 2, a, b, tuple() - ) - - # Dict keys mismatch: - - # Missing - b = [ - u'hello', - dict(), - 18, - ] - e = raises(AssertionError, f, a, b, 'foo') - assert str(e) == KEYS % ('foo', - ['naughty'], [], - dict(naughty=u'nurse'), dict(), - (1,) - ) - - # Extra - b = [ - u'hello', - dict(naughty=u'nurse', barely=u'legal'), - 18, - ] - e = raises(AssertionError, f, a, b, 'foo') - assert str(e) == KEYS % ('foo', - [], ['barely'], - dict(naughty=u'nurse'), dict(naughty=u'nurse', barely=u'legal'), - (1,) - ) - - # Missing + Extra - b = [ - u'hello', - dict(barely=u'legal'), - 18, - ] - e = raises(AssertionError, f, a, b, 'foo') - assert str(e) == KEYS % ('foo', - ['naughty'], ['barely'], - dict(naughty=u'nurse'), dict(barely=u'legal'), - (1,) - ) - - -def test_yes_raised(): - f = util.raises - - class SomeError(Exception): - pass - - class AnotherError(Exception): - pass - - def callback1(): - 'raises correct exception' - raise SomeError() - - def callback2(): - 'raises wrong exception' - raise AnotherError() - - def callback3(): - 'raises no exception' - - f(SomeError, callback1) - - raised = False - try: - f(SomeError, callback2) - except AnotherError: - raised = True - assert raised - - raised = False - try: - f(SomeError, callback3) - except util.ExceptionNotRaised: - raised = True - assert raised - - -def test_no_set(): - # Tests that it works when prop cannot be set: - util.no_set(Prop('get', 'del'), 'prop') - - # Tests that ExceptionNotRaised is raised when prop *can* be set: - raised = False - try: - util.no_set(Prop('set'), 'prop') - except util.ExceptionNotRaised: - raised = True - assert raised - - -def test_no_del(): - # Tests that it works when prop cannot be deleted: - util.no_del(Prop('get', 'set'), 'prop') - - # Tests that ExceptionNotRaised is raised when prop *can* be set: - raised = False - try: - util.no_del(Prop('del'), 'prop') - except util.ExceptionNotRaised: - raised = True - assert raised - - -def test_read_only(): - # Test that it works when prop is read only: - assert util.read_only(Prop('get'), 'prop') == 'prop value' - - # Test that ExceptionNotRaised is raised when prop can be set: - raised = False - try: - util.read_only(Prop('get', 'set'), 'prop') - except util.ExceptionNotRaised: - raised = True - assert raised - - # Test that ExceptionNotRaised is raised when prop can be deleted: - raised = False - try: - util.read_only(Prop('get', 'del'), 'prop') - except util.ExceptionNotRaised: - raised = True - assert raised - - # Test that ExceptionNotRaised is raised when prop can be both set and - # deleted: - raised = False - try: - util.read_only(Prop('get', 'del'), 'prop') - except util.ExceptionNotRaised: - raised = True - assert raised - - # Test that AttributeError is raised when prop can't be read: - raised = False - try: - util.read_only(Prop(), 'prop') - except AttributeError: - raised = True - assert raised |