Skip to content

Commit

Permalink
add additional unit tests (#560)
Browse files Browse the repository at this point in the history
  • Loading branch information
jakob-dydx authored Oct 12, 2023
1 parent ac5b7ab commit 06e009a
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 1 deletion.
46 changes: 46 additions & 0 deletions protocol/testutil/constants/subaccounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,21 @@ var (
},
},
}
Carl_Num0_1BTC_Long_54999USD = satypes.Subaccount{
Id: &Carl_Num0,
AssetPositions: []*satypes.AssetPosition{
{
AssetId: 0,
Quantums: dtypes.NewInt(-54_999_000_000), // -$54,999
},
},
PerpetualPositions: []*satypes.PerpetualPosition{
{
PerpetualId: 0,
Quantums: dtypes.NewInt(100_000_000), // 1 BTC
},
},
}
Carl_Num0_1BTC_Short_55000USD = satypes.Subaccount{
Id: &Carl_Num0,
AssetPositions: []*satypes.AssetPosition{
Expand Down Expand Up @@ -176,6 +191,25 @@ var (
},
},
}
Carl_Num0_1BTC_Short_1ETH_Long_47000USD = satypes.Subaccount{
Id: &Carl_Num0,
AssetPositions: []*satypes.AssetPosition{
{
AssetId: 0,
Quantums: dtypes.NewInt(47_000_000_000), // $47,000
},
},
PerpetualPositions: []*satypes.PerpetualPosition{
{
PerpetualId: 0,
Quantums: dtypes.NewInt(-100_000_000), // -1 BTC
},
{
PerpetualId: 1,
Quantums: dtypes.NewInt(1_000_000_000), // 1 ETH
},
},
}
Carl_Num0_599USD = satypes.Subaccount{
Id: &Carl_Num0,
AssetPositions: []*satypes.AssetPosition{
Expand Down Expand Up @@ -266,6 +300,18 @@ var (
},
},
}
Dave_Num0_1BTC_Short_100000USD = satypes.Subaccount{
Id: &Dave_Num0,
AssetPositions: []*satypes.AssetPosition{
&Usdc_Asset_100_000,
},
PerpetualPositions: []*satypes.PerpetualPosition{
{
PerpetualId: 0,
Quantums: dtypes.NewInt(-100_000_000), // -1 BTC
},
},
}
Dave_Num0_1BTC_Long_45001USD_Short = satypes.Subaccount{
Id: &Dave_Num0,
AssetPositions: []*satypes.AssetPosition{
Expand Down
68 changes: 67 additions & 1 deletion protocol/x/clob/keeper/deleveraging_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ func TestOffsetSubaccountPerpetualPosition(t *testing.T) {
expectedFills []types.MatchPerpetualDeleveraging_Fill
expectedQuantumsRemaining *big.Int
}{
"Can get one offsetting subaccount": {
"Can get one offsetting subaccount for deleveraged short": {
subaccounts: []satypes.Subaccount{
constants.Carl_Num0_1BTC_Short_54999USD,
constants.Dave_Num0_1BTC_Long_50000USD,
Expand Down Expand Up @@ -418,6 +418,33 @@ func TestOffsetSubaccountPerpetualPosition(t *testing.T) {
},
expectedQuantumsRemaining: new(big.Int),
},
"Can get one offsetting subaccount for deleveraged long": {
subaccounts: []satypes.Subaccount{
constants.Carl_Num0_1BTC_Long_54999USD,
constants.Dave_Num0_1BTC_Short_100000USD,
},
liquidatedSubaccountId: constants.Carl_Num0,
perpetualId: 0,
deltaQuantums: big.NewInt(-100_000_000),
expectedSubaccounts: []satypes.Subaccount{
{
Id: &constants.Carl_Num0,
},
{
Id: &constants.Dave_Num0,
AssetPositions: keepertest.CreateUsdcAssetPosition(
big.NewInt(100_000_000_000 - 54_999_000_000),
),
},
},
expectedFills: []types.MatchPerpetualDeleveraging_Fill{
{
OffsettingSubaccountId: constants.Dave_Num0,
FillAmount: 100_000_000,
},
},
expectedQuantumsRemaining: new(big.Int),
},
"Can get multiple offsetting subaccounts": {
subaccounts: []satypes.Subaccount{
constants.Carl_Num0_1BTC_Short_54999USD,
Expand Down Expand Up @@ -587,6 +614,45 @@ func TestOffsetSubaccountPerpetualPosition(t *testing.T) {
expectedFills: []types.MatchPerpetualDeleveraging_Fill{},
expectedQuantumsRemaining: big.NewInt(100_000_000),
},
"Can offset subaccount with multiple positions, first position is offset leaving TNC constant": {
subaccounts: []satypes.Subaccount{
constants.Carl_Num0_1BTC_Short_1ETH_Long_47000USD,
constants.Dave_Num0_1BTC_Long_50000USD,
},
liquidatedSubaccountId: constants.Carl_Num0,
perpetualId: 0,
deltaQuantums: big.NewInt(100_000_000),
expectedSubaccounts: []satypes.Subaccount{
// Carl's BTC short position is offset by Dave's BTC long position at $50,000 leaving
// his ETH long position untouched and dropping his asset position to -$3000.
{
Id: &constants.Carl_Num0,
PerpetualPositions: []*satypes.PerpetualPosition{
{
PerpetualId: 1,
Quantums: dtypes.NewInt(1_000_000_000), // 1 ETH
FundingIndex: dtypes.NewInt(0),
},
},
AssetPositions: keepertest.CreateUsdcAssetPosition(
big.NewInt(-3_000_000_000),
),
},
{
Id: &constants.Dave_Num0,
AssetPositions: keepertest.CreateUsdcAssetPosition(
big.NewInt(50_000_000_000 + 50_000_000_000),
),
},
},
expectedFills: []types.MatchPerpetualDeleveraging_Fill{
{
OffsettingSubaccountId: constants.Dave_Num0,
FillAmount: 100_000_000,
},
},
expectedQuantumsRemaining: big.NewInt(0),
},
}

for name, tc := range tests {
Expand Down

0 comments on commit 06e009a

Please sign in to comment.