test_.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # -*- coding: utf-8 -*-
  2. import pytest
  3. import copy
  4. import datetime
  5. import dingguo
  6. import os
  7. import yaml
  8. def test_sum_init_eur():
  9. assert dingguo.Sum(1.23, u'EUR') == dingguo.Sum(1.23, u'€')
  10. def test_sum_init_usd():
  11. assert dingguo.Sum(1.23, u'USD') == dingguo.Sum(1.23, u'US$')
  12. def test_distance_metres():
  13. assert int(dingguo.Distance(1.23, u'km').metres) == 1230
  14. def test_person_first_name():
  15. p = dingguo.Person()
  16. p.first_name = u'äbc'
  17. assert p.first_name == u'äbc'
  18. p.first_name = u'qrßtuvw'
  19. assert p.first_name == u'qrßtuvw'
  20. def test_person_first_name_string():
  21. p = dingguo.Person()
  22. with pytest.raises(Exception):
  23. p.first_name = 'äbc'
  24. def test_person_last_name():
  25. p = dingguo.Person()
  26. p.last_name = u'歌曲'
  27. assert p.last_name == u'歌曲'
  28. p.last_name = u'bär'
  29. assert p.last_name == u'bär'
  30. def test_person_last_name_string():
  31. p = dingguo.Person()
  32. with pytest.raises(Exception):
  33. p.last_name = 'äbc'
  34. @pytest.mark.parametrize(('text', 'sum'), [
  35. [u'$1,23 USD', dingguo.Sum(1.23, u'USD')],
  36. [u'$1.23 USD', dingguo.Sum(1.23, u'USD')],
  37. [u'$30 USD', dingguo.Sum(30.0, u'USD')],
  38. [u'$30,00 USD', dingguo.Sum(30.0, u'USD')],
  39. [u'$30.00 USD', dingguo.Sum(30.0, u'USD')],
  40. [u'$8', dingguo.Sum(8.0, u'USD')],
  41. [u'$8,00', dingguo.Sum(8.0, u'USD')],
  42. [u'$8.00', dingguo.Sum(8.0, u'USD')],
  43. ])
  44. def test_sum_parse_text(text, sum):
  45. assert dingguo.Sum.parse_text(text) == sum
  46. @pytest.mark.parametrize(('text'), [
  47. u'pre$1.23 USD',
  48. u'$1.23 USDpost',
  49. u'$1#23 USD',
  50. u'1#23 USD',
  51. ])
  52. def test_sum_parse_text_fail(text):
  53. with pytest.raises(Exception):
  54. dingguo.Sum.parse_text(text)
  55. @pytest.mark.parametrize(('minuend', 'subtrahend', 'difference'), [
  56. [dingguo.Sum(5.0, u'USD'), dingguo.Sum(2.0, u'USD'), dingguo.Sum(3.0, u'USD')],
  57. [dingguo.ScalarFigure(5.0, u'cm'), dingguo.ScalarFigure(2.0, u'cm'), dingguo.ScalarFigure(3.0, u'cm')],
  58. [dingguo.ScalarFigure(1.0, u'kg'), dingguo.ScalarFigure(2.0, u'kg'), dingguo.ScalarFigure(-1.0, u'kg')],
  59. ])
  60. def test_figure_sub(minuend, subtrahend, difference):
  61. minuend_copy = copy.deepcopy(minuend)
  62. subtrahend_copy = copy.deepcopy(subtrahend)
  63. assert (minuend - subtrahend) == difference
  64. assert minuend_copy == minuend
  65. assert subtrahend_copy == subtrahend
  66. @pytest.mark.parametrize(('minuend', 'subtrahend'), [
  67. [dingguo.Sum(5.0, u'USD'), dingguo.Sum(2.0, u'EUR')],
  68. [dingguo.ScalarFigure(5.0, u'cm'), dingguo.ScalarFigure(2.0, u'kg')],
  69. ])
  70. def test_figure_sub_fail(minuend, subtrahend):
  71. with pytest.raises(Exception):
  72. (minuend - subtrahend)