test_comparison.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. # -*- coding: utf-8 -*-
  2. import pytest
  3. import datetime
  4. import dingguo
  5. import os
  6. import pprint
  7. import yaml
  8. def get_item_a():
  9. return dingguo.Item(
  10. name = u'item',
  11. price_brutto = dingguo.Sum(1.0, u'EUR'),
  12. )
  13. def get_item_b():
  14. return dingguo.Item(
  15. name = u'item',
  16. price_brutto = dingguo.Sum(2.0, u'EUR'),
  17. )
  18. def get_discount_a():
  19. return dingguo.Discount(
  20. name = u'discount',
  21. amount = dingguo.Sum(1.0, u'EUR'),
  22. )
  23. def get_discount_b():
  24. return dingguo.Discount(
  25. name = u'discount',
  26. amount = dingguo.Sum(2.0, u'EUR'),
  27. )
  28. def get_order_a(items = True):
  29. order = dingguo.Order(
  30. platform = u'platform',
  31. order_id = u'id',
  32. order_date = datetime.datetime(2016, 5, 8, 0, 18, 17),
  33. customer_id = u'customer',
  34. )
  35. if items:
  36. order.items.append(get_item_a())
  37. order.items.append(get_item_b())
  38. order.discounts.append(get_discount_a())
  39. order.discounts.append(get_discount_b())
  40. return order
  41. def get_order_b():
  42. order = dingguo.Order(
  43. platform = u'platform',
  44. order_id = u'id',
  45. order_date = datetime.datetime(2016, 5, 8, 0, 18, 17),
  46. )
  47. order.items.append(get_item_a())
  48. order.items.append(get_item_b())
  49. order.discounts.append(get_discount_a())
  50. order.discounts.append(get_discount_b())
  51. return order
  52. def get_order_c():
  53. order = dingguo.Order(
  54. platform = u'platform',
  55. order_id = u'id',
  56. order_date = datetime.datetime(2016, 5, 8, 0, 18, 17),
  57. )
  58. order.items.append(get_item_a())
  59. order.items.append(get_item_b())
  60. order.items.append(get_item_b())
  61. order.discounts.append(get_discount_a())
  62. order.discounts.append(get_discount_b())
  63. return order
  64. def get_person_a():
  65. return dingguo.Person(
  66. first_name = u'Fabian Peter',
  67. last_name = u'Hammerle',
  68. )
  69. def get_person_b():
  70. return dingguo.Person(
  71. first_name = u'名字',
  72. last_name = u'贵姓',
  73. )
  74. @pytest.mark.parametrize('a,b', [
  75. [dingguo.Figure(1, u'mm'), dingguo.Figure(1, u'mm')],
  76. [get_item_a(), get_item_a()],
  77. [get_item_b(), get_item_b()],
  78. [get_person_a(), get_person_a()],
  79. [get_person_b(), get_person_b()],
  80. [get_discount_a(), get_discount_a()],
  81. [get_discount_b(), get_discount_b()],
  82. [get_order_a(), get_order_a()],
  83. [get_order_b(), get_order_b()],
  84. [get_order_c(), get_order_c()],
  85. ])
  86. def test_eq(a, b):
  87. assert a == b, '\n'.join([
  88. 'a = %r' % a,
  89. 'b = %r' % b,
  90. 'vars(a) = %s' % pprint.pformat(vars(a)),
  91. 'vars(b) = %s' % pprint.pformat(vars(b)),
  92. ])
  93. assert b == a
  94. assert not a != b
  95. assert not b != a
  96. @pytest.mark.parametrize('a,b', [
  97. [dingguo.Figure(1, u'mm'), dingguo.Figure(2, u'mm')],
  98. [get_item_a(), get_item_b()],
  99. [get_person_a(), get_person_b()],
  100. [get_discount_a(), get_discount_b()],
  101. [get_order_a(), get_order_b()],
  102. [get_order_a(), get_order_a(items = False)],
  103. [get_order_b(), get_order_c()],
  104. [get_order_a(), get_order_c()],
  105. ])
  106. def test_neq(a, b):
  107. assert a != b
  108. assert b != a
  109. assert not a == b
  110. assert not b == a
  111. def test_order_ne_items_reversed():
  112. order = get_order_a()
  113. order.items = order.items[::-1]
  114. assert get_order_a() != order