1# Copyright 2013 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
5import unittest
6
7from py_utils import camel_case
8
9
10class CamelCaseTest(unittest.TestCase):
11
12  def testString(self):
13    self.assertEqual(camel_case.ToUnderscore('camelCase'), 'camel_case')
14    self.assertEqual(camel_case.ToUnderscore('CamelCase'), 'camel_case')
15    self.assertEqual(camel_case.ToUnderscore('Camel2Case'), 'camel2_case')
16    self.assertEqual(camel_case.ToUnderscore('Camel2Case2'), 'camel2_case2')
17    self.assertEqual(camel_case.ToUnderscore('2012Q3'), '2012_q3')
18
19  def testList(self):
20    camel_case_list = ['CamelCase', ['NestedList']]
21    underscore_list = ['camel_case', ['nested_list']]
22    self.assertEqual(camel_case.ToUnderscore(camel_case_list), underscore_list)
23
24  def testDict(self):
25    camel_case_dict = {
26        'gpu': {
27            'vendorId': 1000,
28            'deviceId': 2000,
29            'vendorString': 'aString',
30            'deviceString': 'bString'},
31        'secondaryGpus': [
32            {'vendorId': 3000, 'deviceId': 4000,
33             'vendorString': 'k', 'deviceString': 'l'}
34        ]
35    }
36    underscore_dict = {
37        'gpu': {
38            'vendor_id': 1000,
39            'device_id': 2000,
40            'vendor_string': 'aString',
41            'device_string': 'bString'},
42        'secondary_gpus': [
43            {'vendor_id': 3000, 'device_id': 4000,
44             'vendor_string': 'k', 'device_string': 'l'}
45        ]
46    }
47    self.assertEqual(camel_case.ToUnderscore(camel_case_dict), underscore_dict)
48
49  def testOther(self):
50    self.assertEqual(camel_case.ToUnderscore(self), self)
51