mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-10 18:15:19 +00:00
185 lines
5.7 KiB
Go
185 lines
5.7 KiB
Go
|
package v0_15
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
|
||
|
v0_15cdp "github.com/kava-labs/kava/x/cdp/types"
|
||
|
"github.com/kava-labs/kava/x/incentive"
|
||
|
v0_15incentive "github.com/kava-labs/kava/x/incentive/types"
|
||
|
)
|
||
|
|
||
|
// d parses a string into an sdk.Dec type.
|
||
|
// It is an alias for sdk.MustNewDecFromStr.
|
||
|
var d = sdk.MustNewDecFromStr
|
||
|
|
||
|
func TestReplaceUSDXClaimIndexes(t *testing.T) {
|
||
|
claims := incentive.USDXMintingClaims{
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address1"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 1e9),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0.1")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address2"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0")},
|
||
|
{CollateralType: "xrpb-a", RewardFactor: d("0.2")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address3"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{},
|
||
|
),
|
||
|
}
|
||
|
|
||
|
globalIndexes := incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0.5")},
|
||
|
{CollateralType: "xrpb-a", RewardFactor: d("0.8")},
|
||
|
}
|
||
|
|
||
|
syncedClaims := replaceUSDXClaimIndexes(claims, globalIndexes)
|
||
|
|
||
|
for i, claim := range syncedClaims {
|
||
|
// check fields are unchanged
|
||
|
require.Equal(t, claim.Owner, claims[i].Owner)
|
||
|
require.Equal(t, claim.Reward, claims[i].Reward)
|
||
|
// except for indexes which have been overwritten
|
||
|
require.Equal(t, globalIndexes, claim.RewardIndexes)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestEnsureAllCDPsHaveClaims(t *testing.T) {
|
||
|
claims := incentive.USDXMintingClaims{
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address1"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 1e9),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0.1")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address2"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0")},
|
||
|
{CollateralType: "xrpb-a", RewardFactor: d("0.2")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address3"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{},
|
||
|
),
|
||
|
}
|
||
|
|
||
|
cdps := v0_15cdp.CDPs{
|
||
|
{Owner: sdk.AccAddress("address4")}, // don't need anything more than owner for this test
|
||
|
{Owner: sdk.AccAddress("address1")}, // there can be several cdps of different types with same owner
|
||
|
{Owner: sdk.AccAddress("address1")},
|
||
|
{Owner: sdk.AccAddress("address1")},
|
||
|
{Owner: sdk.AccAddress("address2")},
|
||
|
}
|
||
|
|
||
|
globalIndexes := incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0.5")},
|
||
|
{CollateralType: "xrpb-a", RewardFactor: d("0.8")},
|
||
|
}
|
||
|
|
||
|
expectedClaims := incentive.USDXMintingClaims{
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address1"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 1e9),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0.1")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address2"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0")},
|
||
|
{CollateralType: "xrpb-a", RewardFactor: d("0.2")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address3"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address4"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0.5")},
|
||
|
{CollateralType: "xrpb-a", RewardFactor: d("0.8")},
|
||
|
},
|
||
|
),
|
||
|
}
|
||
|
|
||
|
require.Equal(t, expectedClaims, ensureAllCDPsHaveClaims(claims, cdps, globalIndexes))
|
||
|
}
|
||
|
|
||
|
func TestAddRewards(t *testing.T) {
|
||
|
claims := v0_15incentive.USDXMintingClaims{
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address1"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 1e9),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0.1")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address2"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0")},
|
||
|
{CollateralType: "xrpb-a", RewardFactor: d("0.2")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address3"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{},
|
||
|
),
|
||
|
}
|
||
|
|
||
|
rewards := map[string]sdk.Coin{
|
||
|
sdk.AccAddress("address1").String(): sdk.NewInt64Coin(v0_15incentive.USDXMintingRewardDenom, 1e9),
|
||
|
sdk.AccAddress("address3").String(): sdk.NewInt64Coin(v0_15incentive.USDXMintingRewardDenom, 3e9),
|
||
|
sdk.AccAddress("address4").String(): sdk.NewInt64Coin(v0_15incentive.USDXMintingRewardDenom, 1e6),
|
||
|
}
|
||
|
|
||
|
expectedClaims := v0_15incentive.USDXMintingClaims{
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address1"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 2e9),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0.1")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address2"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 0),
|
||
|
incentive.RewardIndexes{
|
||
|
{CollateralType: "bnb-a", RewardFactor: d("0")},
|
||
|
{CollateralType: "xrpb-a", RewardFactor: d("0.2")},
|
||
|
},
|
||
|
),
|
||
|
incentive.NewUSDXMintingClaim(
|
||
|
sdk.AccAddress("address3"),
|
||
|
sdk.NewInt64Coin(incentive.USDXMintingRewardDenom, 3e9),
|
||
|
incentive.RewardIndexes{},
|
||
|
),
|
||
|
}
|
||
|
|
||
|
amendedClaims := addRewards(claims, rewards)
|
||
|
require.Equal(t, expectedClaims, amendedClaims)
|
||
|
}
|