|
@@ -2,10 +2,11 @@
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
+import copy
|
|
|
import datetime
|
|
|
import dingguo
|
|
|
-import yaml
|
|
|
import os
|
|
|
+import yaml
|
|
|
|
|
|
def test_sum_init_eur():
|
|
|
assert dingguo.Sum(1.23, u'EUR') == dingguo.Sum(1.23, u'€')
|
|
@@ -39,3 +40,41 @@ def test_person_last_name_string():
|
|
|
p = dingguo.Person()
|
|
|
with pytest.raises(Exception):
|
|
|
p.last_name = 'äbc'
|
|
|
+
|
|
|
+@pytest.mark.parametrize(('text', 'sum'), [
|
|
|
+ [u'$1.23 USD', dingguo.Sum(1.23, u'USD')],
|
|
|
+ [u'$30 USD', dingguo.Sum(30.0, u'USD')],
|
|
|
+ [u'$30.00 USD', dingguo.Sum(30.0, u'USD')],
|
|
|
+ [u'$8', dingguo.Sum(8.0, u'USD')],
|
|
|
+ [u'$8.00', dingguo.Sum(8.0, u'USD')],
|
|
|
+ ])
|
|
|
+def test_sum_parse_text(text, sum):
|
|
|
+ assert dingguo.Sum.parse_text(text) == sum
|
|
|
+
|
|
|
+@pytest.mark.parametrize(('text'), [
|
|
|
+ u'pre$1.23 USD',
|
|
|
+ u'$1.23 USDpost',
|
|
|
+ ])
|
|
|
+def test_sum_parse_text_fail(text):
|
|
|
+ with pytest.raises(Exception):
|
|
|
+ dingguo.Sum.parse_text(text)
|
|
|
+
|
|
|
+@pytest.mark.parametrize(('minuend', 'subtrahend', 'difference'), [
|
|
|
+ [dingguo.Sum(5.0, u'USD'), dingguo.Sum(2.0, u'USD'), dingguo.Sum(3.0, u'USD')],
|
|
|
+ [dingguo.ScalarFigure(5.0, u'cm'), dingguo.ScalarFigure(2.0, u'cm'), dingguo.ScalarFigure(3.0, u'cm')],
|
|
|
+ [dingguo.ScalarFigure(1.0, u'kg'), dingguo.ScalarFigure(2.0, u'kg'), dingguo.ScalarFigure(-1.0, u'kg')],
|
|
|
+ ])
|
|
|
+def test_figure_sub(minuend, subtrahend, difference):
|
|
|
+ minuend_copy = copy.deepcopy(minuend)
|
|
|
+ subtrahend_copy = copy.deepcopy(subtrahend)
|
|
|
+ assert (minuend - subtrahend) == difference
|
|
|
+ assert minuend_copy == minuend
|
|
|
+ assert subtrahend_copy == subtrahend
|
|
|
+
|
|
|
+@pytest.mark.parametrize(('minuend', 'subtrahend'), [
|
|
|
+ [dingguo.Sum(5.0, u'USD'), dingguo.Sum(2.0, u'EUR')],
|
|
|
+ [dingguo.ScalarFigure(5.0, u'cm'), dingguo.ScalarFigure(2.0, u'kg')],
|
|
|
+ ])
|
|
|
+def test_figure_sub_fail(minuend, subtrahend):
|
|
|
+ with pytest.raises(Exception):
|
|
|
+ (minuend - subtrahend)
|