# -*- coding: utf-8 -*- import pytest import datetime import dingguo import os import pprint import yaml def get_item_a(): return dingguo.Item( name = u'item', price_brutto = dingguo.Sum(1.0, u'EUR'), ) def get_item_b(): return dingguo.Item( name = u'item', price_brutto = dingguo.Sum(2.0, u'EUR'), ) def get_discount_a(): return dingguo.Discount( name = u'discount', amount = dingguo.Sum(1.0, u'EUR'), ) def get_discount_b(): return dingguo.Discount( name = u'discount', amount = dingguo.Sum(2.0, u'EUR'), ) def get_order_a(items = True): order = dingguo.Order( platform = u'platform', order_id = u'id', order_date = datetime.datetime(2016, 5, 8, 0, 18, 17), customer_id = u'customer', ) if items: order.items.append(get_item_a()) order.items.append(get_item_b()) order.discounts.append(get_discount_a()) order.discounts.append(get_discount_b()) return order def get_order_b(): order = dingguo.Order( platform = u'platform', order_id = u'id', order_date = datetime.datetime(2016, 5, 8, 0, 18, 17), ) order.items.append(get_item_a()) order.items.append(get_item_b()) order.discounts.append(get_discount_a()) order.discounts.append(get_discount_b()) return order def get_order_c(): order = dingguo.Order( platform = u'platform', order_id = u'id', order_date = datetime.datetime(2016, 5, 8, 0, 18, 17), ) order.items.append(get_item_a()) order.items.append(get_item_b()) order.items.append(get_item_b()) order.discounts.append(get_discount_a()) order.discounts.append(get_discount_b()) return order def get_person_a(): return dingguo.Person( first_name = u'Fabian Peter', last_name = u'Hammerle', ) def get_person_b(): return dingguo.Person( first_name = u'名字', last_name = u'贵姓', ) @pytest.mark.parametrize('a,b', [ [dingguo.Figure(1, u'mm'), dingguo.Figure(1, u'mm')], [get_item_a(), get_item_a()], [get_item_b(), get_item_b()], [get_person_a(), get_person_a()], [get_person_b(), get_person_b()], [get_discount_a(), get_discount_a()], [get_discount_b(), get_discount_b()], [get_order_a(), get_order_a()], [get_order_b(), get_order_b()], [get_order_c(), get_order_c()], ]) def test_eq(a, b): assert a == b, '\n'.join([ 'a = %r' % a, 'b = %r' % b, 'vars(a) = %s' % pprint.pformat(vars(a)), 'vars(b) = %s' % pprint.pformat(vars(b)), ]) assert b == a assert not a != b assert not b != a @pytest.mark.parametrize('a,b', [ [dingguo.Figure(1, u'mm'), dingguo.Figure(2, u'mm')], [get_item_a(), get_item_b()], [get_person_a(), get_person_b()], [get_discount_a(), get_discount_b()], [get_order_a(), get_order_b()], [get_order_a(), get_order_a(items = False)], [get_order_b(), get_order_c()], [get_order_a(), get_order_c()], ]) def test_neq(a, b): assert a != b assert b != a assert not a == b assert not b == a def test_order_ne_items_reversed(): order = get_order_a() order.items = order.items[::-1] assert get_order_a() != order