15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#!/usr/bin/env python
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file.
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import unittest
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from cpp_util import (
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Classname, CloseNamespace, GenerateIfndefName, OpenNamespace)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CppUtilTest(unittest.TestCase):
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  def testClassname(self):
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    self.assertEquals('Permissions', Classname('permissions'))
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.assertEquals('UpdateAllTheThings',
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        Classname('updateAllTheThings'))
16868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    self.assertEquals('Aa_Bb_Cc', Classname('aa.bb.cc'))
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  def testNamespaceDeclaration(self):
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    self.assertEquals('namespace foo {',
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                      OpenNamespace('foo').Render())
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    self.assertEquals('}  // namespace foo',
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                      CloseNamespace('foo').Render())
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.assertEquals(
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        'namespace extensions {\n'
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        'namespace foo {',
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        OpenNamespace('extensions::foo').Render())
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.assertEquals(
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '}  // namespace foo\n'
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        '}  // namespace extensions',
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        CloseNamespace('extensions::foo').Render())
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    self.assertEquals(
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        'namespace extensions {\n'
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        'namespace gen {\n'
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        'namespace api {',
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        OpenNamespace('extensions::gen::api').Render())
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.assertEquals(
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        '}  // namespace api\n'
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '}  // namespace gen\n'
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '}  // namespace extensions',
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        CloseNamespace('extensions::gen::api').Render())
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.assertEquals(
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        'namespace extensions {\n'
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        'namespace gen {\n'
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        'namespace api {\n'
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        'namespace foo {',
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        OpenNamespace('extensions::gen::api::foo').Render())
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    self.assertEquals(
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '}  // namespace foo\n'
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '}  // namespace api\n'
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '}  // namespace gen\n'
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '}  // namespace extensions',
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        CloseNamespace('extensions::gen::api::foo').Render())
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  def testGenerateIfndefName(self):
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.assertEquals('FOO_BAR_BAZ_H__', GenerateIfndefName('foo\\bar\\baz.h'))
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    self.assertEquals('FOO_BAR_BAZ_H__', GenerateIfndefName('foo/bar/baz.h'))
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if __name__ == '__main__':
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  unittest.main()
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)