]>
git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blob - test.py
3 from unittest
import mock
5 class AmountTest(unittest
.TestCase
):
7 super(AmountTest
, self
).setUp()
10 amount
= portfolio
.Amount("BTC", 0.65)
11 self
.assertEqual(0.65, amount
.value
)
12 self
.assertEqual("BTC", amount
.currency
)
14 amount
= portfolio
.Amount("BTC", 10, int_val
=2000000000000000)
15 self
.assertEqual(0.002, amount
.value
)
17 def test_in_currency(self
):
18 amount
= portfolio
.Amount("ETC", 10)
20 self
.assertEqual(amount
, amount
.in_currency("ETC", None))
22 ticker_mock
= unittest
.mock
.Mock()
23 with mock
.patch
.object(portfolio
.Amount
, 'get_ticker', new
=ticker_mock
):
24 ticker_mock
.return_value
= None
25 portfolio
.Amount
.get_ticker
= ticker_mock
27 self
.assertRaises(Exception, amount
.in_currency
, "ETH", None)
29 with mock
.patch
.object(portfolio
.Amount
, 'get_ticker', new
=ticker_mock
):
30 ticker_mock
.return_value
= {
34 converted_amount
= amount
.in_currency("ETH", None)
36 self
.assertEqual(3.0, converted_amount
.value
)
37 self
.assertEqual("ETH", converted_amount
.currency
)
38 self
.assertEqual(amount
, converted_amount
.linked_to
)
39 self
.assertEqual("bar", converted_amount
.ticker
["foo"])
41 @unittest.skip("TODO")
42 def test_get_ticker(self
):
46 amount
= portfolio
.Amount("SC", -120)
47 self
.assertEqual(120, abs(amount
).value
)
48 self
.assertEqual("SC", abs(amount
).currency
)
50 amount
= portfolio
.Amount("SC", 10)
51 self
.assertEqual(10, abs(amount
).value
)
52 self
.assertEqual("SC", abs(amount
).currency
)
55 amount1
= portfolio
.Amount("XVG", 12.9)
56 amount2
= portfolio
.Amount("XVG", 13.1)
58 self
.assertEqual(26, (amount1
+ amount2
).value
)
59 self
.assertEqual("XVG", (amount1
+ amount2
).currency
)
61 amount3
= portfolio
.Amount("ETH", 1.6)
62 with self
.assertRaises(Exception):
65 amount4
= portfolio
.Amount("ETH", 0.0)
66 self
.assertEqual(amount1
, amount1
+ amount4
)
69 amount
= portfolio
.Amount("XVG", 12.9)
71 self
.assertEqual(amount
, 0 + amount
)
72 with self
.assertRaises(Exception):
76 amount1
= portfolio
.Amount("XVG", 13.3)
77 amount2
= portfolio
.Amount("XVG", 13.1)
79 self
.assertEqual(0.2, (amount1
- amount2
).value
)
80 self
.assertEqual("XVG", (amount1
- amount2
).currency
)
82 amount3
= portfolio
.Amount("ETH", 1.6)
83 with self
.assertRaises(Exception):
86 amount4
= portfolio
.Amount("ETH", 0.0)
87 self
.assertEqual(amount1
, amount1
- amount4
)
90 amount
= portfolio
.Amount("XMR", 0.1)
91 self
.assertEqual(100000000000000000, int(amount
))
94 amount
= portfolio
.Amount("XEM", 11)
96 self
.assertEqual(38.5, (amount
* 3.5).value
)
97 self
.assertEqual(33, (amount
* 3).value
)
99 with self
.assertRaises(Exception):
102 def test__rmul(self
):
103 amount
= portfolio
.Amount("XEM", 11)
105 self
.assertEqual(38.5, (3.5 * amount
).value
)
106 self
.assertEqual(33, (3 * amount
).value
)
108 def test__floordiv(self
):
109 amount
= portfolio
.Amount("XEM", 11)
111 self
.assertEqual(5.5, (amount
// 2).value
)
112 with self
.assertRaises(TypeError):
114 self
.assertEqual(1571428571428571428, (amount
// 7)._value
)
117 amount
= portfolio
.Amount("XEM", 11)
119 with self
.assertRaises(TypeError):
121 self
.assertEqual(5.5, (amount
/ 2).value
)
122 self
.assertEqual(1571428571428571428, (amount
/ 7)._value
)
125 amount1
= portfolio
.Amount("BTD", 11.3)
126 amount2
= portfolio
.Amount("BTD", 13.1)
128 self
.assertTrue(amount1
< amount2
)
129 self
.assertFalse(amount2
< amount1
)
130 self
.assertFalse(amount1
< amount1
)
132 amount3
= portfolio
.Amount("BTC", 1.6)
133 with self
.assertRaises(Exception):
137 amount1
= portfolio
.Amount("BTD", 11.3)
138 amount2
= portfolio
.Amount("BTD", 13.1)
139 amount3
= portfolio
.Amount("BTD", 11.3)
141 self
.assertFalse(amount1
== amount2
)
142 self
.assertFalse(amount2
== amount1
)
143 self
.assertTrue(amount1
== amount3
)
144 self
.assertFalse(amount2
== 0)
146 amount4
= portfolio
.Amount("BTC", 1.6)
147 with self
.assertRaises(Exception):
150 amount5
= portfolio
.Amount("BTD", 0)
151 self
.assertTrue(amount5
== 0)
154 amount1
= portfolio
.Amount("BTX", 32)
155 self
.assertEqual("32.00000000 BTX", str(amount1
))
157 amount2
= portfolio
.Amount("USDT", 12000)
158 amount1
.linked_to
= amount2
159 self
.assertEqual("32.00000000 BTX [12000.00000000 USDT]", str(amount1
))
161 def test__repr(self
):
162 amount1
= portfolio
.Amount("BTX", 32)
163 self
.assertEqual("Amount(32.00000000 BTX)", repr(amount1
))
165 amount2
= portfolio
.Amount("USDT", 12000)
166 amount1
.linked_to
= amount2
167 self
.assertEqual("Amount(32.00000000 BTX -> Amount(12000.00000000 USDT))", repr(amount1
))
169 amount3
= portfolio
.Amount("BTC", 0.1)
170 amount2
.linked_to
= amount3
171 self
.assertEqual("Amount(32.00000000 BTX -> Amount(12000.00000000 USDT -> Amount(0.10000000 BTC)))", repr(amount1
))
173 if __name__
== '__main__':