summaryrefslogtreecommitdiffstats
path: root/tests/test_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_util.py')
-rw-r--r--tests/test_util.py367
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