Index: mojo/python/tests/bindings_serialization_deserialization_unittest.py |
diff --git a/mojo/python/tests/bindings_serialization_deserialization_unittest.py b/mojo/python/tests/bindings_serialization_deserialization_unittest.py |
index da24645447bb119920370591b466d097e5e6ba2d..fa6a9bfe81fa175cd3f48c175208d5f80d943416 100644 |
--- a/mojo/python/tests/bindings_serialization_deserialization_unittest.py |
+++ b/mojo/python/tests/bindings_serialization_deserialization_unittest.py |
@@ -15,6 +15,16 @@ import sample_service_mojom |
def _NewHandle(): |
return mojo.system.MessagePipe().handle0 |
+ |
+def _NewBar(): |
+ bar_instance = sample_service_mojom.Bar() |
sdefresne
2014/09/18 12:56:22
nit: I think you don't test serialization/deserial
qsr
2014/09/18 14:16:37
Added new test for this.
|
+ bar_instance.alpha = 22 |
+ bar_instance.beta = 87 |
+ bar_instance.gamma = 122 |
+ bar_instance.type = sample_service_mojom.Bar.Type.BOTH |
+ return bar_instance |
+ |
+ |
def _NewFoo(): |
foo_instance = sample_service_mojom.Foo() |
foo_instance.name = "Foo.name" |
@@ -23,10 +33,10 @@ def _NewFoo(): |
foo_instance.a = False |
foo_instance.b = True |
foo_instance.c = True |
- foo_instance.bar = sample_service_mojom.Bar() |
+ foo_instance.bar = _NewBar() |
foo_instance.extra_bars = [ |
- sample_service_mojom.Bar(), |
- sample_service_mojom.Bar() |
+ _NewBar(), |
+ _NewBar(), |
] |
foo_instance.data = 'Hello world' |
foo_instance.source = _NewHandle() |
@@ -41,12 +51,89 @@ def _NewFoo(): |
], |
[], |
] |
- foo_instance.array_of_bools = [ True, 0, 1, 2, 0 ] |
+ foo_instance.array_of_bools = [ True, 0, 1, 2, 0, 0, 0, 0, 0, True ] |
return foo_instance |
+ |
+def _AreBarEquals(bar1, bar2): |
+ if not bool(bar1): |
sdefresne
2014/09/18 12:56:22
style: if not bar1:
When using an object in a boo
qsr
2014/09/18 14:16:37
Method doesn't exist anymore.
|
+ return bar1 == bar2 |
+ if not bool(bar2): |
+ return False |
+ |
+ properties = [ "alpha", |
sdefresne
2014/09/18 12:56:22
nit: you can use a tuple instead of a list here si
qsr
2014/09/18 14:16:37
This doesn't exist anymore.
|
+ "beta", |
+ "gamma", |
+ "type", |
+ ] |
+ for p in properties: |
sdefresne
2014/09/18 12:56:22
You can extract this loop in a method.
BTW, if yo
qsr
2014/09/18 14:16:37
Changed equality checking by having a generic equa
|
+ p1 = getattr(bar1, p) |
+ p2 = getattr(bar1, p) |
sdefresne
2014/09/18 12:56:22
s/bar1/bar2/
qsr
2014/09/18 14:16:37
Not there anymore.
|
+ if p1 != p2: |
+ print '\nElement are not equals for property %r. %r != %r.' % (p, p1, p2) |
+ return False |
+ return True |
+ |
+ |
+def _AreBarArraysEquals(bars1, bars2): |
+ if not bool(bars1): |
+ return bars1 == bars2 |
+ if not bool(bars2): |
+ return False |
+ if len(bars1) != len(bars2): |
+ return False |
+ for (bar1, bar2) in zip(bars1, bars2): |
+ if not _AreBarEquals(bar1, bar2): |
+ return False |
+ return True |
+ |
+ |
+def _AreFooEquals(foo1, foo2): |
+ if not bool(foo1): |
+ return foo1 == foo2 |
+ if not bool(foo2): |
+ return False |
+ |
+ properties = [ "name", |
+ "x", |
+ "y", |
+ "a", |
+ "b", |
+ "c", |
+ "data", |
+ "source", |
+ "input_streams", |
+ "output_streams", |
+ "array_of_array_of_bools", |
+ "multi_array_of_strings", |
+ "array_of_bools" |
sdefresne
2014/09/18 12:56:22
nit: missing trailing comma
qsr
2014/09/18 14:16:37
Not there anymore.
|
+ ] |
+ for p in properties: |
+ p1 = getattr(foo1, p) |
+ p2 = getattr(foo2, p) |
+ if p1 != p2: |
+ print 'Element are not equals for property %r. %r != %r.' % (p, p1, p2) |
+ return False |
+ if not _AreBarEquals(foo1.bar, foo2.bar): |
+ return False |
+ if not _AreBarArraysEquals(foo1.extra_bars, foo2.extra_bars): |
+ return False |
+ return True |
+ |
class SerializationDeserializationTest(unittest.TestCase): |
def testFooSerialization(self): |
(data, _) = _NewFoo().Serialize() |
self.assertTrue(len(data)) |
self.assertEquals(len(data) % 8, 0) |
+ |
+ def testFooDeserialization(self): |
+ (data, handles) = _NewFoo().Serialize() |
+ self.assertTrue( |
+ sample_service_mojom.Foo.Deserialize(memoryview(data), handles)) |
+ |
+ def testFooSerializationDeserialization(self): |
+ foo1 = _NewFoo() |
+ (data, handles) = foo1.Serialize() |
+ foo2 = sample_service_mojom.Foo.Deserialize(memoryview(data), handles) |
+ self.assertTrue(_AreFooEquals(foo1, foo2)) |
sdefresne
2014/09/18 12:56:22
Can you test failure to deserialization by passing
qsr
2014/09/18 14:16:37
Done.
|