adds valueholder tests and fixes.

This commit is contained in:
Romain Dorgueil
2017-05-01 15:31:00 +02:00
parent 25253cf119
commit 159389e323
4 changed files with 76 additions and 2 deletions

View File

@ -1,5 +1,7 @@
[run]
branch = True
omit =
bonobo/examples/**
[report]
# Regexes for lines to exclude from consideration

View File

@ -30,6 +30,9 @@ class ValueHolder:
self.value = value
self.type = type
def __repr__(self):
return repr(self.value)
def __lt__(self, other):
return self.value < other
@ -56,6 +59,7 @@ class ValueHolder:
def __iadd__(self, other):
self.value += other
return self
def __sub__(self, other):
return self.value - other
@ -65,6 +69,7 @@ class ValueHolder:
def __isub__(self, other):
self.value -= other
return self
def __mul__(self, other):
return self.value * other
@ -74,6 +79,7 @@ class ValueHolder:
def __imul__(self, other):
self.value *= other
return self
def __matmul__(self, other):
return self.value @ other
@ -83,6 +89,7 @@ class ValueHolder:
def __imatmul__(self, other):
self.value @= other
return self
def __truediv__(self, other):
return self.value / other
@ -92,6 +99,7 @@ class ValueHolder:
def __itruediv__(self, other):
self.value /= other
return self
def __floordiv__(self, other):
return self.value // other
@ -101,6 +109,7 @@ class ValueHolder:
def __ifloordiv__(self, other):
self.value //= other
return self
def __mod__(self, other):
return self.value % other
@ -110,6 +119,7 @@ class ValueHolder:
def __imod__(self, other):
self.value %= other
return self
def __divmod__(self, other):
return divmod(self.value, other)
@ -118,13 +128,14 @@ class ValueHolder:
return divmod(other, self.value)
def __pow__(self, other):
return self.value**other
return self.value ** other
def __rpow__(self, other):
return other**self.value
return other ** self.value
def __ipow__(self, other):
self.value **= other
return self
def __lshift__(self, other):
return self.value << other
@ -134,6 +145,7 @@ class ValueHolder:
def __ilshift__(self, other):
self.value <<= other
return self
def __rshift__(self, other):
return self.value >> other
@ -143,6 +155,7 @@ class ValueHolder:
def __irshift__(self, other):
self.value >>= other
return self
def __and__(self, other):
return self.value & other
@ -152,6 +165,7 @@ class ValueHolder:
def __iand__(self, other):
self.value &= other
return self
def __xor__(self, other):
return self.value ^ other
@ -161,6 +175,7 @@ class ValueHolder:
def __ixor__(self, other):
self.value ^= other
return self
def __or__(self, other):
return self.value | other
@ -170,6 +185,7 @@ class ValueHolder:
def __ior__(self, other):
self.value |= other
return self
def __neg__(self):
return -self.value

View File

@ -0,0 +1,56 @@
from bonobo.util.objects import Wrapper, get_name, ValueHolder
class foo:
pass
class bar:
__name__ = 'baz'
def test_get_name():
assert get_name(42) == 'int'
assert get_name('eat at joe.') == 'str'
assert get_name(str) == 'str'
assert get_name(object) == 'object'
assert get_name(get_name) == 'get_name'
assert get_name(foo) == 'foo'
assert get_name(foo()) == 'foo'
assert get_name(bar) == 'bar'
assert get_name(bar()) == 'baz'
def test_wrapper_name():
assert get_name(Wrapper(42)) == 'int'
assert get_name(Wrapper('eat at joe.')) == 'str'
assert get_name(Wrapper(str)) == 'str'
assert get_name(Wrapper(object)) == 'object'
assert get_name(Wrapper(foo)) == 'foo'
assert get_name(Wrapper(foo())) == 'foo'
assert get_name(Wrapper(bar)) == 'bar'
assert get_name(Wrapper(bar())) == 'baz'
assert get_name(Wrapper(get_name)) == 'get_name'
def test_valueholder():
x = ValueHolder(42)
assert x == 42
x += 1
assert x == 43
assert x + 1 == 44
assert x == 43
y = ValueHolder(44)
assert y == 44
y -= 1
assert y == 43
assert y - 1 == 42
assert y == 43
assert y == x
assert y is not x
assert repr(x) == repr(y) == repr(43)