Skip to content

Commit a636a3a

Browse files
author
William Grant
committed
Further tests for bound methods and numpy objects
Tests that the reduce protocol is properly implemented, and that issue #107 is fixed.
1 parent 22f01c5 commit a636a3a

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

typed_python/compiler/tests/numpy_interaction_test.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,20 @@ def test_listof_from_sliced_numpy_array():
4646
assert ListOf(int)(y) == [0, 2]
4747

4848

49-
def test_can_serialize_numpy_ufunc():
49+
def test_can_serialize_numpy_ufuncs():
5050
assert numpy.sin == SerializationContext().deserialize(SerializationContext().serialize(numpy.sin))
51+
assert numpy.max == SerializationContext().deserialize(SerializationContext().serialize(numpy.max))
5152

5253

53-
def test_can_serialize_numpy_array():
54+
def test_can_serialize_numpy_array_from_builtin():
5455
x = numpy.ones(10)
5556
assert (x == SerializationContext().deserialize(SerializationContext().serialize(x))).all()
57+
58+
59+
def test_can_serialize_numpy_array_from_list():
60+
x = numpy.array([1, 2, 3])
61+
assert (x == SerializationContext().deserialize(SerializationContext().serialize(x))).all()
62+
63+
64+
def test_can_serialize_numpy_array_constructor():
65+
assert numpy.array == SerializationContext().deserialize(SerializationContext().serialize(numpy.array))

typed_python/types_serialization_test.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,6 +1339,29 @@ def f(self, x=10):
13391339

13401340
self.assertLess(currentMemUsageMb(), usage+.5)
13411341

1342+
def test_serialize_class_with_bound_methods(self):
1343+
class SomeClass:
1344+
pass
1345+
1346+
class SomeSubclass(SomeClass):
1347+
def __init__(self, x):
1348+
self.x = x
1349+
1350+
class ClassWithBoundMethod(Class, Final):
1351+
x = Member(OneOf(None, SomeClass))
1352+
1353+
def __init__(self):
1354+
self.x = None
1355+
1356+
def increment(self, y):
1357+
if self.x is None:
1358+
self.x = SomeSubclass(y)
1359+
else:
1360+
self.x = SomeSubclass(self.x.x + y)
1361+
1362+
self.assertEqual(ClassWithBoundMethod, ping_pong(ClassWithBoundMethod))
1363+
self.assertEqual(ClassWithBoundMethod.increment, ping_pong(ClassWithBoundMethod.increment))
1364+
13421365
def test_serialize_named_tuples_with_extra_fields(self):
13431366
T1 = NamedTuple(x=int)
13441367
T2 = NamedTuple(x=int, y=float, z=str)

0 commit comments

Comments
 (0)