@0x/contracts-staking
: Add _computePoolRewardsSplit()
tests to MixinStakingPoolRewards
unit tests.
This commit is contained in:
parent
28a2e56003
commit
cba72c811d
@ -116,6 +116,23 @@ contract TestMixinStakingPoolRewards is
|
|||||||
return _syncPoolRewards(poolId, reward, membersStake);
|
return _syncPoolRewards(poolId, reward, membersStake);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Expose `_computePoolRewardsSplit()` for testing.
|
||||||
|
function computePoolRewardsSplit(
|
||||||
|
uint32 operatorShare,
|
||||||
|
uint256 totalReward,
|
||||||
|
uint256 membersStake
|
||||||
|
)
|
||||||
|
external
|
||||||
|
pure
|
||||||
|
returns (uint256 operatorReward, uint256 membersReward)
|
||||||
|
{
|
||||||
|
return _computePoolRewardsSplit(
|
||||||
|
operatorShare,
|
||||||
|
totalReward,
|
||||||
|
membersStake
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Access `_delegatedStakeToPoolByOwner`
|
// Access `_delegatedStakeToPoolByOwner`
|
||||||
function delegatedStakeToPoolByOwner(address member, bytes32 poolId)
|
function delegatedStakeToPoolByOwner(address member, bytes32 poolId)
|
||||||
external
|
external
|
||||||
|
@ -417,5 +417,68 @@ blockchainTests.resets('MixinStakingPoolRewards unit tests', env => {
|
|||||||
verifyEventsFromLogs(logs, [], Events.Transfer);
|
verifyEventsFromLogs(logs, [], Events.Transfer);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('_computePoolRewardsSplit', () => {
|
||||||
|
it("gives all rewards to operator if members' stake is zero", async () => {
|
||||||
|
const operatorShare = getRandomPortion(constants.PPM_100_PERCENT);
|
||||||
|
const totalReward = getRandomInteger(1, 1e18);
|
||||||
|
const membersStake = constants.ZERO_AMOUNT;
|
||||||
|
const [operatorReward, membersReward] = await testContract.computePoolRewardsSplit.callAsync(
|
||||||
|
operatorShare,
|
||||||
|
totalReward,
|
||||||
|
membersStake,
|
||||||
|
);
|
||||||
|
expect(operatorReward).to.bignumber.eq(totalReward);
|
||||||
|
expect(membersReward).to.bignumber.eq(0);
|
||||||
|
});
|
||||||
|
it("gives all rewards to operator if members' stake is zero and operator share is zero", async () => {
|
||||||
|
const operatorShare = constants.ZERO_AMOUNT;
|
||||||
|
const totalReward = getRandomInteger(1, 1e18);
|
||||||
|
const membersStake = constants.ZERO_AMOUNT;
|
||||||
|
const [operatorReward, membersReward] = await testContract.computePoolRewardsSplit.callAsync(
|
||||||
|
operatorShare,
|
||||||
|
totalReward,
|
||||||
|
membersStake,
|
||||||
|
);
|
||||||
|
expect(operatorReward).to.bignumber.eq(totalReward);
|
||||||
|
expect(membersReward).to.bignumber.eq(0);
|
||||||
|
});
|
||||||
|
it('gives all rewards to operator if operator share is 100%', async () => {
|
||||||
|
const operatorShare = constants.PPM_100_PERCENT;
|
||||||
|
const totalReward = getRandomInteger(1, 1e18);
|
||||||
|
const membersStake = getRandomInteger(1, 1e18);
|
||||||
|
const [operatorReward, membersReward] = await testContract.computePoolRewardsSplit.callAsync(
|
||||||
|
operatorShare,
|
||||||
|
totalReward,
|
||||||
|
membersStake,
|
||||||
|
);
|
||||||
|
expect(operatorReward).to.bignumber.eq(totalReward);
|
||||||
|
expect(membersReward).to.bignumber.eq(0);
|
||||||
|
});
|
||||||
|
it('gives all rewards to members if operator share is 0%', async () => {
|
||||||
|
const operatorShare = constants.ZERO_AMOUNT;
|
||||||
|
const totalReward = getRandomInteger(1, 1e18);
|
||||||
|
const membersStake = getRandomInteger(1, 1e18);
|
||||||
|
const [operatorReward, membersReward] = await testContract.computePoolRewardsSplit.callAsync(
|
||||||
|
operatorShare,
|
||||||
|
totalReward,
|
||||||
|
membersStake,
|
||||||
|
);
|
||||||
|
expect(operatorReward).to.bignumber.eq(0);
|
||||||
|
expect(membersReward).to.bignumber.eq(totalReward);
|
||||||
|
});
|
||||||
|
it('splits rewards between operator and members based on operator share', async () => {
|
||||||
|
const operatorShare = getRandomPortion(constants.PPM_100_PERCENT);
|
||||||
|
const totalReward = getRandomInteger(1, 1e18);
|
||||||
|
const membersStake = getRandomInteger(1, 1e18);
|
||||||
|
const [operatorReward, membersReward] = await testContract.computePoolRewardsSplit.callAsync(
|
||||||
|
operatorShare,
|
||||||
|
totalReward,
|
||||||
|
membersStake,
|
||||||
|
);
|
||||||
|
expect(operatorReward).to.bignumber.eq(toOperatorPortion(operatorShare, totalReward));
|
||||||
|
expect(membersReward).to.bignumber.eq(toMembersPortion(operatorShare, totalReward));
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
// tslint:disable: max-file-line-count
|
// tslint:disable: max-file-line-count
|
||||||
|
Loading…
x
Reference in New Issue
Block a user