#!/usr/bin/env python
# Copyright (c) 2012 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.

'''Unit tests for grit.pseudo'''

import os
import sys
if __name__ == '__main__':
  sys.path[0] = os.path.abspath(os.path.join(sys.path[0], '..'))

import unittest

from grit import pseudo
from grit import tclib


class PseudoUnittest(unittest.TestCase):
  def testVowelMapping(self):
    self.failUnless(pseudo.MapVowels('abebibobuby') ==
                    u'\u00e5b\u00e9b\u00efb\u00f4b\u00fcb\u00fd')
    self.failUnless(pseudo.MapVowels('ABEBIBOBUBY') ==
                    u'\u00c5B\u00c9B\u00cfB\u00d4B\u00dcB\u00dd')

  def testPseudoString(self):
    out = pseudo.PseudoString('hello')
    self.failUnless(out == pseudo.MapVowels(u'hePelloPo', True))

  def testConsecutiveVowels(self):
    out = pseudo.PseudoString("beautiful weather, ain't it?")
    self.failUnless(out == pseudo.MapVowels(
      u"beauPeautiPifuPul weaPeathePer, aiPain't iPit?", 1))

  def testCapitals(self):
    out = pseudo.PseudoString("HOWDIE DOODIE, DR. JONES")
    self.failUnless(out == pseudo.MapVowels(
      u"HOPOWDIEPIE DOOPOODIEPIE, DR. JOPONEPES", 1))

  def testPseudoMessage(self):
    msg = tclib.Message(text='Hello USERNAME, how are you?',
                        placeholders=[
                          tclib.Placeholder('USERNAME', '%s', 'Joi')])
    trans = pseudo.PseudoMessage(msg)
    # TODO(joi) It would be nicer if 'you' -> 'youPou' instead of
    # 'you' -> 'youPyou' and if we handled the silent e in 'are'
    self.failUnless(trans.GetPresentableContent() ==
                    pseudo.MapVowels(
                      u'HePelloPo USERNAME, hoPow aParePe youPyou?', 1))


if __name__ == '__main__':
  unittest.main()
