| 6 | class TestClone(TestCase): |
| 7 | |
| 8 | def test_clone(self): |
| 9 | # Create a new account with some orders |
| 10 | account1 = proto.Account(1, "Test", proto.State.good, proto.Balance("USD", 1000.0), proto.Balance("EUR", 100.0)) |
| 11 | account1.orders.append(proto.Order(1, "EURUSD", proto.OrderSide.buy, proto.OrderType.market, 1.23456, 1000.0)) |
| 12 | account1.orders.append(proto.Order(2, "EURUSD", proto.OrderSide.sell, proto.OrderType.limit, 1.0, 100.0)) |
| 13 | account1.orders.append(proto.Order(3, "EURUSD", proto.OrderSide.buy, proto.OrderType.stop, 1.5, 10.0)) |
| 14 | |
| 15 | # Clone the account |
| 16 | account2 = account1.clone() |
| 17 | |
| 18 | # Clear the source account |
| 19 | # noinspection PyUnusedLocal |
| 20 | account1 = proto.Account() |
| 21 | |
| 22 | self.assertEqual(account2.id, 1) |
| 23 | self.assertEqual(account2.name, "Test") |
| 24 | self.assertTrue(account2.state.has_flags(proto.State.good)) |
| 25 | self.assertEqual(account2.wallet.currency, "USD") |
| 26 | self.assertEqual(account2.wallet.amount, 1000.0) |
| 27 | self.assertNotEqual(account2.asset, None) |
| 28 | self.assertEqual(account2.asset.currency, "EUR") |
| 29 | self.assertEqual(account2.asset.amount, 100.0) |
| 30 | self.assertEqual(len(account2.orders), 3) |
| 31 | self.assertEqual(account2.orders[0].id, 1) |
| 32 | self.assertEqual(account2.orders[0].symbol, "EURUSD") |
| 33 | self.assertEqual(account2.orders[0].side, proto.OrderSide.buy) |
| 34 | self.assertEqual(account2.orders[0].type, proto.OrderType.market) |
| 35 | self.assertEqual(account2.orders[0].price, 1.23456) |
| 36 | self.assertEqual(account2.orders[0].volume, 1000.0) |
| 37 | self.assertEqual(account2.orders[1].id, 2) |
| 38 | self.assertEqual(account2.orders[1].symbol, "EURUSD") |
| 39 | self.assertEqual(account2.orders[1].side, proto.OrderSide.sell) |
| 40 | self.assertEqual(account2.orders[1].type, proto.OrderType.limit) |
| 41 | self.assertEqual(account2.orders[1].price, 1.0) |
| 42 | self.assertEqual(account2.orders[1].volume, 100.0) |
| 43 | self.assertEqual(account2.orders[2].id, 3) |
| 44 | self.assertEqual(account2.orders[2].symbol, "EURUSD") |
| 45 | self.assertEqual(account2.orders[2].side, proto.OrderSide.buy) |
| 46 | self.assertEqual(account2.orders[2].type, proto.OrderType.stop) |
| 47 | self.assertEqual(account2.orders[2].price, 1.5) |
| 48 | self.assertEqual(account2.orders[2].volume, 10.0) |