# Copyright 2015 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 unittest import mojo_unittest # pylint: disable=E0611,F0401 import mojo_bindings.serialization as serialization import mojo_system # Generated files # pylint: disable=F0401 import rect_mojom import test_structs_mojom class StructVersionBindingsTest(mojo_unittest.MojoTestCase): def SerializeAndDeserialize(self, target_class, input_instance): (data, handles) = input_instance.Serialize() context = serialization.RootDeserializationContext(data, handles) return target_class.Deserialize(context) def MakeRect(self, factor): return rect_mojom.Rect( x=factor, y=2*factor, width=10*factor, height=20*factor) def testOldToNew(self): v0 = test_structs_mojom.MultiVersionStructV0() v0.f_int32 = 123 expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v0) self.assertEquals(output, expected) v1 = test_structs_mojom.MultiVersionStructV1() v1.f_int32 = 123 v1.f_rect = self.MakeRect(5) expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v1) self.assertEquals(output, expected) v3 = test_structs_mojom.MultiVersionStructV3() v3.f_int32 = 123 v3.f_rect = self.MakeRect(5) v3.f_string = 'hello' expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v3) self.assertEquals(output, expected) v5 = test_structs_mojom.MultiVersionStructV5() v5.f_int32 = 123 v5.f_rect = self.MakeRect(5) v5.f_string = 'hello' v5.f_array = [10, 9, 8] expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' expected.f_array = [10, 9, 8] output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v5) self.assertEquals(output, expected) pipe = mojo_system.MessagePipe() v7 = test_structs_mojom.MultiVersionStructV7() v7.f_int32 = 123 v7.f_rect = self.MakeRect(5) v7.f_string = 'hello' v7.f_array = [10, 9, 8] v7.f_message_pipe = pipe.handle0 v7.f_bool = True expected = test_structs_mojom.MultiVersionStruct() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' expected.f_array = [10, 9, 8] expected.f_message_pipe = pipe.handle0 expected.f_bool = True output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStruct, v7) self.assertEquals(output, expected) def testNewToNew(self): pipe = mojo_system.MessagePipe() input_struct = test_structs_mojom.MultiVersionStruct() input_struct.f_int32 = 123 input_struct.f_rect = self.MakeRect(5) input_struct.f_string = 'hello' input_struct.f_array = [10, 9, 8] input_struct.f_message_pipe = pipe.handle0 input_struct.f_bool = True input_struct.f_int16 = 256 expected = test_structs_mojom.MultiVersionStructV7() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' expected.f_array = [10, 9, 8] expected.f_message_pipe = pipe.handle0 expected.f_bool = True output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV7, input_struct) self.assertEquals(output, expected) expected = test_structs_mojom.MultiVersionStructV5() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' expected.f_array = [10, 9, 8] output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV5, input_struct) self.assertEquals(output, expected) expected = test_structs_mojom.MultiVersionStructV3() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) expected.f_string = 'hello' output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV3, input_struct) self.assertEquals(output, expected) expected = test_structs_mojom.MultiVersionStructV1() expected.f_int32 = 123 expected.f_rect = self.MakeRect(5) output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV1, input_struct) self.assertEquals(output, expected) expected = test_structs_mojom.MultiVersionStructV0() expected.f_int32 = 123 output = self.SerializeAndDeserialize( test_structs_mojom.MultiVersionStructV0, input_struct) self.assertEquals(output, expected)