Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import unittest | 5 import unittest |
| 6 | 6 |
| 7 # pylint: disable=F0401 | 7 # pylint: disable=F0401 |
| 8 import mojo.system | 8 import mojo.system |
| 9 | 9 |
| 10 # Generated files | 10 # Generated files |
| 11 # pylint: disable=F0401 | 11 # pylint: disable=F0401 |
| 12 import sample_service_mojom | 12 import sample_service_mojom |
| 13 | 13 |
| 14 | 14 |
| 15 def _NewHandle(): | 15 def _NewHandle(): |
| 16 return mojo.system.MessagePipe().handle0 | 16 return mojo.system.MessagePipe().handle0 |
| 17 | 17 |
| 18 | |
| 19 def _NewBar(): | |
| 20 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.
| |
| 21 bar_instance.alpha = 22 | |
| 22 bar_instance.beta = 87 | |
| 23 bar_instance.gamma = 122 | |
| 24 bar_instance.type = sample_service_mojom.Bar.Type.BOTH | |
| 25 return bar_instance | |
| 26 | |
| 27 | |
| 18 def _NewFoo(): | 28 def _NewFoo(): |
| 19 foo_instance = sample_service_mojom.Foo() | 29 foo_instance = sample_service_mojom.Foo() |
| 20 foo_instance.name = "Foo.name" | 30 foo_instance.name = "Foo.name" |
| 21 foo_instance.x = 23 | 31 foo_instance.x = 23 |
| 22 foo_instance.y = -23 | 32 foo_instance.y = -23 |
| 23 foo_instance.a = False | 33 foo_instance.a = False |
| 24 foo_instance.b = True | 34 foo_instance.b = True |
| 25 foo_instance.c = True | 35 foo_instance.c = True |
| 26 foo_instance.bar = sample_service_mojom.Bar() | 36 foo_instance.bar = _NewBar() |
| 27 foo_instance.extra_bars = [ | 37 foo_instance.extra_bars = [ |
| 28 sample_service_mojom.Bar(), | 38 _NewBar(), |
| 29 sample_service_mojom.Bar() | 39 _NewBar(), |
| 30 ] | 40 ] |
| 31 foo_instance.data = 'Hello world' | 41 foo_instance.data = 'Hello world' |
| 32 foo_instance.source = _NewHandle() | 42 foo_instance.source = _NewHandle() |
| 33 foo_instance.input_streams = [ _NewHandle() ] | 43 foo_instance.input_streams = [ _NewHandle() ] |
| 34 foo_instance.output_streams = [ _NewHandle(), _NewHandle() ] | 44 foo_instance.output_streams = [ _NewHandle(), _NewHandle() ] |
| 35 foo_instance.array_of_array_of_bools = [ [ True, False ], [] ] | 45 foo_instance.array_of_array_of_bools = [ [ True, False ], [] ] |
| 36 foo_instance.multi_array_of_strings = [ | 46 foo_instance.multi_array_of_strings = [ |
| 37 [ | 47 [ |
| 38 [ "1", "2" ], | 48 [ "1", "2" ], |
| 39 [], | 49 [], |
| 40 [ "3", "4" ], | 50 [ "3", "4" ], |
| 41 ], | 51 ], |
| 42 [], | 52 [], |
| 43 ] | 53 ] |
| 44 foo_instance.array_of_bools = [ True, 0, 1, 2, 0 ] | 54 foo_instance.array_of_bools = [ True, 0, 1, 2, 0, 0, 0, 0, 0, True ] |
| 45 return foo_instance | 55 return foo_instance |
| 46 | 56 |
| 57 | |
| 58 def _AreBarEquals(bar1, bar2): | |
| 59 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.
| |
| 60 return bar1 == bar2 | |
| 61 if not bool(bar2): | |
| 62 return False | |
| 63 | |
| 64 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.
| |
| 65 "beta", | |
| 66 "gamma", | |
| 67 "type", | |
| 68 ] | |
| 69 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
| |
| 70 p1 = getattr(bar1, p) | |
| 71 p2 = getattr(bar1, p) | |
|
sdefresne
2014/09/18 12:56:22
s/bar1/bar2/
qsr
2014/09/18 14:16:37
Not there anymore.
| |
| 72 if p1 != p2: | |
| 73 print '\nElement are not equals for property %r. %r != %r.' % (p, p1, p2) | |
| 74 return False | |
| 75 return True | |
| 76 | |
| 77 | |
| 78 def _AreBarArraysEquals(bars1, bars2): | |
| 79 if not bool(bars1): | |
| 80 return bars1 == bars2 | |
| 81 if not bool(bars2): | |
| 82 return False | |
| 83 if len(bars1) != len(bars2): | |
| 84 return False | |
| 85 for (bar1, bar2) in zip(bars1, bars2): | |
| 86 if not _AreBarEquals(bar1, bar2): | |
| 87 return False | |
| 88 return True | |
| 89 | |
| 90 | |
| 91 def _AreFooEquals(foo1, foo2): | |
| 92 if not bool(foo1): | |
| 93 return foo1 == foo2 | |
| 94 if not bool(foo2): | |
| 95 return False | |
| 96 | |
| 97 properties = [ "name", | |
| 98 "x", | |
| 99 "y", | |
| 100 "a", | |
| 101 "b", | |
| 102 "c", | |
| 103 "data", | |
| 104 "source", | |
| 105 "input_streams", | |
| 106 "output_streams", | |
| 107 "array_of_array_of_bools", | |
| 108 "multi_array_of_strings", | |
| 109 "array_of_bools" | |
|
sdefresne
2014/09/18 12:56:22
nit: missing trailing comma
qsr
2014/09/18 14:16:37
Not there anymore.
| |
| 110 ] | |
| 111 for p in properties: | |
| 112 p1 = getattr(foo1, p) | |
| 113 p2 = getattr(foo2, p) | |
| 114 if p1 != p2: | |
| 115 print 'Element are not equals for property %r. %r != %r.' % (p, p1, p2) | |
| 116 return False | |
| 117 if not _AreBarEquals(foo1.bar, foo2.bar): | |
| 118 return False | |
| 119 if not _AreBarArraysEquals(foo1.extra_bars, foo2.extra_bars): | |
| 120 return False | |
| 121 return True | |
| 122 | |
| 47 class SerializationDeserializationTest(unittest.TestCase): | 123 class SerializationDeserializationTest(unittest.TestCase): |
| 48 | 124 |
| 49 def testFooSerialization(self): | 125 def testFooSerialization(self): |
| 50 (data, _) = _NewFoo().Serialize() | 126 (data, _) = _NewFoo().Serialize() |
| 51 self.assertTrue(len(data)) | 127 self.assertTrue(len(data)) |
| 52 self.assertEquals(len(data) % 8, 0) | 128 self.assertEquals(len(data) % 8, 0) |
| 129 | |
| 130 def testFooDeserialization(self): | |
| 131 (data, handles) = _NewFoo().Serialize() | |
| 132 self.assertTrue( | |
| 133 sample_service_mojom.Foo.Deserialize(memoryview(data), handles)) | |
| 134 | |
| 135 def testFooSerializationDeserialization(self): | |
| 136 foo1 = _NewFoo() | |
| 137 (data, handles) = foo1.Serialize() | |
| 138 foo2 = sample_service_mojom.Foo.Deserialize(memoryview(data), handles) | |
| 139 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.
| |
| OLD | NEW |