Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(704)

Side by Side Diff: mojo/python/tests/bindings_structs_unittest.py

Issue 675563002: Remove mojo/python and gyp targets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 # found in the LICENSE file.
4
5 import math
6 import unittest
7
8 # pylint: disable=E0611,F0401
9 import mojo.system
10
11 # Generated files
12 # pylint: disable=F0401
13 import regression_tests_mojom
14 import sample_import_mojom
15 import sample_import2_mojom
16 import sample_service_mojom
17
18
19 class StructBindingsTest(unittest.TestCase):
20
21 def testModule(self):
22 self.assertEquals(sample_service_mojom.DefaultsTest.__module__,
23 'sample_service_mojom')
24
25 def testDefaultsTest(self):
26 defaults_test = sample_service_mojom.DefaultsTest()
27 self.assertEquals(defaults_test.a0, -12)
28 self.assertEquals(defaults_test.a1, 12)
29 self.assertEquals(defaults_test.a2, 1234)
30 self.assertEquals(defaults_test.a3, 34567)
31 self.assertEquals(defaults_test.a4, 123456)
32 self.assertEquals(defaults_test.a5, 3456789012)
33 self.assertEquals(defaults_test.a6, -111111111111)
34 self.assertEquals(defaults_test.a7, 9999999999999999999)
35 self.assertEquals(defaults_test.a8, 0x12345)
36 self.assertEquals(defaults_test.a9, -0x12345)
37 self.assertEquals(defaults_test.a10, 1234)
38 self.assertEquals(defaults_test.a11, True)
39 self.assertEquals(defaults_test.a12, False)
40 self.assertEquals(defaults_test.a13, 123.25)
41 self.assertEquals(defaults_test.a14, 1234567890.123)
42 self.assertEquals(defaults_test.a15, 1E10)
43 self.assertEquals(defaults_test.a16, -1.2E+20)
44 self.assertEquals(defaults_test.a17, 1.23E-20)
45 self.assertEquals(defaults_test.a18, None)
46 self.assertEquals(defaults_test.a19, None)
47 self.assertEquals(defaults_test.a20, sample_service_mojom.Bar.Type.BOTH)
48 self.assertEquals(defaults_test.a21, None)
49 self.assertTrue(isinstance(defaults_test.a22, sample_import2_mojom.Thing))
50 self.assertEquals(defaults_test.a23, 0xFFFFFFFFFFFFFFFF)
51 self.assertEquals(defaults_test.a24, 0x123456789)
52 self.assertEquals(defaults_test.a25, -0x123456789)
53 self.assertEquals(defaults_test.a26, float('inf'))
54 self.assertEquals(defaults_test.a27, float('-inf'))
55 self.assertTrue(math.isnan(defaults_test.a28))
56 self.assertEquals(defaults_test.a29, float('inf'))
57 self.assertEquals(defaults_test.a30, float('-inf'))
58 self.assertTrue(math.isnan(defaults_test.a31))
59
60 def testNoAliasing(self):
61 foo1 = sample_service_mojom.Foo()
62 foo2 = sample_service_mojom.Foo()
63 foo1.name = "foo1"
64 foo2.name = "foo2"
65 self.assertEquals(foo1.name, "foo1")
66 self.assertEquals(foo2.name, "foo2")
67
68 defaults_test1 = sample_service_mojom.DefaultsTest()
69 defaults_test2 = sample_service_mojom.DefaultsTest()
70 self.assertIsNot(defaults_test1.a22, defaults_test2.a22)
71
72 def testImmutableAttributeSet(self):
73 foo_instance = sample_service_mojom.Foo()
74 with self.assertRaises(AttributeError):
75 foo_instance.new_attribute = None
76 with self.assertRaises(AttributeError):
77 del foo_instance.name
78
79 def _TestIntegerField(self, entity, field_name, bits, signed):
80 if signed:
81 min_value = -(1 << (bits - 1))
82 max_value = (1 << (bits - 1)) - 1
83 else:
84 min_value = 0
85 max_value = (1 << bits) - 1
86 entity.__setattr__(field_name, min_value)
87 entity.__setattr__(field_name, max_value)
88 with self.assertRaises(TypeError):
89 entity.__setattr__(field_name, None)
90 with self.assertRaises(OverflowError):
91 entity.__setattr__(field_name, min_value - 1)
92 with self.assertRaises(OverflowError):
93 entity.__setattr__(field_name, max_value + 1)
94 with self.assertRaises(TypeError):
95 entity.__setattr__(field_name, 'hello world')
96
97 def testTypes(self):
98 defaults_test = sample_service_mojom.DefaultsTest()
99 # Integer types
100 self._TestIntegerField(defaults_test, 'a0', 8, True)
101 self._TestIntegerField(defaults_test, 'a1', 8, False)
102 self._TestIntegerField(defaults_test, 'a2', 16, True)
103 self._TestIntegerField(defaults_test, 'a3', 16, False)
104 self._TestIntegerField(defaults_test, 'a4', 32, True)
105 self._TestIntegerField(defaults_test, 'a5', 32, False)
106 self._TestIntegerField(defaults_test, 'a6', 64, True)
107 self._TestIntegerField(defaults_test, 'a7', 64, False)
108
109 # Boolean types
110 defaults_test.a11 = False
111 self.assertEquals(defaults_test.a11, False)
112 defaults_test.a11 = None
113 self.assertEquals(defaults_test.a11, False)
114 defaults_test.a11 = []
115 self.assertEquals(defaults_test.a11, False)
116 defaults_test.a12 = True
117 self.assertEquals(defaults_test.a12, True)
118 defaults_test.a12 = 1
119 self.assertEquals(defaults_test.a12, True)
120 defaults_test.a12 = [[]]
121 self.assertEquals(defaults_test.a12, True)
122
123 # Floating point types
124 with self.assertRaises(TypeError):
125 defaults_test.a13 = 'hello'
126 with self.assertRaises(TypeError):
127 defaults_test.a14 = 'hello'
128
129 # Array type
130 defaults_test.a18 = None
131 defaults_test.a18 = []
132 defaults_test.a18 = [ 0 ]
133 defaults_test.a18 = [ 255 ]
134 defaults_test.a18 = [ 0, 255 ]
135 with self.assertRaises(TypeError):
136 defaults_test.a18 = [[]]
137 with self.assertRaises(OverflowError):
138 defaults_test.a18 = [ -1 ]
139 with self.assertRaises(OverflowError):
140 defaults_test.a18 = [ 256 ]
141
142 # String type
143 defaults_test.a19 = None
144 defaults_test.a19 = ''
145 defaults_test.a19 = 'hello world'
146 with self.assertRaises(TypeError):
147 defaults_test.a19 = [[]]
148 with self.assertRaises(TypeError):
149 defaults_test.a19 = [ -1 ]
150 with self.assertRaises(TypeError):
151 defaults_test.a19 = [ 256 ]
152
153 # Structs
154 defaults_test.a21 = None
155 defaults_test.a21 = sample_import_mojom.Point()
156 with self.assertRaises(TypeError):
157 defaults_test.a21 = 1
158 with self.assertRaises(TypeError):
159 defaults_test.a21 = sample_import2_mojom.Thing()
160
161 # Handles
162 foo_instance = sample_service_mojom.Foo()
163 foo_instance.source = None
164 foo_instance.source = mojo.system.Handle()
165 with self.assertRaises(TypeError):
166 foo_instance.source = 1
167 with self.assertRaises(TypeError):
168 foo_instance.source = object()
169
170 def testConstructor(self):
171 bar_instance = sample_service_mojom.Bar()
172 foo_instance = sample_service_mojom.Foo(name="Foo",
173 x=-1,
174 y=5,
175 a=False,
176 bar=bar_instance)
177 self.assertEquals(foo_instance.name, "Foo")
178 self.assertEquals(foo_instance.x, -1)
179 self.assertEquals(foo_instance.y, 5)
180 self.assertEquals(foo_instance.a, False)
181 self.assertEquals(foo_instance.bar, bar_instance)
182
183 def testPositionalConstructor(self):
184 p = sample_import_mojom.Point()
185 self.assertEquals(p.x, 0)
186 self.assertEquals(p.y, 0)
187
188 p = sample_import_mojom.Point(34)
189 self.assertEquals(p.x, 34)
190 self.assertEquals(p.y, 0)
191
192 p = sample_import_mojom.Point(34, 12)
193 self.assertEquals(p.x, 34)
194 self.assertEquals(p.y, 12)
195
196 p = sample_import_mojom.Point(x=34, y=12)
197 self.assertEquals(p.x, 34)
198 self.assertEquals(p.y, 12)
199
200 p = sample_import_mojom.Point(34, y=12)
201 self.assertEquals(p.x, 34)
202 self.assertEquals(p.y, 12)
203
204 with self.assertRaises(TypeError):
205 p = sample_import_mojom.Point(0, 0, 0)
206 with self.assertRaises(TypeError):
207 p = sample_import_mojom.Point(0, x=0)
208 with self.assertRaises(TypeError):
209 p = sample_import_mojom.Point(c=0)
210
211 def testCyclicDefinition(self):
212 a = regression_tests_mojom.A()
213 b = regression_tests_mojom.B()
214 self.assertIsNone(a.b)
215 self.assertIsNone(b.a)
216 a.b = b
217 self.assertIs(a.b, b)
OLDNEW
« no previous file with comments | « mojo/python/tests/bindings_serialization_deserialization_unittest.py ('k') | mojo/python/tests/messaging_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698