6
6
"testing"
7
7
"time"
8
8
9
+ "github.com/shopspring/decimal"
9
10
"github.com/stretchr/testify/require"
10
11
)
11
12
@@ -73,7 +74,7 @@ func TestGetAccountTradingStatus(t *testing.T) {
73
74
require .Equal (t , 0 , resp .DayTradeCount )
74
75
require .Equal (t , "IRA Margin" , resp .EquitiesMarginCalculationType )
75
76
require .Equal (t , "default" , resp .FeeScheduleName )
76
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .FuturesMarginRateMultiplier )
77
+ require .True (t , decimal . Zero . Equal ( resp .FuturesMarginRateMultiplier ) )
77
78
require .False (t , resp .HasIntradayEquitiesMargin )
78
79
require .Equal (t , 447096 , resp .ID )
79
80
require .False (t , resp .IsAggregatedAtClearing )
@@ -96,7 +97,7 @@ func TestGetAccountTradingStatus(t *testing.T) {
96
97
require .True (t , resp .AreFarOtmNetOptionsRestricted )
97
98
require .Equal (t , "Defined Risk Spreads" , resp .OptionsLevel )
98
99
require .False (t , resp .ShortCallsEnabled )
99
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .SmallNotionalFuturesMarginRateMultiplier )
100
+ require .True (t , decimal . Zero . Equal ( resp .SmallNotionalFuturesMarginRateMultiplier ) )
100
101
require .False (t , resp .IsEquityOfferingEnabled )
101
102
require .False (t , resp .IsEquityOfferingClosingOnly )
102
103
require .Equal (t , "2022-10-27T20:49:52.928Z" , resp .EnhancedFraudSafeguardsEnabledAt .Format (time .RFC3339Nano ))
@@ -132,40 +133,40 @@ func TestGetAccountBalances(t *testing.T) {
132
133
require .Nil (t , err )
133
134
134
135
require .Equal (t , "5YZ55555" , resp .AccountNumber )
135
- require .Equal (t , StringToFloat32 (51600.762 ), resp .CashBalance )
136
- require .Equal (t , StringToFloat32 (281983.415 ), resp .LongEquityValue )
137
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .ShortEquityValue )
138
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .LongDerivativeValue )
139
- require .Equal (t , StringToFloat32 (82680.5 ), resp .ShortDerivativeValue )
140
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .LongFuturesValue )
141
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .ShortFuturesValue )
142
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .LongFuturesDerivativeValue )
143
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .ShortFuturesDerivativeValue )
144
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .LongMargineableValue )
145
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .ShortMargineableValue )
146
- require .Equal (t , StringToFloat32 (452284.177 ), resp .MarginEquity )
147
- require .Equal (t , StringToFloat32 (20078.762 ), resp .EquityBuyingPower )
148
- require .Equal (t , StringToFloat32 (20078.762 ), resp .DerivativeBuyingPower )
149
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .DayTradingBuyingPower )
150
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .FuturesMarginRequirement )
151
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .AvailableTradingFunds )
152
- require .Equal (t , StringToFloat32 (432279.234 ), resp .MaintenanceRequirement )
153
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .MaintenanceCallValue )
154
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .RegTCallValue )
155
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .DayTradingCallValue )
156
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .DayEquityCallValue )
157
- require .Equal (t , StringToFloat32 (543557.677 ), resp .NetLiquidatingValue )
158
- require .Equal (t , StringToFloat32 (20078.76 ), resp .CashAvailableToWithdraw )
159
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .EquityOfferingMarginRequirement )
160
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .LongBondValue )
161
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .BondMarginRequirement )
136
+ require .Equal (t , decimal . NewFromFloat (51600.762 ), resp .CashBalance )
137
+ require .Equal (t , decimal . NewFromFloat (281983.415 ), resp .LongEquityValue )
138
+ require .True (t , decimal . Zero . Equal ( resp .ShortEquityValue ) )
139
+ require .True (t , decimal . Zero . Equal ( resp .LongDerivativeValue ) )
140
+ require .Equal (t , decimal . NewFromFloat (82680.5 ), resp .ShortDerivativeValue )
141
+ require .True (t , decimal . Zero . Equal ( resp .LongFuturesValue ) )
142
+ require .True (t , decimal . Zero . Equal ( resp .ShortFuturesValue ) )
143
+ require .True (t , decimal . Zero . Equal ( resp .LongFuturesDerivativeValue ) )
144
+ require .True (t , decimal . Zero . Equal ( resp .ShortFuturesDerivativeValue ) )
145
+ require .True (t , decimal . Zero . Equal ( resp .LongMargineableValue ) )
146
+ require .True (t , decimal . Zero . Equal ( resp .ShortMargineableValue ) )
147
+ require .Equal (t , decimal . NewFromFloat (452284.177 ), resp .MarginEquity )
148
+ require .Equal (t , decimal . NewFromFloat (20078.762 ), resp .EquityBuyingPower )
149
+ require .Equal (t , decimal . NewFromFloat (20078.762 ), resp .DerivativeBuyingPower )
150
+ require .True (t , decimal . Zero . Equal ( resp .DayTradingBuyingPower ) )
151
+ require .True (t , decimal . Zero . Equal ( resp .FuturesMarginRequirement ) )
152
+ require .True (t , decimal . Zero . Equal ( resp .AvailableTradingFunds ) )
153
+ require .Equal (t , decimal . NewFromFloat (432279.234 ), resp .MaintenanceRequirement )
154
+ require .True (t , decimal . Zero . Equal ( resp .MaintenanceCallValue ) )
155
+ require .True (t , decimal . Zero . Equal ( resp .RegTCallValue ) )
156
+ require .True (t , decimal . Zero . Equal ( resp .DayTradingCallValue ) )
157
+ require .True (t , decimal . Zero . Equal ( resp .DayEquityCallValue ) )
158
+ require .Equal (t , decimal . NewFromFloat (543557.677 ), resp .NetLiquidatingValue )
159
+ require .Equal (t , decimal . NewFromFloat (20078.76 ), resp .CashAvailableToWithdraw )
160
+ require .True (t , decimal . Zero . Equal ( resp .EquityOfferingMarginRequirement ) )
161
+ require .True (t , decimal . Zero . Equal ( resp .LongBondValue ) )
162
+ require .True (t , decimal . Zero . Equal ( resp .BondMarginRequirement ) )
162
163
require .Equal (t , "2023-06-08" , resp .SnapshotDate )
163
- require .Equal (t , StringToFloat32 (432279.2338 ), resp .RegTMarginRequirement )
164
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .FuturesOvernightMarginRequirement )
165
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .FuturesIntradayMarginRequirement )
166
- require .Equal (t , StringToFloat32 (20078.762 ), resp .MaintenanceExcess )
167
- require .Equal (t , StringToFloat32 ( 0.0 ), resp .PendingMarginInterest )
168
- require .Equal (t , StringToFloat32 (20078.76 ), resp .EffectiveCryptocurrencyBuyingPower )
164
+ require .Equal (t , decimal . NewFromFloat (432279.2338 ), resp .RegTMarginRequirement )
165
+ require .True (t , decimal . Zero . Equal ( resp .FuturesOvernightMarginRequirement ) )
166
+ require .True (t , decimal . Zero . Equal ( resp .FuturesIntradayMarginRequirement ) )
167
+ require .Equal (t , decimal . NewFromFloat (20078.762 ), resp .MaintenanceExcess )
168
+ require .True (t , decimal . Zero . Equal ( resp .PendingMarginInterest ) )
169
+ require .Equal (t , decimal . NewFromFloat (20078.76 ), resp .EffectiveCryptocurrencyBuyingPower )
169
170
require .Equal (t , "2023-06-08T16:30:18.889Z" , resp .UpdatedAt .Format (time .RFC3339Nano ))
170
171
}
171
172
@@ -206,20 +207,20 @@ func TestGetAccountPositions(t *testing.T) {
206
207
require .Equal (t , "RIVN" , rivn .UnderlyingSymbol )
207
208
require .Equal (t , 40 , rivn .Quantity )
208
209
require .Equal (t , Short , rivn .QuantityDirection )
209
- require .Equal (t , StringToFloat32 (0.41 ), rivn .ClosePrice )
210
- require .Equal (t , StringToFloat32 (0.79 ), rivn .AverageOpenPrice )
211
- require .Equal (t , StringToFloat32 (0.79 ), rivn .AverageYearlyMarketClosePrice )
212
- require .Equal (t , StringToFloat32 (0.41 ), rivn .AverageDailyMarketClosePrice )
210
+ require .Equal (t , decimal . NewFromFloat (0.41 ), rivn .ClosePrice )
211
+ require .Equal (t , decimal . NewFromFloat (0.79 ), rivn .AverageOpenPrice )
212
+ require .Equal (t , decimal . NewFromFloat (0.79 ), rivn .AverageYearlyMarketClosePrice )
213
+ require .Equal (t , decimal . NewFromFloat (0.41 ), rivn .AverageDailyMarketClosePrice )
213
214
require .Equal (t , 100 , rivn .Multiplier )
214
215
require .Equal (t , Debit , rivn .CostEffect )
215
216
require .False (t , rivn .IsSuppressed )
216
217
require .False (t , rivn .IsFrozen )
217
218
require .Equal (t , 0 , rivn .RestrictedQuantity )
218
219
require .Equal (t , "2023-06-09T20:00:00Z" , rivn .ExpiresAt .Format (time .RFC3339 ))
219
- require .Equal (t , StringToFloat32 ( 0.0 ), rivn .RealizedDayGain )
220
+ require .True (t , decimal . Zero . Equal ( rivn .RealizedDayGain ) )
220
221
require .Equal (t , None , rivn .RealizedDayGainEffect )
221
222
require .Equal (t , "2023-05-24" , rivn .RealizedDayGainDate )
222
- require .Equal (t , StringToFloat32 ( 0.0 ), rivn .RealizedToday )
223
+ require .True (t , decimal . Zero . Equal ( rivn .RealizedToday ) )
223
224
require .Equal (t , None , rivn .RealizedTodayEffect )
224
225
require .Equal (t , "2023-05-24" , rivn .RealizedTodayDate )
225
226
require .Equal (t , "2023-05-24T17:17:57.615Z" , rivn .CreatedAt .Format (time .RFC3339Nano ))
@@ -259,49 +260,49 @@ func TestGetAccountBalanceSnapshots(t *testing.T) {
259
260
snap := resp [0 ]
260
261
261
262
require .Equal (t , "5YZ55555" , snap .AccountNumber )
262
- require .Equal (t , StringToFloat32 (51600.762 ), snap .CashBalance )
263
- require .Equal (t , StringToFloat32 (281983.965 ), snap .LongEquityValue )
264
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .ShortEquityValue )
265
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .LongDerivativeValue )
266
- require .Equal (t , StringToFloat32 ( 82680.0 ), snap .ShortDerivativeValue )
267
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .LongFuturesValue )
268
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .ShortFuturesValue )
269
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .LongFuturesDerivativeValue )
270
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .ShortFuturesDerivativeValue )
271
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .LongMargineableValue )
272
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .ShortMargineableValue )
273
- require .Equal (t , StringToFloat32 (452284.727 ), snap .MarginEquity )
274
- require .Equal (t , StringToFloat32 (20078.762 ), snap .EquityBuyingPower )
275
- require .Equal (t , StringToFloat32 (20078.762 ), snap .DerivativeBuyingPower )
276
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .DayTradingBuyingPower )
277
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .FuturesMarginRequirement )
278
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .AvailableTradingFunds )
279
- require .Equal (t , StringToFloat32 (432279.047 ), snap .MaintenanceRequirement )
280
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .MaintenanceCallValue )
281
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .RegTCallValue )
282
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .DayTradingCallValue )
283
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .DayEquityCallValue )
284
- require .Equal (t , StringToFloat32 (4544.727 ), snap .NetLiquidatingValue )
285
- require .Equal (t , StringToFloat32 (20078.76 ), snap .CashAvailableToWithdraw )
286
- require .Equal (t , StringToFloat32 (20078.76 ), snap .DayTradeExcess )
287
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .PendingCash )
263
+ require .Equal (t , decimal . NewFromFloat (51600.762 ), snap .CashBalance )
264
+ require .Equal (t , decimal . NewFromFloat (281983.965 ), snap .LongEquityValue )
265
+ require .True (t , decimal . Zero . Equal ( snap .ShortEquityValue ) )
266
+ require .True (t , decimal . Zero . Equal ( snap .LongDerivativeValue ) )
267
+ require .True (t , snap .ShortDerivativeValue . Equal ( decimal . NewFromInt ( 82680 )) )
268
+ require .True (t , decimal . Zero . Equal ( snap .LongFuturesValue ) )
269
+ require .True (t , decimal . Zero . Equal ( snap .ShortFuturesValue ) )
270
+ require .True (t , decimal . Zero . Equal ( snap .LongFuturesDerivativeValue ) )
271
+ require .True (t , decimal . Zero . Equal ( snap .ShortFuturesDerivativeValue ) )
272
+ require .True (t , decimal . Zero . Equal ( snap .LongMargineableValue ) )
273
+ require .True (t , decimal . Zero . Equal ( snap .ShortMargineableValue ) )
274
+ require .Equal (t , decimal . NewFromFloat (452284.727 ), snap .MarginEquity )
275
+ require .Equal (t , decimal . NewFromFloat (20078.762 ), snap .EquityBuyingPower )
276
+ require .Equal (t , decimal . NewFromFloat (20078.762 ), snap .DerivativeBuyingPower )
277
+ require .True (t , decimal . Zero . Equal ( snap .DayTradingBuyingPower ) )
278
+ require .True (t , decimal . Zero . Equal ( snap .FuturesMarginRequirement ) )
279
+ require .True (t , decimal . Zero . Equal ( snap .AvailableTradingFunds ) )
280
+ require .Equal (t , decimal . NewFromFloat (432279.047 ), snap .MaintenanceRequirement )
281
+ require .True (t , decimal . Zero . Equal ( snap .MaintenanceCallValue ) )
282
+ require .True (t , decimal . Zero . Equal ( snap .RegTCallValue ) )
283
+ require .True (t , decimal . Zero . Equal ( snap .DayTradingCallValue ) )
284
+ require .True (t , decimal . Zero . Equal ( snap .DayEquityCallValue ) )
285
+ require .Equal (t , decimal . NewFromFloat (4544.727 ), snap .NetLiquidatingValue )
286
+ require .Equal (t , decimal . NewFromFloat (20078.76 ), snap .CashAvailableToWithdraw )
287
+ require .Equal (t , decimal . NewFromFloat (20078.76 ), snap .DayTradeExcess )
288
+ require .True (t , decimal . Zero . Equal ( snap .PendingCash ) )
288
289
require .Equal (t , None , snap .PendingCashEffect )
289
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .LongCryptocurrencyValue )
290
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .ShortCryptocurrencyValue )
291
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .CryptocurrencyMarginRequirement )
292
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .UnsettledCryptocurrencyFiatAmount )
290
+ require .True (t , decimal . Zero . Equal ( snap .LongCryptocurrencyValue ) )
291
+ require .True (t , decimal . Zero . Equal ( snap .ShortCryptocurrencyValue ) )
292
+ require .True (t , decimal . Zero . Equal ( snap .CryptocurrencyMarginRequirement ) )
293
+ require .True (t , decimal . Zero . Equal ( snap .UnsettledCryptocurrencyFiatAmount ) )
293
294
require .Equal (t , None , snap .UnsettledCryptocurrencyFiatEffect )
294
- require .Equal (t , StringToFloat32 (20078.76 ), snap .ClosedLoopAvailableBalance )
295
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .EquityOfferingMarginRequirement )
296
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .LongBondValue )
297
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .BondMarginRequirement )
295
+ require .Equal (t , decimal . NewFromFloat (20078.76 ), snap .ClosedLoopAvailableBalance )
296
+ require .True (t , decimal . Zero . Equal ( snap .EquityOfferingMarginRequirement ) )
297
+ require .True (t , decimal . Zero . Equal ( snap .LongBondValue ) )
298
+ require .True (t , decimal . Zero . Equal ( snap .BondMarginRequirement ) )
298
299
require .Equal (t , "2023-06-08" , snap .SnapshotDate )
299
- require .Equal (t , StringToFloat32 (432279.0465 ), snap .RegTMarginRequirement )
300
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .FuturesOvernightMarginRequirement )
301
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .FuturesIntradayMarginRequirement )
302
- require .Equal (t , StringToFloat32 (20078.762 ), snap .MaintenanceExcess )
303
- require .Equal (t , StringToFloat32 ( 0.0 ), snap .PendingMarginInterest )
304
- require .Equal (t , StringToFloat32 (20078.76 ), snap .EffectiveCryptocurrencyBuyingPower )
300
+ require .Equal (t , decimal . NewFromFloat (432279.0465 ), snap .RegTMarginRequirement )
301
+ require .True (t , decimal . Zero . Equal ( snap .FuturesOvernightMarginRequirement ) )
302
+ require .True (t , decimal . Zero . Equal ( snap .FuturesIntradayMarginRequirement ) )
303
+ require .Equal (t , decimal . NewFromFloat (20078.762 ), snap .MaintenanceExcess )
304
+ require .True (t , decimal . Zero . Equal ( snap .PendingMarginInterest ) )
305
+ require .Equal (t , decimal . NewFromFloat (20078.76 ), snap .EffectiveCryptocurrencyBuyingPower )
305
306
require .Equal (t , "2023-06-08T18:37:39.568Z" , snap .UpdatedAt .Format (time .RFC3339Nano ))
306
307
}
307
308
@@ -339,18 +340,18 @@ func TestGetAccountNetLiqHistory(t *testing.T) {
339
340
340
341
liq := resp [0 ]
341
342
342
- require .Equal (t , StringToFloat32 (4498.667 ), liq .Open )
343
- require .Equal (t , StringToFloat32 (4498.667 ), liq .High )
344
- require .Equal (t , StringToFloat32 (4498.667 ), liq .Low )
345
- require .Equal (t , StringToFloat32 (4498.667 ), liq .Close )
346
- require .Equal (t , StringToFloat32 ( 0.0 ), liq .PendingCashOpen )
347
- require .Equal (t , StringToFloat32 ( 0.0 ), liq .PendingCashHigh )
348
- require .Equal (t , StringToFloat32 ( 0.0 ), liq .PendingCashLow )
349
- require .Equal (t , StringToFloat32 ( 0.0 ), liq .PendingCashClose )
350
- require .Equal (t , StringToFloat32 (4498.667 ), liq .TotalOpen )
351
- require .Equal (t , StringToFloat32 (4498.667 ), liq .TotalHigh )
352
- require .Equal (t , StringToFloat32 (4498.667 ), liq .TotalLow )
353
- require .Equal (t , StringToFloat32 (4498.667 ), liq .TotalClose )
343
+ require .Equal (t , decimal . NewFromFloat (4498.667 ), liq .Open )
344
+ require .Equal (t , decimal . NewFromFloat (4498.667 ), liq .High )
345
+ require .Equal (t , decimal . NewFromFloat (4498.667 ), liq .Low )
346
+ require .Equal (t , decimal . NewFromFloat (4498.667 ), liq .Close )
347
+ require .True (t , decimal . Zero . Equal ( liq .PendingCashOpen ) )
348
+ require .True (t , decimal . Zero . Equal ( liq .PendingCashHigh ) )
349
+ require .True (t , decimal . Zero . Equal ( liq .PendingCashLow ) )
350
+ require .True (t , decimal . Zero . Equal ( liq .PendingCashClose ) )
351
+ require .Equal (t , decimal . NewFromFloat (4498.667 ), liq .TotalOpen )
352
+ require .Equal (t , decimal . NewFromFloat (4498.667 ), liq .TotalHigh )
353
+ require .Equal (t , decimal . NewFromFloat (4498.667 ), liq .TotalLow )
354
+ require .Equal (t , decimal . NewFromFloat (4498.667 ), liq .TotalClose )
354
355
require .Equal (t , "2023-06-08 13:30:00+00" , liq .Time )
355
356
}
356
357
0 commit comments