mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
103 lines
2.9 KiB
Python
103 lines
2.9 KiB
Python
# Copyright 2014 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import math
|
|
|
|
import mojo_unittest
|
|
|
|
# pylint: disable=E0611,F0401
|
|
import mojo_bindings.serialization as serialization
|
|
import mojo_system
|
|
|
|
# Generated files
|
|
# pylint: disable=F0401
|
|
import sample_import_mojom
|
|
import sample_import2_mojom
|
|
import sample_service_mojom
|
|
|
|
|
|
def _NewHandle():
|
|
return mojo_system.MessagePipe().handle0
|
|
|
|
|
|
def _NewBar():
|
|
bar_instance = sample_service_mojom.Bar()
|
|
bar_instance.alpha = 22
|
|
bar_instance.beta = 87
|
|
bar_instance.gamma = 122
|
|
bar_instance.type = sample_service_mojom.Bar.Type.BOTH
|
|
return bar_instance
|
|
|
|
|
|
def _NewFoo():
|
|
foo_instance = sample_service_mojom.Foo()
|
|
foo_instance.name = "Foo.name"
|
|
foo_instance.x = 23
|
|
foo_instance.y = -23
|
|
foo_instance.a = False
|
|
foo_instance.b = True
|
|
foo_instance.c = True
|
|
foo_instance.bar = _NewBar()
|
|
foo_instance.extra_bars = [
|
|
_NewBar(),
|
|
_NewBar(),
|
|
]
|
|
foo_instance.data = 'Hello world'
|
|
foo_instance.source = _NewHandle()
|
|
foo_instance.input_streams = [ _NewHandle() ]
|
|
foo_instance.output_streams = [ _NewHandle(), _NewHandle() ]
|
|
foo_instance.array_of_array_of_bools = [ [ True, False ], [] ]
|
|
foo_instance.multi_array_of_strings = [
|
|
[
|
|
[ "1", "2" ],
|
|
[],
|
|
[ "3", "4" ],
|
|
],
|
|
[],
|
|
]
|
|
foo_instance.array_of_bools = [ True, 0, 1, 2, 0, 0, 0, 0, 0, True ]
|
|
return foo_instance
|
|
|
|
|
|
class SerializationDeserializationTest(mojo_unittest.MojoTestCase):
|
|
|
|
def testFooSerialization(self):
|
|
(data, _) = _NewFoo().Serialize()
|
|
self.assertTrue(len(data))
|
|
self.assertEquals(len(data) % 8, 0)
|
|
|
|
def testFooDeserialization(self):
|
|
(data, handles) = _NewFoo().Serialize()
|
|
context = serialization.RootDeserializationContext(data, handles)
|
|
self.assertTrue(
|
|
sample_service_mojom.Foo.Deserialize(context))
|
|
|
|
def testFooSerializationDeserialization(self):
|
|
foo1 = _NewFoo()
|
|
(data, handles) = foo1.Serialize()
|
|
context = serialization.RootDeserializationContext(data, handles)
|
|
foo2 = sample_service_mojom.Foo.Deserialize(context)
|
|
self.assertEquals(foo1, foo2)
|
|
|
|
def testDefaultsTestSerializationDeserialization(self):
|
|
v1 = sample_service_mojom.DefaultsTest()
|
|
v1.a18 = []
|
|
v1.a19 = ""
|
|
v1.a21 = sample_import_mojom.Point()
|
|
v1.a22.location = sample_import_mojom.Point()
|
|
v1.a22.size = sample_import2_mojom.Size()
|
|
(data, handles) = v1.Serialize()
|
|
context = serialization.RootDeserializationContext(data, handles)
|
|
v2 = sample_service_mojom.DefaultsTest.Deserialize(context)
|
|
# NaN needs to be a special case.
|
|
self.assertNotEquals(v1, v2)
|
|
self.assertTrue(math.isnan(v2.a28))
|
|
self.assertTrue(math.isnan(v2.a31))
|
|
v1.a28 = v2.a28 = v1.a31 = v2.a31 = 0
|
|
self.assertEquals(v1, v2)
|
|
|
|
def testFooDeserializationError(self):
|
|
with self.assertRaises(Exception):
|
|
sample_service_mojom.Foo.Deserialize("", [])
|