blob: 231f240c612c59d36fc870cbeab06562ba0dc6df [file] [log] [blame]
# 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)