blob: 096554c61a9bff69120ff7e90cd246bcc72ece82 [file] [log] [blame]
# Copyright 2013 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 sys
import data
import test_support
EXPECT_EQ = test_support.EXPECT_EQ
EXPECT_TRUE = test_support.EXPECT_TRUE
RunTest = test_support.RunTest
def DeepEquals(d1, d2):
if d1 == d2:
return True
if d2.__class__ != d2.__class__:
return False
if isinstance(d1, dict):
if set(d1.keys()) != set(d2.keys()):
return False
for key in d1.keys():
if not DeepEquals(d1[key], d2[key]):
return False
return True
if isinstance(d1, (list, tuple)):
if len(d1) != len(d2):
return False
for i in range(len(d1)):
if not DeepEquals(d1[i], d2[i]):
return False
return True
return False
test_dict = {
'name': 'test',
'namespace': 'testspace',
'structs': [{
'name': 'teststruct',
'fields': [
{'name': 'testfield1', 'kind': 'i32'},
{'name': 'testfield2', 'kind': 'a:i32', 'ordinal': 42}]}],
'interfaces': [{
'name': 'Server',
'client': None,
'methods': [{
'name': 'Foo',
'parameters': [
{'name': 'foo', 'kind': 'i32'},
{'name': 'bar', 'kind': 'a:x:teststruct'}],
'ordinal': 42}]}]
}
def TestRead():
module = data.ModuleFromData(test_dict)
return test_support.TestTestModule(module)
def TestWrite():
module = test_support.BuildTestModule()
d = data.ModuleToData(module)
return EXPECT_TRUE(DeepEquals(test_dict, d))
def TestWriteRead():
module1 = test_support.BuildTestModule()
dict1 = data.ModuleToData(module1)
module2 = data.ModuleFromData(dict1)
return EXPECT_TRUE(test_support.ModulesAreEqual(module1, module2))
def Main(args):
errors = 0
errors += RunTest(TestWriteRead)
errors += RunTest(TestRead)
errors += RunTest(TestWrite)
return errors
if __name__ == '__main__':
sys.exit(Main(sys.argv[1:]))