#!/usr/bin/env python # coding=utf8 # Copyright (c) 2011 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 fix_encoding.py.""" import os import sys import unittest sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) import fix_encoding class FixEncodingTest(unittest.TestCase): # Nice mix of latin, hebrew, arabic and chinese. Doesn't mean anything. text = u'Héllô 偉大 سيد' def test_code_page(self): # Make sure printing garbage won't throw. print self.text.encode() + '\xff' print >> sys.stderr, self.text.encode() + '\xff' def test_utf8(self): # Make sure printing utf-8 works. print self.text.encode('utf-8') print >> sys.stderr, self.text.encode('utf-8') def test_unicode(self): # Make sure printing unicode works. print self.text print >> sys.stderr, self.text def test_default_encoding(self): self.assertEquals('utf-8', sys.getdefaultencoding()) def test_win_console(self): if sys.platform != 'win32': return # This should fail if not redirected, e.g. run directly instead of through # the presubmit check. Can be checked with: # python tests\fix_encoding_test.py self.assertEquals( sys.stdout.__class__, fix_encoding.WinUnicodeOutput) self.assertEquals( sys.stderr.__class__, fix_encoding.WinUnicodeOutput) self.assertEquals(sys.stdout.encoding, sys.getdefaultencoding()) self.assertEquals(sys.stderr.encoding, sys.getdefaultencoding()) def test_multiple_calls(self): # Shouldn't do anything. self.assertEquals(False, fix_encoding.fix_encoding()) if __name__ == '__main__': assert fix_encoding.fix_encoding() unittest.main()