| 10 | public class TestClone |
| 11 | { |
| 12 | [Fact(DisplayName = "Clone structs")] |
| 13 | public void CopyStructs() |
| 14 | { |
| 15 | // Create a new account with some orders |
| 16 | var account1 = Account.Default; |
| 17 | account1.id = 1; |
| 18 | account1.name = "Test"; |
| 19 | account1.state = State.good; |
| 20 | account1.wallet.currency = "USD"; |
| 21 | account1.wallet.amount = 1000.0; |
| 22 | account1.asset = new Balance("EUR", 100.0); |
| 23 | account1.orders.Add(new Order(1, "EURUSD", OrderSide.buy, OrderType.market, 1.23456, 1000.0)); |
| 24 | account1.orders.Add(new Order(2, "EURUSD", OrderSide.sell, OrderType.limit, 1.0, 100.0)); |
| 25 | account1.orders.Add(new Order(3, "EURUSD", OrderSide.buy, OrderType.stop, 1.5, 10.0)); |
| 26 | |
| 27 | // Clone the account |
| 28 | Account account2 = account1.Clone(); |
| 29 | |
| 30 | // Clear the source account |
| 31 | account1 = Account.Default; |
| 32 | |
| 33 | Assert.True(account2.id == 1); |
| 34 | Assert.True(account2.name == "Test"); |
| 35 | Assert.True(account2.state.HasFlags(State.good)); |
| 36 | Assert.True(account2.wallet.currency == "USD"); |
| 37 | Assert.True(account2.wallet.amount == 1000.0); |
| 38 | Assert.True(account2.asset.HasValue); |
| 39 | Assert.True(account2.asset.Value.currency == "EUR"); |
| 40 | Assert.True(account2.asset.Value.amount == 100.0); |
| 41 | Assert.True(account2.orders.Count == 3); |
| 42 | Assert.True(account2.orders[0].id == 1); |
| 43 | Assert.True(account2.orders[0].symbol == "EURUSD"); |
| 44 | Assert.True(account2.orders[0].side == OrderSide.buy); |
| 45 | Assert.True(account2.orders[0].type == OrderType.market); |
| 46 | Assert.True(account2.orders[0].price == 1.23456); |
| 47 | Assert.True(account2.orders[0].volume == 1000.0); |
| 48 | Assert.True(account2.orders[1].id == 2); |
| 49 | Assert.True(account2.orders[1].symbol == "EURUSD"); |
| 50 | Assert.True(account2.orders[1].side == OrderSide.sell); |
| 51 | Assert.True(account2.orders[1].type == OrderType.limit); |
| 52 | Assert.True(account2.orders[1].price == 1.0); |
| 53 | Assert.True(account2.orders[1].volume == 100.0); |
| 54 | Assert.True(account2.orders[2].id == 3); |
| 55 | Assert.True(account2.orders[2].symbol == "EURUSD"); |
| 56 | Assert.True(account2.orders[2].side == OrderSide.buy); |
| 57 | Assert.True(account2.orders[2].type == OrderType.stop); |
| 58 | Assert.True(account2.orders[2].price == 1.5); |
| 59 | Assert.True(account2.orders[2].volume == 10.0); |
| 60 | } |
| 61 | } |
| 62 | } |