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 |