| OLD | NEW |
| (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) | |
| OLD | NEW |