test_utils.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # -*- coding: utf-8 -*-
  2. import os
  3. from grass.gunittest.case import TestCase
  4. from grass.gunittest.main import test
  5. from grass.script import utils
  6. class EnvironChange(TestCase):
  7. env = dict()
  8. NOT_FOUND = 'Not found!'
  9. def setUp(self):
  10. self.original_env = {k: os.environ.get(k, self.NOT_FOUND)
  11. for k in self.env.keys()}
  12. for k, v in self.env.items():
  13. os.environ[k] = v
  14. def tearDown(self):
  15. for k, v in self.env.items():
  16. oval = self.original_env[k]
  17. if oval == self.NOT_FOUND:
  18. os.environ.pop(k)
  19. else:
  20. os.environ[k] = oval
  21. class LcAllC(EnvironChange):
  22. env = dict(LC_ALL='C')
  23. class TestEncode(TestCase):
  24. """Tests function `encode` that convert value to bytes."""
  25. def test_bytes(self):
  26. self.assertEqual(b'text', utils.encode(b'text'))
  27. def test_unicode(self):
  28. self.assertEqual(b'text', utils.encode(u'text'))
  29. def test_bytes_grabage_in_out(self):
  30. """If the input is bytes we should not touch it for encoding"""
  31. self.assertEqual(b'Příšerný kůň', utils.encode(b'Příšerný kůň'))
  32. class TestDecode(TestCase):
  33. """Tests function `encode` that convert value to unicode."""
  34. def test_bytes(self):
  35. self.assertEqual(u'text', utils.decode(b'text'))
  36. def test_unicode(self):
  37. self.assertEqual(u'text', utils.decode(u'text'))
  38. class TestEncodeLcAllC(TestEncode, LcAllC):
  39. pass
  40. class TestDecodeLcAllC(TestDecode, LcAllC):
  41. pass
  42. if __name__ == '__main__':
  43. test()