diff --git a/.coveragerc b/.coveragerc index 1d76a1f..a8292f7 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,5 +1,7 @@ [run] branch = True +omit = + bonobo/examples/** [report] # Regexes for lines to exclude from consideration diff --git a/bonobo/util/objects.py b/bonobo/util/objects.py index b233fff..645890b 100644 --- a/bonobo/util/objects.py +++ b/bonobo/util/objects.py @@ -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 diff --git a/tests/test_config.py b/tests/fixme_config.py similarity index 100% rename from tests/test_config.py rename to tests/fixme_config.py diff --git a/tests/util/test_objects.py b/tests/util/test_objects.py new file mode 100644 index 0000000..93928d4 --- /dev/null +++ b/tests/util/test_objects.py @@ -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) + + +