123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- import pytest
- import copy
- import datetime
- import dingguo
- import os
- import yaml
- def test_sum_init_eur():
- assert dingguo.Sum(1.23, u'EUR') == dingguo.Sum(1.23, u'€')
- def test_sum_init_usd():
- assert dingguo.Sum(1.23, u'USD') == dingguo.Sum(1.23, u'US$')
- def test_distance_metres():
- assert int(dingguo.Distance(1.23, u'km').metres) == 1230
- def test_person_first_name():
- p = dingguo.Person()
- p.first_name = u'äbc'
- assert p.first_name == u'äbc'
- p.first_name = u'qrßtuvw'
- assert p.first_name == u'qrßtuvw'
- def test_person_first_name_string():
- p = dingguo.Person()
- with pytest.raises(Exception):
- p.first_name = 'äbc'
- def test_person_last_name():
- p = dingguo.Person()
- p.last_name = u'歌曲'
- assert p.last_name == u'歌曲'
- p.last_name = u'bär'
- assert p.last_name == u'bär'
- 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'$-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'$-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')],
- [u'$-8.00', dingguo.Sum(-8.0, u'USD')],
- [u'$1,23 USD', dingguo.Sum(1.23, u'USD')],
- [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'$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')],
- [u'$8.00', dingguo.Sum(8.0, u'USD')],
- [u'US$-0.50', dingguo.Sum(-0.5, u'USD')],
- [u'US$0.50', dingguo.Sum(0.5, u'USD')],
- [u'€-0.25', dingguo.Sum(-0.25, u'EUR')],
- [u'€1.20', dingguo.Sum(1.2, u'EUR')],
- [u'¥ 4.27', dingguo.Sum(4.27, u'CNY')],
- ])
- 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',
- u'$1#23 USD',
- u'1#23 USD',
- ])
- 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)
- @pytest.mark.parametrize(('factor_a', 'factor_b', 'product'), [
- [dingguo.Sum(5.0, u'USD'), 1.5, dingguo.Sum(7.5, u'USD')],
- [dingguo.Sum(5.0, u'USD'), 2, dingguo.Sum(10.0, u'USD')],
- [dingguo.ScalarFigure(5.0, u'cm'), -0.5, dingguo.ScalarFigure(-2.5, u'cm')],
- [dingguo.ScalarFigure(1.0, u'kg'), 10, dingguo.ScalarFigure(10.0, u'kg')],
- ])
- def test_scalar_figure_mul(factor_a, factor_b, product):
- factor_a_copy = copy.deepcopy(factor_a)
- factor_b_copy = copy.deepcopy(factor_b)
- assert (factor_a * factor_b) == product
- assert factor_a_copy == factor_a
- assert factor_b_copy == factor_b
- @pytest.mark.parametrize(('factor_a', 'factor_b'), [
- [dingguo.Sum(5.0, u'USD'), dingguo.Sum(2.0, u'EUR')],
- [dingguo.ScalarFigure(5.0, u'cm'), dingguo.ScalarFigure(2.0, u'cm')],
- ])
- def test_figure_mul_fail(factor_a, factor_b):
- with pytest.raises(Exception):
- (factor_a * factor_b)
|