-
Notifications
You must be signed in to change notification settings - Fork 98
Expand file tree
/
Copy pathtest_clone.js
More file actions
50 lines (44 loc) · 2.02 KB
/
test_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()
})