| 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 |