1424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#!/usr/bin/env python
2424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved.
3424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
4424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)# found in the LICENSE file.
5424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
6424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)import unittest
7424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)from manifest_features import ConvertDottedKeysToNested
9424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
10424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class ManifestFeaturesTest(unittest.TestCase):
11424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  def testConvertDottedKeysToNested(self):
12424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)    docs = {
13424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      'doc1.sub2': {
14424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        'name': 'doc1.sub2'
15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      },
16424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      'doc1': {
17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        'name': 'doc1'
18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      },
19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      'doc2': {
20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        'name': 'doc2'
21424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      },
22424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      'doc1.sub1.subsub1': {
23424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        'name': 'doc1.sub1.subsub1'
24424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      },
25424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      'doc1.sub1': {
26424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        'name': 'doc1.sub1'
27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      }
28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)    }
29424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)    expected_docs = {
31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      'doc1': {
32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        'name': 'doc1',
33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        'children': {
34424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)          'sub1': {
35424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)            'name': 'sub1',
36424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)            'children': {
37424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)              'subsub1': {
38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                'name' :'subsub1'
39424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)              }
40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)            }
41424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)          },
42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)          'sub2': {
43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)            'name': 'sub2'
44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)          }
45424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        }
46424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      },
47424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      'doc2': {
48424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)        'name': 'doc2'
49424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)      }
50424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)    }
51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
52424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)    self.assertEqual(expected_docs, ConvertDottedKeysToNested(docs))
53424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
54424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)if __name__ == '__main__':
55424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  unittest.main()
56