github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/order/genesis_test.go (about) 1 //go:build ignore 2 3 package order 4 5 import ( 6 "fmt" 7 "testing" 8 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 "github.com/fibonacci-chain/fbc/libs/tendermint/types/time" 11 "github.com/fibonacci-chain/fbc/x/common" 12 "github.com/fibonacci-chain/fbc/x/dex" 13 "github.com/fibonacci-chain/fbc/x/order/keeper" 14 "github.com/fibonacci-chain/fbc/x/order/types" 15 "github.com/stretchr/testify/require" 16 ) 17 18 func TestValidateGenesis(t *testing.T) { 19 genesisState := DefaultGenesisState() 20 err := ValidateGenesis(genesisState) 21 require.NoError(t, err) 22 } 23 24 func TestExportGenesis(t *testing.T) { 25 testInput := keeper.CreateTestInput(t) 26 ctx := testInput.Ctx 27 orderKeeper := testInput.OrderKeeper 28 29 params := types.DefaultParams() 30 params.OrderExpireBlocks = 1234 31 params.MaxDealsPerBlock = 2345 32 33 tokenPair := dex.GetBuiltInTokenPair() 34 err := testInput.DexKeeper.SaveTokenPair(ctx, tokenPair) 35 require.NoError(t, err) 36 product := fmt.Sprintf("%s_%s", tokenPair.BaseAssetSymbol, tokenPair.QuoteAssetSymbol) 37 38 var orders []*types.Order 39 order1 := types.NewOrder("txHash", 40 testInput.TestAddrs[0], 41 product, 42 types.SellOrder, 43 sdk.NewDec(123), 44 sdk.NewDec(456), 45 time.Now().Unix(), 46 5, 47 sdk.NewDecCoinFromDec(common.NativeToken, sdk.NewDec(1))) 48 order1.OrderID = types.FormatOrderID(10, 1) 49 order1.FilledAvgPrice = sdk.ZeroDec() 50 51 orders = append(orders, order1) 52 53 initGenesis := GenesisState{ 54 Params: params, 55 OpenOrders: orders, 56 } 57 58 InitGenesis(ctx, orderKeeper, initGenesis) 59 require.Equal(t, params, *orderKeeper.GetParams(ctx)) 60 // 0x11 61 require.Equal(t, order1, orderKeeper.GetOrder(ctx, order1.OrderID)) 62 // 0x12 63 depthBook := &types.DepthBook{} 64 depthBook.InsertOrder(initGenesis.OpenOrders[0]) 65 require.Equal(t, depthBook, orderKeeper.GetDepthBookFromDB(ctx, product)) 66 // 0x13 67 key1 := types.FormatOrderIDsKey(product, initGenesis.OpenOrders[0].Price, initGenesis.OpenOrders[0].Side) 68 require.Equal(t, []string{initGenesis.OpenOrders[0].OrderID}, orderKeeper.GetProductPriceOrderIDsFromDB(ctx, key1)) 69 // 0x14 70 require.Equal(t, tokenPair.InitPrice, orderKeeper.GetLastPrice(ctx, product)) 71 // 0x15 72 require.Equal(t, []int64{10}, orderKeeper.GetExpireBlockHeight(ctx, initGenesis.Params.OrderExpireBlocks+10)) 73 // 0x16 74 require.Equal(t, int64(1), orderKeeper.GetBlockOrderNum(ctx, 10)) 75 // 0x17 76 require.Equal(t, 0, len(orderKeeper.GetLastClosedOrderIDs(ctx))) 77 // 0x18 78 require.Equal(t, int64(0), orderKeeper.GetLastExpiredBlockHeight(ctx)) 79 // 0x19 80 require.Equal(t, int64(1), orderKeeper.GetOpenOrderNum(ctx)) 81 // 0x20 82 require.Equal(t, int64(1), orderKeeper.GetStoreOrderNum(ctx)) 83 84 exportGenesis := ExportGenesis(ctx, orderKeeper) 85 require.Equal(t, params, exportGenesis.Params) 86 require.Equal(t, order1, exportGenesis.OpenOrders[0]) 87 88 params.MaxDealsPerBlock = 1 89 params.FeePerBlock = sdk.NewDecCoinFromDec(common.NativeToken, sdk.OneDec()) 90 params.TradeFeeRate = sdk.NewDecWithPrec(5, 2) 91 params.OrderExpireBlocks = 3333 92 orderKeeper.SetParams(ctx, ¶ms) 93 94 order2 := types.NewOrder("txHash", 95 testInput.TestAddrs[0], 96 product, 97 types.BuyOrder, 98 sdk.NewDec(2), 99 sdk.NewDec(5), 100 time.Now().Unix(), 101 5, 102 sdk.NewDecCoinFromDec(types.DefaultFeeDenomPerBlock, sdk.NewDec(1))) 103 order2.FilledAvgPrice = sdk.ZeroDec() 104 ctx.SetBlockHeight(1000) 105 err = orderKeeper.PlaceOrder(ctx, order2) 106 require.NoError(t, err) 107 orderKeeper.Cache2Disk(ctx) 108 109 exportGenesis = ExportGenesis(ctx, orderKeeper) 110 require.Equal(t, params, exportGenesis.Params) 111 require.Equal(t, order1, orderKeeper.GetOrder(ctx, order1.OrderID)) 112 require.Equal(t, order2, orderKeeper.GetOrder(ctx, order2.OrderID)) 113 require.Equal(t, orderKeeper.GetOrder(ctx, exportGenesis.OpenOrders[0].OrderID), exportGenesis.OpenOrders[0]) 114 require.Equal(t, orderKeeper.GetOrder(ctx, exportGenesis.OpenOrders[1].OrderID), exportGenesis.OpenOrders[1]) 115 116 newTestInput := keeper.CreateTestInput(t) 117 newCtx := newTestInput.Ctx 118 newOrderKeeper := newTestInput.OrderKeeper 119 err = newTestInput.DexKeeper.SaveTokenPair(newCtx, tokenPair) 120 require.NoError(t, err) 121 InitGenesis(newCtx, newOrderKeeper, exportGenesis) 122 require.Equal(t, exportGenesis.Params, *newOrderKeeper.GetParams(newCtx)) 123 // 0x11 124 require.Equal(t, order1, newOrderKeeper.GetOrder(newCtx, order1.OrderID)) 125 require.Equal(t, order2, newOrderKeeper.GetOrder(newCtx, order2.OrderID)) 126 // 0x12 127 depthBook = &types.DepthBook{} 128 depthBook.InsertOrder(exportGenesis.OpenOrders[0]) 129 depthBook.InsertOrder(exportGenesis.OpenOrders[1]) 130 require.Equal(t, depthBook, newOrderKeeper.GetDepthBookFromDB(newCtx, product)) 131 // 0x13 132 key1 = types.FormatOrderIDsKey(product, exportGenesis.OpenOrders[0].Price, exportGenesis.OpenOrders[0].Side) 133 key2 := types.FormatOrderIDsKey(product, exportGenesis.OpenOrders[1].Price, exportGenesis.OpenOrders[1].Side) 134 require.Equal(t, []string{exportGenesis.OpenOrders[0].OrderID}, newOrderKeeper.GetProductPriceOrderIDsFromDB(newCtx, key1)) 135 require.Equal(t, []string{exportGenesis.OpenOrders[1].OrderID}, newOrderKeeper.GetProductPriceOrderIDsFromDB(newCtx, key2)) 136 // 0x14 137 require.Equal(t, tokenPair.InitPrice, newOrderKeeper.GetLastPrice(newCtx, product)) 138 // 0x15 139 require.Equal(t, []int64{10}, newOrderKeeper.GetExpireBlockHeight(newCtx, exportGenesis.Params.OrderExpireBlocks+10)) 140 require.Equal(t, []int64{1000}, newOrderKeeper.GetExpireBlockHeight(newCtx, exportGenesis.Params.OrderExpireBlocks+1000)) 141 // 0x16 142 require.Equal(t, int64(1), newOrderKeeper.GetBlockOrderNum(newCtx, 10)) 143 require.Equal(t, int64(1), newOrderKeeper.GetBlockOrderNum(newCtx, 1000)) 144 // 0x17 145 require.Equal(t, 0, len(newOrderKeeper.GetLastClosedOrderIDs(newCtx))) 146 // 0x18 147 require.Equal(t, int64(0), newOrderKeeper.GetLastExpiredBlockHeight(newCtx)) 148 // 0x19 149 require.Equal(t, int64(2), newOrderKeeper.GetOpenOrderNum(newCtx)) 150 // 0x20 151 require.Equal(t, int64(2), newOrderKeeper.GetStoreOrderNum(newCtx)) 152 }