| 5 | import "../proto/proto" |
| 6 | |
| 7 | func TestClone(t *testing.T) { |
| 8 | // Create a new account with some orders |
| 9 | var account = proto.NewAccountFromFieldValues(1, "Test", proto.State_good, proto.Balance{Currency: "USD", Amount: 1000.0}, &proto.Balance{Currency: "EUR", Amount: 100.0}, make([]proto.Order, 0)) |
| 10 | account.Orders = append(account.Orders, proto.Order{Id: 1, Symbol: "EURUSD", Side: proto.OrderSide_buy, Type: proto.OrderType_market, Price: 1.23456, Volume: 1000.0}) |
| 11 | account.Orders = append(account.Orders, proto.Order{Id: 2, Symbol: "EURUSD", Side: proto.OrderSide_sell, Type: proto.OrderType_limit, Price: 1.0, Volume: 100.0}) |
| 12 | account.Orders = append(account.Orders, proto.Order{Id: 3, Symbol: "EURUSD", Side: proto.OrderSide_buy, Type: proto.OrderType_stop, Price: 1.5, Volume: 10.0}) |
| 13 | |
| 14 | // Clone the account |
| 15 | account2 := account.Clone() |
| 16 | |
| 17 | // Clear the source account |
| 18 | account = proto.NewAccount() |
| 19 | |
| 20 | assert.EqualValues(t, account2.Id, 1) |
| 21 | assert.EqualValues(t, account2.Name, "Test") |
| 22 | assert.True(t, account2.State.HasFlags(proto.State_good)) |
| 23 | assert.EqualValues(t, account2.Wallet.Currency, "USD") |
| 24 | assert.EqualValues(t, account2.Wallet.Amount, 1000.0) |
| 25 | assert.NotNil(t, account2.Asset) |
| 26 | assert.EqualValues(t, account2.Asset.Currency, "EUR") |
| 27 | assert.EqualValues(t, account2.Asset.Amount, 100.0) |
| 28 | assert.EqualValues(t, len(account2.Orders), 3) |
| 29 | assert.EqualValues(t, account2.Orders[0].Id, 1) |
| 30 | assert.EqualValues(t, account2.Orders[0].Symbol, "EURUSD") |
| 31 | assert.EqualValues(t, account2.Orders[0].Side, proto.OrderSide_buy) |
| 32 | assert.EqualValues(t, account2.Orders[0].Type, proto.OrderType_market) |
| 33 | assert.EqualValues(t, account2.Orders[0].Price, 1.23456) |
| 34 | assert.EqualValues(t, account2.Orders[0].Volume, 1000.0) |
| 35 | assert.EqualValues(t, account2.Orders[1].Id, 2) |
| 36 | assert.EqualValues(t, account2.Orders[1].Symbol, "EURUSD") |
| 37 | assert.EqualValues(t, account2.Orders[1].Side, proto.OrderSide_sell) |
| 38 | assert.EqualValues(t, account2.Orders[1].Type, proto.OrderType_limit) |
| 39 | assert.EqualValues(t, account2.Orders[1].Price, 1.0) |
| 40 | assert.EqualValues(t, account2.Orders[1].Volume, 100.0) |
| 41 | assert.EqualValues(t, account2.Orders[2].Id, 3) |
| 42 | assert.EqualValues(t, account2.Orders[2].Symbol, "EURUSD") |
| 43 | assert.EqualValues(t, account2.Orders[2].Side, proto.OrderSide_buy) |
| 44 | assert.EqualValues(t, account2.Orders[2].Type, proto.OrderType_stop) |
| 45 | assert.EqualValues(t, account2.Orders[2].Price, 1.5) |
| 46 | assert.EqualValues(t, account2.Orders[2].Volume, 10.0) |
| 47 | } |