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.
8 # pylint: disable=F0401
12 # pylint: disable=F0401
13 import sample_import_mojom
14 import sample_import2_mojom
15 import sample_service_mojom
18 class StructBindingsTest(unittest.TestCase):
21 self.assertEquals(sample_service_mojom.DefaultsTest.__module__,
22 'sample_service_mojom')
24 def testDefaultsTest(self):
25 defaults_test = sample_service_mojom.DefaultsTest()
26 self.assertEquals(defaults_test.a0, -12)
27 self.assertEquals(defaults_test.a1, 12)
28 self.assertEquals(defaults_test.a2, 1234)
29 self.assertEquals(defaults_test.a3, 34567)
30 self.assertEquals(defaults_test.a4, 123456)
31 self.assertEquals(defaults_test.a5, 3456789012)
32 self.assertEquals(defaults_test.a6, -111111111111)
33 self.assertEquals(defaults_test.a7, 9999999999999999999)
34 self.assertEquals(defaults_test.a8, 0x12345)
35 self.assertEquals(defaults_test.a9, -0x12345)
36 self.assertEquals(defaults_test.a10, 1234)
37 self.assertEquals(defaults_test.a11, True)
38 self.assertEquals(defaults_test.a12, False)
39 self.assertEquals(defaults_test.a13, 123.25)
40 self.assertEquals(defaults_test.a14, 1234567890.123)
41 self.assertEquals(defaults_test.a15, 1E10)
42 self.assertEquals(defaults_test.a16, -1.2E+20)
43 self.assertEquals(defaults_test.a17, 1.23E-20)
44 self.assertEquals(defaults_test.a18, None)
45 self.assertEquals(defaults_test.a19, None)
46 self.assertEquals(defaults_test.a20, sample_service_mojom.Bar.Type.BOTH)
47 self.assertEquals(defaults_test.a21, None)
48 self.assertTrue(isinstance(defaults_test.a22, sample_import2_mojom.Thing))
49 self.assertEquals(defaults_test.a23, 0xFFFFFFFFFFFFFFFF)
50 self.assertEquals(defaults_test.a24, 0x123456789)
51 self.assertEquals(defaults_test.a25, -0x123456789)
52 self.assertEquals(defaults_test.a26, float('inf'))
53 self.assertEquals(defaults_test.a27, float('-inf'))
54 self.assertTrue(math.isnan(defaults_test.a28))
55 self.assertEquals(defaults_test.a29, float('inf'))
56 self.assertEquals(defaults_test.a30, float('-inf'))
57 self.assertTrue(math.isnan(defaults_test.a31))
59 def testNoAliasing(self):
60 foo1 = sample_service_mojom.Foo()
61 foo2 = sample_service_mojom.Foo()
64 self.assertEquals(foo1.name, "foo1")
65 self.assertEquals(foo2.name, "foo2")
67 defaults_test1 = sample_service_mojom.DefaultsTest()
68 defaults_test2 = sample_service_mojom.DefaultsTest()
69 self.assertNotEquals(defaults_test1.a22, defaults_test2.a22)
71 def testImmutableAttributeSet(self):
72 foo_instance = sample_service_mojom.Foo()
73 with self.assertRaises(AttributeError):
74 foo_instance.new_attribute = None
75 with self.assertRaises(AttributeError):
78 def _TestIntegerField(self, entity, field_name, bits, signed):
80 min_value = -(1 << (bits - 1))
81 max_value = (1 << (bits - 1)) - 1
84 max_value = (1 << bits) - 1
85 entity.__setattr__(field_name, min_value)
86 entity.__setattr__(field_name, max_value)
87 with self.assertRaises(TypeError):
88 entity.__setattr__(field_name, None)
89 with self.assertRaises(OverflowError):
90 entity.__setattr__(field_name, min_value - 1)
91 with self.assertRaises(OverflowError):
92 entity.__setattr__(field_name, max_value + 1)
93 with self.assertRaises(TypeError):
94 entity.__setattr__(field_name, 'hello world')
97 defaults_test = sample_service_mojom.DefaultsTest()
99 self._TestIntegerField(defaults_test, 'a0', 8, True)
100 self._TestIntegerField(defaults_test, 'a1', 8, False)
101 self._TestIntegerField(defaults_test, 'a2', 16, True)
102 self._TestIntegerField(defaults_test, 'a3', 16, False)
103 self._TestIntegerField(defaults_test, 'a4', 32, True)
104 self._TestIntegerField(defaults_test, 'a5', 32, False)
105 self._TestIntegerField(defaults_test, 'a6', 64, True)
106 self._TestIntegerField(defaults_test, 'a7', 64, False)
109 defaults_test.a11 = False
110 self.assertEquals(defaults_test.a11, False)
111 defaults_test.a11 = None
112 self.assertEquals(defaults_test.a11, False)
113 defaults_test.a11 = []
114 self.assertEquals(defaults_test.a11, False)
115 defaults_test.a12 = True
116 self.assertEquals(defaults_test.a12, True)
117 defaults_test.a12 = 1
118 self.assertEquals(defaults_test.a12, True)
119 defaults_test.a12 = [[]]
120 self.assertEquals(defaults_test.a12, True)
122 # Floating point types
123 with self.assertRaises(TypeError):
124 defaults_test.a13 = 'hello'
125 with self.assertRaises(TypeError):
126 defaults_test.a14 = 'hello'
129 defaults_test.a18 = None
130 defaults_test.a18 = []
131 defaults_test.a18 = [ 0 ]
132 defaults_test.a18 = [ 255 ]
133 defaults_test.a18 = [ 0, 255 ]
134 with self.assertRaises(TypeError):
135 defaults_test.a18 = [[]]
136 with self.assertRaises(OverflowError):
137 defaults_test.a18 = [ -1 ]
138 with self.assertRaises(OverflowError):
139 defaults_test.a18 = [ 256 ]
142 defaults_test.a19 = None
143 defaults_test.a19 = ''
144 defaults_test.a19 = 'hello world'
145 with self.assertRaises(TypeError):
146 defaults_test.a19 = [[]]
147 with self.assertRaises(TypeError):
148 defaults_test.a19 = [ -1 ]
149 with self.assertRaises(TypeError):
150 defaults_test.a19 = [ 256 ]
153 defaults_test.a21 = None
154 defaults_test.a21 = sample_import_mojom.Point()
155 with self.assertRaises(TypeError):
156 defaults_test.a21 = 1
157 with self.assertRaises(TypeError):
158 defaults_test.a21 = sample_import2_mojom.Thing()
161 foo_instance = sample_service_mojom.Foo()
162 foo_instance.source = None
163 foo_instance.source = mojo.system.Handle()
164 with self.assertRaises(TypeError):
165 foo_instance.source = 1
166 with self.assertRaises(TypeError):
167 foo_instance.source = object()
169 def testConstructor(self):
170 bar_instance = sample_service_mojom.Bar()
171 foo_instance = sample_service_mojom.Foo(name="Foo",
176 self.assertEquals(foo_instance.name, "Foo")
177 self.assertEquals(foo_instance.x, -1)
178 self.assertEquals(foo_instance.y, 5)
179 self.assertEquals(foo_instance.a, False)
180 self.assertEquals(foo_instance.bar, bar_instance)