Repository navigation
Expand file tree
/
Copy pathtest_clone.js
More file actions
50 lines (44 loc) · 2.02 KB
/
Copy pathtest_clone.js
File metadata and controls
50 lines (44 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* eslint-disable prefer-const,no-loss-of-precision */
'use strict'
const test = require('tape')
const proto = require('../proto/proto')
test('Copy structs', function (t) {
// Create a new account with some orders
let account1 = new proto.Account(1, 'Test', proto.State.good, new proto.Balance('USD', 1000.0), new proto.Balance('EUR', 100.0))
account1.orders.push(new proto.Order(1, 'EURUSD', proto.OrderSide.buy, proto.OrderType.market, 1.23456, 1000.0))
account1.orders.push(new proto.Order(2, 'EURUSD', proto.OrderSide.sell, proto.OrderType.limit, 1.0, 100.0))
account1.orders.push(new proto.Order(3, 'EURUSD', proto.OrderSide.buy, proto.OrderType.stop, 1.5, 10.0))
// Clone the account
let account2 = account1.clone()
// Clear the source account
// noinspection JSUnusedAssignment
account1 = new proto.Account()
t.equal(account2.id, 1)
t.equal(account2.name, 'Test')
t.true(account2.state.hasFlags(proto.State.good))
t.equal(account2.wallet.currency, 'USD')
t.equal(account2.wallet.amount, 1000.0)
t.notEqual(account2.asset, undefined)
t.equal(account2.asset.currency, 'EUR')
t.equal(account2.asset.amount, 100.0)
t.equal(account2.orders.length, 3)
t.equal(account2.orders[0].id, 1)
t.equal(account2.orders[0].symbol, 'EURUSD')
t.true(account2.orders[0].side.eq(proto.OrderSide.buy))
t.true(account2.orders[0].type.eq(proto.OrderType.market))
t.equal(account2.orders[0].price, 1.23456)
t.equal(account2.orders[0].volume, 1000.0)
t.equal(account2.orders[1].id, 2)
t.equal(account2.orders[1].symbol, 'EURUSD')
t.true(account2.orders[1].side.eq(proto.OrderSide.sell))
t.true(account2.orders[1].type.eq(proto.OrderType.limit))
t.equal(account2.orders[1].price, 1.0)
t.equal(account2.orders[1].volume, 100.0)
t.equal(account2.orders[2].id, 3)
t.equal(account2.orders[2].symbol, 'EURUSD')
t.true(account2.orders[2].side.eq(proto.OrderSide.buy))
t.true(account2.orders[2].type.eq(proto.OrderType.stop))
t.equal(account2.orders[2].price, 1.5)
t.equal(account2.orders[2].volume, 10.0)
t.end()
})