github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/order/keeper/disk_cache_test.go (about)

     1  //go:build ignore
     2  
     3  package keeper
     4  
     5  import (
     6  	"testing"
     7  
     8  	"github.com/fibonacci-chain/fbc/x/common"
     9  
    10  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    11  	"github.com/fibonacci-chain/fbc/x/order/types"
    12  	"github.com/stretchr/testify/require"
    13  )
    14  
    15  func TestGetOrderIDsMapCopy(t *testing.T) {
    16  	testInput := CreateTestInputWithBalance(t, 1, 100)
    17  	keeper := testInput.OrderKeeper
    18  
    19  	keeper.diskCache.setOrderIDs("k1", []string{"v1", "v2"})
    20  	keeper.diskCache.setOrderIDs("k2", []string{"v3", "v4"})
    21  	keeper.diskCache.setOrderIDs("k3", []string{})
    22  	keeper.diskCache.setOrderIDs("k4", nil)
    23  	idMap := keeper.diskCache.GetOrderIDsMapCopy()
    24  
    25  	require.EqualValues(t, 2, len(idMap.Data))
    26  	idMap.Data["k1"][0] = "update v1"
    27  	idMap.Data["k1"][1] = "update v2"
    28  	idMap.Data["k2"][0] = "update v3"
    29  	idMap.Data["k2"][1] = "update v4"
    30  	idMap.Data["k3"] = nil
    31  
    32  	idMap2 := keeper.diskCache.GetOrderIDsMapCopy()
    33  	require.EqualValues(t, 2, len(idMap2.Data))
    34  	require.EqualValues(t, "v1", idMap2.Data["k1"][0])
    35  	require.EqualValues(t, "v2", idMap2.Data["k1"][1])
    36  	require.EqualValues(t, "v3", idMap2.Data["k2"][0])
    37  	require.EqualValues(t, "v4", idMap2.Data["k2"][1])
    38  }
    39  
    40  func TestKeeper_SetBlockOrderNum(t *testing.T) {
    41  	testInput := CreateTestInputWithBalance(t, 1, 100)
    42  	keeper := testInput.OrderKeeper
    43  	ctx := testInput.Ctx
    44  
    45  	keeper.SetBlockOrderNum(ctx, 10, 88)
    46  	require.EqualValues(t, 88, keeper.GetBlockOrderNum(ctx, 10))
    47  }
    48  
    49  func TestKeeper_DropBlockOrderNum(t *testing.T) {
    50  	testInput := CreateTestInputWithBalance(t, 1, 100)
    51  	keeper := testInput.OrderKeeper
    52  	ctx := testInput.Ctx
    53  
    54  	keeper.SetBlockOrderNum(ctx, 10, 88)
    55  	keeper.DropBlockOrderNum(ctx, 10)
    56  	require.NotEqual(t, 88, keeper.GetBlockOrderNum(ctx, 10))
    57  }
    58  
    59  func TestKeeper_SetExpireBlockHeight(t *testing.T) {
    60  	testInput := CreateTestInput(t)
    61  	keeper := testInput.OrderKeeper
    62  	ctx := testInput.Ctx
    63  
    64  	var blockHeight int64 = 10
    65  	expireBlockHeight := []int64{1, 2}
    66  	require.EqualValues(t, []int64{}, keeper.GetExpireBlockHeight(ctx, blockHeight))
    67  	keeper.SetExpireBlockHeight(ctx, blockHeight, expireBlockHeight)
    68  	require.EqualValues(t, expireBlockHeight, keeper.GetExpireBlockHeight(ctx, blockHeight))
    69  	keeper.DropExpireBlockHeight(ctx, blockHeight)
    70  	require.EqualValues(t, []int64{}, keeper.GetExpireBlockHeight(ctx, blockHeight))
    71  }
    72  
    73  func TestKeeper_StoreOrderIDsMap(t *testing.T) {
    74  	testInput := CreateTestInput(t)
    75  	keeper := testInput.OrderKeeper
    76  	ctx := testInput.Ctx
    77  
    78  	orderIDs := []string{"ID0000000010-1", "ID0000000010-2", "ID0000000010-3"}
    79  	//key xxb_fibo:10.00000000:BUY
    80  	keeper.StoreOrderIDsMap(ctx, "xxb_"+common.NativeToken+":10.00000000:BUY", orderIDs)
    81  
    82  	require.EqualValues(t, 0, len(keeper.diskCache.orderIDsMap.Data))
    83  }
    84  
    85  func TestFlushCache(t *testing.T) {
    86  	testInput := CreateTestInput(t)
    87  	dcache := newDiskCache()
    88  
    89  	//reset
    90  	dcache.reset()
    91  
    92  	dcache.setOpenNum(6)
    93  	require.EqualValues(t, 6, dcache.getOpenNum())
    94  
    95  	//store order number
    96  	dcache.setStoreOrderNum(88)
    97  	dcache.DecreaseStoreOrderNum(1)
    98  	require.EqualValues(t, 87, dcache.storeOrderNum)
    99  
   100  	dcache.setLastPrice(types.TestTokenPair, sdk.MustNewDecFromStr("11.0"))
   101  	order := mockOrder("", types.TestTokenPair, types.BuyOrder, "8", "1")
   102  	order.Sender = testInput.TestAddrs[0]
   103  
   104  	//insert & remove order
   105  	dcache.insertOrder(order)
   106  	require.EqualValues(t, 7, dcache.getOpenNum())
   107  	require.EqualValues(t, sdk.MustNewDecFromStr("11"), dcache.getLastPrice(types.TestTokenPair))
   108  	require.EqualValues(t, sdk.MustNewDecFromStr("0"), dcache.getLastPrice(types.TestTokenPair+"a"))
   109  	require.EqualValues(t, 1, len(dcache.GetUpdatedOrderIDKeys()))
   110  	require.EqualValues(t, 1, len(dcache.GetUpdatedDepthbookKeys()))
   111  	require.EqualValues(t, 1, len(dcache.getOrderIDs("xxb_"+common.NativeToken+":8.000000000000000000:BUY")))
   112  	dcache.removeOrder(order)
   113  	require.EqualValues(t, 6, dcache.openNum)
   114  
   115  	//close order
   116  	dcache.closeOrder("ID0000000010-1")
   117  	require.EqualValues(t, 2, len(dcache.GetClosedOrderIDs()))
   118  
   119  	mapdata := dcache.GetOrderIDsMapCopy()
   120  	require.Equal(t, make(map[string][]string), mapdata.Data)
   121  
   122  }
   123  
   124  func TestGetProductsFromDepthBookMap(t *testing.T) {
   125  	testInput := CreateTestInputWithBalance(t, 1, 100)
   126  	keeper := testInput.OrderKeeper
   127  	product := types.TestTokenPair
   128  	depthBook := types.DepthBook{}
   129  	order := mockOrder("", types.TestTokenPair, types.BuyOrder, "10.0", "1.0")
   130  	depthBook.InsertOrder(order)
   131  	keeper.SetDepthBook(product, &depthBook)
   132  	productsList := keeper.GetProductsFromDepthBookMap()
   133  	require.EqualValues(t, 1, len(productsList))
   134  	require.EqualValues(t, product, productsList[0])
   135  }