@@ -4,6 +4,7 @@ import { OrderSide } from '../proto/xudrpc_pb';
4
4
import { coinsToSats } from '../utils' ;
5
5
import { testConfig } from '../test-utils' ;
6
6
import { TradeInfo } from '../trade/info' ;
7
+ import { Config } from '../config' ;
7
8
8
9
type AssertTradeInfoToOpenDEXordersParams = {
9
10
tradeInfo : TradeInfo ;
@@ -13,13 +14,14 @@ type AssertTradeInfoToOpenDEXordersParams = {
13
14
sellPrice ?: BigNumber ;
14
15
sellQuantity ?: BigNumber ;
15
16
} ;
17
+ config : Config ;
16
18
} ;
17
19
18
20
const assertTradeInfoToOpenDEXorders = ( {
19
21
tradeInfo,
20
22
expected,
23
+ config,
21
24
} : AssertTradeInfoToOpenDEXordersParams ) => {
22
- const config = testConfig ( ) ;
23
25
const { buyOrder, sellOrder } = tradeInfoToOpenDEXorders ( {
24
26
tradeInfo,
25
27
config,
@@ -33,7 +35,7 @@ const assertTradeInfoToOpenDEXorders = ({
33
35
orderSide : OrderSide . BUY ,
34
36
pairId,
35
37
price : expected . buyPrice . toNumber ( ) ,
36
- orderId : ' arby-ETH/BTC -buy-order' ,
38
+ orderId : ` arby-${ config . BASEASSET } / ${ config . QUOTEASSET } -buy-order` ,
37
39
} )
38
40
) ;
39
41
}
@@ -46,29 +48,29 @@ const assertTradeInfoToOpenDEXorders = ({
46
48
orderSide : OrderSide . SELL ,
47
49
pairId,
48
50
price : expected . sellPrice . toNumber ( ) ,
49
- orderId : ' arby-ETH/BTC -sell-order' ,
51
+ orderId : ` arby-${ config . BASEASSET } / ${ config . QUOTEASSET } -sell-order` ,
50
52
} )
51
53
) ;
52
54
}
53
55
} ;
54
56
55
57
describe ( 'tradeInfoToOpenDEXorders' , ( ) => {
56
58
describe ( 'buy order' , ( ) => {
57
- test ( 'all of OpenDEX base asset max inbound can be used for buying ' , ( ) => {
59
+ test ( 'OpenDEX base asset max inbound for ETH/BTC ' , ( ) => {
58
60
expect . assertions ( 1 ) ;
59
61
const tradeInfo = {
60
62
price : new BigNumber ( '0.02' ) ,
61
63
assets : {
62
64
openDEX : {
63
65
baseAssetBalance : new BigNumber ( '40' ) ,
64
- baseAssetMaxInbound : new BigNumber ( '500 ' ) ,
66
+ baseAssetMaxInbound : new BigNumber ( '0 ' ) ,
65
67
baseAssetMaxOutbound : new BigNumber ( '40' ) ,
66
- quoteAssetBalance : new BigNumber ( '9.5 ' ) ,
67
- quoteAssetMaxOutbound : new BigNumber ( '9.4 ' ) ,
68
- quoteAssetMaxInbound : new BigNumber ( '2 ' ) ,
68
+ quoteAssetBalance : new BigNumber ( '0.35 ' ) ,
69
+ quoteAssetMaxOutbound : new BigNumber ( '0.35 ' ) ,
70
+ quoteAssetMaxInbound : new BigNumber ( '0.1 ' ) ,
69
71
} ,
70
72
centralizedExchange : {
71
- baseAssetBalance : new BigNumber ( '501 ' ) ,
73
+ baseAssetBalance : new BigNumber ( '20 ' ) ,
72
74
quoteAssetBalance : new BigNumber ( '1.5' ) ,
73
75
} ,
74
76
} ,
@@ -77,7 +79,40 @@ describe('tradeInfoToOpenDEXorders', () => {
77
79
tradeInfo,
78
80
expected : {
79
81
buyPrice : new BigNumber ( '0.0188' ) ,
80
- buyQuantity : new BigNumber ( '495' ) ,
82
+ buyQuantity : new BigNumber ( '14.1075' ) ,
83
+ } ,
84
+ config : testConfig ( ) ,
85
+ } ) ;
86
+ } ) ;
87
+
88
+ test ( 'OpenDEX base asset max inbound reduces buy quantity for BTC/USDT' , ( ) => {
89
+ expect . assertions ( 1 ) ;
90
+ const tradeInfo = {
91
+ price : new BigNumber ( '10000' ) ,
92
+ assets : {
93
+ openDEX : {
94
+ baseAssetBalance : new BigNumber ( '1' ) ,
95
+ baseAssetMaxInbound : new BigNumber ( '0.5' ) ,
96
+ baseAssetMaxOutbound : new BigNumber ( '1' ) ,
97
+ quoteAssetBalance : new BigNumber ( '20000' ) ,
98
+ quoteAssetMaxOutbound : new BigNumber ( '20000' ) ,
99
+ quoteAssetMaxInbound : new BigNumber ( '20000' ) ,
100
+ } ,
101
+ centralizedExchange : {
102
+ baseAssetBalance : new BigNumber ( '1.5' ) ,
103
+ quoteAssetBalance : new BigNumber ( '25000' ) ,
104
+ } ,
105
+ } ,
106
+ } ;
107
+ assertTradeInfoToOpenDEXorders ( {
108
+ tradeInfo,
109
+ expected : {
110
+ buyPrice : new BigNumber ( '9400' ) ,
111
+ buyQuantity : new BigNumber ( '0.495' ) ,
112
+ } ,
113
+ config : {
114
+ ...testConfig ( ) ,
115
+ ...{ BASEASSET : 'BTC' , QUOTEASSET : 'USDT' } ,
81
116
} ,
82
117
} ) ;
83
118
} ) ;
@@ -91,12 +126,12 @@ describe('tradeInfoToOpenDEXorders', () => {
91
126
baseAssetBalance : new BigNumber ( '40' ) ,
92
127
baseAssetMaxInbound : new BigNumber ( '9007199254740991' ) ,
93
128
baseAssetMaxOutbound : new BigNumber ( '40' ) ,
94
- quoteAssetBalance : new BigNumber ( '5 .1' ) ,
95
- quoteAssetMaxOutbound : new BigNumber ( '5 ' ) ,
96
- quoteAssetMaxInbound : new BigNumber ( '2 ' ) ,
129
+ quoteAssetBalance : new BigNumber ( '0 .1' ) ,
130
+ quoteAssetMaxOutbound : new BigNumber ( '0.1 ' ) ,
131
+ quoteAssetMaxInbound : new BigNumber ( '0.05 ' ) ,
97
132
} ,
98
133
centralizedExchange : {
99
- baseAssetBalance : new BigNumber ( '501 ' ) ,
134
+ baseAssetBalance : new BigNumber ( '500 ' ) ,
100
135
quoteAssetBalance : new BigNumber ( '1.5' ) ,
101
136
} ,
102
137
} ,
@@ -105,8 +140,9 @@ describe('tradeInfoToOpenDEXorders', () => {
105
140
tradeInfo,
106
141
expected : {
107
142
buyPrice : new BigNumber ( '0.0188' ) ,
108
- buyQuantity : new BigNumber ( '263.29787234 ' ) ,
143
+ buyQuantity : new BigNumber ( '5.26595744 ' ) ,
109
144
} ,
145
+ config : testConfig ( ) ,
110
146
} ) ;
111
147
} ) ;
112
148
@@ -124,7 +160,7 @@ describe('tradeInfoToOpenDEXorders', () => {
124
160
quoteAssetMaxInbound : new BigNumber ( '2' ) ,
125
161
} ,
126
162
centralizedExchange : {
127
- baseAssetBalance : new BigNumber ( '250 ' ) ,
163
+ baseAssetBalance : new BigNumber ( '5 ' ) ,
128
164
quoteAssetBalance : new BigNumber ( '1.5' ) ,
129
165
} ,
130
166
} ,
@@ -133,8 +169,9 @@ describe('tradeInfoToOpenDEXorders', () => {
133
169
tradeInfo,
134
170
expected : {
135
171
buyPrice : new BigNumber ( '0.0188' ) ,
136
- buyQuantity : new BigNumber ( '247.5 ' ) ,
172
+ buyQuantity : new BigNumber ( '4.95 ' ) ,
137
173
} ,
174
+ config : testConfig ( ) ,
138
175
} ) ;
139
176
} ) ;
140
177
} ) ;
@@ -165,10 +202,11 @@ describe('tradeInfoToOpenDEXorders', () => {
165
202
sellPrice : new BigNumber ( '0.0212' ) ,
166
203
sellQuantity : new BigNumber ( '39.6' ) ,
167
204
} ,
205
+ config : testConfig ( ) ,
168
206
} ) ;
169
207
} ) ;
170
208
171
- test ( 'OpenDEX quote asset max inbound reduces sell quantity' , ( ) => {
209
+ test ( 'OpenDEX quote asset max inbound reduces sell quantity for ETH/BTC ' , ( ) => {
172
210
expect . assertions ( 1 ) ;
173
211
const tradeInfo = {
174
212
price : new BigNumber ( '0.02' ) ,
@@ -193,6 +231,42 @@ describe('tradeInfoToOpenDEXorders', () => {
193
231
sellPrice : new BigNumber ( '0.0212' ) ,
194
232
sellQuantity : new BigNumber ( '11.67452830' ) ,
195
233
} ,
234
+ config : testConfig ( ) ,
235
+ } ) ;
236
+ } ) ;
237
+
238
+ test ( 'OpenDEX quote asset max inbound for BTC/USDT' , ( ) => {
239
+ expect . assertions ( 1 ) ;
240
+ const tradeInfo = {
241
+ price : new BigNumber ( '10000' ) ,
242
+ assets : {
243
+ openDEX : {
244
+ baseAssetBalance : new BigNumber ( '1' ) ,
245
+ baseAssetMaxInbound : new BigNumber ( '1' ) ,
246
+ baseAssetMaxOutbound : new BigNumber ( '1' ) ,
247
+ quoteAssetBalance : new BigNumber ( '15000' ) ,
248
+ quoteAssetMaxOutbound : new BigNumber ( '15000' ) ,
249
+ quoteAssetMaxInbound : new BigNumber ( '0' ) ,
250
+ } ,
251
+ centralizedExchange : {
252
+ baseAssetBalance : new BigNumber ( '1.5' ) ,
253
+ quoteAssetBalance : new BigNumber ( '20000' ) ,
254
+ } ,
255
+ } ,
256
+ } ;
257
+ assertTradeInfoToOpenDEXorders ( {
258
+ tradeInfo,
259
+ expected : {
260
+ sellPrice : new BigNumber ( '10600' ) ,
261
+ sellQuantity : new BigNumber ( '0.44363207' ) ,
262
+ } ,
263
+ config : {
264
+ ...testConfig ( ) ,
265
+ ...{
266
+ BASEASSET : 'BTC' ,
267
+ QUOTEASSET : 'USDT' ,
268
+ } ,
269
+ } ,
196
270
} ) ;
197
271
} ) ;
198
272
@@ -221,6 +295,7 @@ describe('tradeInfoToOpenDEXorders', () => {
221
295
sellPrice : new BigNumber ( '0.0212' ) ,
222
296
sellQuantity : new BigNumber ( '4.95' ) ,
223
297
} ,
298
+ config : testConfig ( ) ,
224
299
} ) ;
225
300
} ) ;
226
301
} ) ;
0 commit comments