Skip to content

Commit 85e4165

Browse files
ilanDoronducquangkstn
authored andcommitted
add mock contract for testing
MAX_RATE as expected
1 parent 2345792 commit 85e4165

File tree

2 files changed

+68
-4
lines changed

2 files changed

+68
-4
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
pragma solidity 0.4.18;
2+
3+
import "../reserves/KyberReserveHighRate.sol";
4+
5+
/// @title Kyber Reserve contract
6+
/// reuses KyberReserve.sol contract while overriding a few functions / values.
7+
/// Update MAX_RATE to higher value and should have maximum code reuse
8+
contract MockKyberReserveHighRate is KyberReserveHighRate {
9+
10+
function MockKyberReserveHighRate(address _kyberNetwork, ConversionRatesInterface _ratesContract,
11+
address _admin) public KyberReserveHighRate(_kyberNetwork, _ratesContract, _admin)
12+
{ }
13+
14+
function MockCalcDstQty(uint srcQty, uint srcDecimals, uint dstDecimals, uint rate)
15+
public pure returns(uint)
16+
{
17+
return calcDstQty(srcQty, srcDecimals, dstDecimals, rate);
18+
}
19+
20+
function MockCalcSrcQty(uint dstQty, uint srcDecimals, uint dstDecimals, uint rate)
21+
public pure returns(uint)
22+
{
23+
return calcSrcQty(dstQty, srcDecimals, dstDecimals, rate);
24+
}
25+
}

test/sol4/kyberReserveHighRate.js

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
const ConversionRates = artifacts.require("ConversionRates.sol");
2-
const EnhancedStepFunctions = artifacts.require("MockEnhancedStepFunctions.sol");
3-
const TestToken = artifacts.require("TestToken.sol");
4-
const Reserve = artifacts.require("KyberReserveHighRate.sol");
1+
const ConversionRates = artifacts.require("ConversionRates");
2+
const EnhancedStepFunctions = artifacts.require("MockEnhancedStepFunctions");
3+
const TestToken = artifacts.require("TestToken");
4+
const Reserve = artifacts.require("MockKyberReserveHighRate");
55
const SanityRates = artifacts.require("SanityRates");
66

77
const Helper = require("./helper.js");
@@ -14,6 +14,7 @@ const ethAddress = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
1414
const zeroAddress = '0x0000000000000000000000000000000000000000';
1515
const precision = new BN(10).pow(new BN(18));
1616
const maxAllowance = new BN(2).pow(new BN(255));
17+
const MAX_RATE = precisionUnits.mul(new BN(10 ** 7));
1718

1819
//balances
1920
let expectedReserveBalanceWei = new BN(0);
@@ -237,6 +238,44 @@ contract('KyberReserveHighRate', function(accounts) {
237238
}
238239
});
239240

241+
it("test MAX_RATE as expected for internal calcDstQty", async function() {
242+
const srcQty = new BN(5000);
243+
const decimals = 18;
244+
let rate = MAX_RATE;
245+
246+
const expectedDstQty = Helper.calcDstQty(srcQty, decimals, decimals, rate);
247+
248+
const rxDestQty = await reserveInst.MockCalcDstQty(srcQty, decimals, decimals, rate);
249+
Helper.assertEqual(expectedDstQty, rxDestQty);
250+
251+
rate = MAX_RATE.add(new BN(1));
252+
try {
253+
await reserveInst.MockCalcDstQty(srcQty, decimals, decimals, rate);
254+
assert(false, "shouldn't reach this line. expected line above to throw.")
255+
} catch(e) {
256+
assert(Helper.isRevertErrorMessage(e), "expected throw but got: " + e);
257+
}
258+
});
259+
260+
it("test MAX_RATE as expected for internal calcSrcQty", async function() {
261+
const dstQty = new BN(50000000000);
262+
const decimals = 18;
263+
let rate = MAX_RATE;
264+
265+
const expectedSrcQty = Helper.calcSrcQty(dstQty, decimals, decimals, rate);
266+
267+
const rxSrcQty = await reserveInst.MockCalcSrcQty(dstQty, decimals, decimals, rate);
268+
Helper.assertEqual(expectedSrcQty, rxSrcQty);
269+
270+
rate = MAX_RATE.add(new BN(1));
271+
try {
272+
await reserveInst.MockCalcSrcQty(dstQty, decimals, decimals, rate);
273+
assert(false, "shouldn't reach this line. expected line above to throw.")
274+
} catch(e) {
275+
assert(Helper.isRevertErrorMessage(e), "expected throw but got: " + e);
276+
}
277+
});
278+
240279
it("should perform small buy (no steps) and check: balances changed, rate is expected rate.", async function () {
241280
let tokenInd = 3;
242281
let token = tokens[tokenInd]; //choose some token

0 commit comments

Comments
 (0)