Skip to content

Commit

Permalink
fixed accounting tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Phil Elsasser committed Sep 26, 2018
1 parent 8c7ed0e commit 81e05ad
Showing 1 changed file with 35 additions and 31 deletions.
66 changes: 35 additions & 31 deletions test/MarketCollateralPoolAccounting.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ contract('MarketCollateralPool.Accounting', function(accounts) {

let error = null;
try {
await collateralPool.depositTokensForTrading(500, { from: accounts[5] });
await collateralPool.depositTokensForTrading(collateralToken.address, 500, { from: accounts[5] });
} catch (err) {
error = err;
}
Expand Down Expand Up @@ -99,32 +99,36 @@ contract('MarketCollateralPool.Accounting', function(accounts) {
await collateralToken.approve(collateralPool.address, fourBalance, { from: accounts[3] });

// move tokens to the collateralPool
await collateralPool.depositTokensForTrading(amountToDeposit, { from: accounts[0] });
await collateralPool.depositTokensForTrading(amountToDeposit, { from: accounts[1] });
await collateralPool.depositTokensForTrading(fourBalance, { from: accounts[3] });
await collateralPool.depositTokensForTrading(collateralToken.address, amountToDeposit, { from: accounts[0] });
await collateralPool.depositTokensForTrading(collateralToken.address, amountToDeposit, { from: accounts[1] });
await collateralPool.depositTokensForTrading(collateralToken.address, fourBalance, { from: accounts[3] });

// trigger requires
error = null;
try {
await collateralPool.depositTokensForTrading(amountToDeposit, { from: accounts[2] });
await collateralPool.depositTokensForTrading(collateralToken.address, amountToDeposit, { from: accounts[2] });
} catch (err) {
error = err;
}
assert.ok(error instanceof Error, 'should not be able to deposit tokens');

error = null;
try {
await collateralPool.settleAndClose({ from: accounts[2] });
await collateralPool.settleAndClose(marketContract.address, { from: accounts[2] });
} catch (err) {
error = err;
}
assert.ok(error instanceof Error, 'should not be able call settleAndClose until settled');
// end trigger requires

// ensure balances are now inside the contract.
const tradingBalanceAcctOne = await collateralPool.getUserUnallocatedBalance.call(accounts[0]);
const tradingBalanceAcctTwo = await collateralPool.getUserUnallocatedBalance.call(accounts[1]);
const tradingBalanceAcctFour = await collateralPool.getUserUnallocatedBalance.call(accounts[3]);
const tradingBalanceAcctOne =
await collateralPool.getUserUnallocatedBalance.call(collateralToken.address, accounts[0]);
const tradingBalanceAcctTwo =
await collateralPool.getUserUnallocatedBalance.call(collateralToken.address, accounts[1]);
const tradingBalanceAcctFour =
await collateralPool.getUserUnallocatedBalance.call(collateralToken.address, accounts[3]);

assert.equal(tradingBalanceAcctOne, amountToDeposit, "Balance doesn't equal tokens deposited");
assert.equal(tradingBalanceAcctTwo, amountToDeposit, "Balance doesn't equal tokens deposited");
assert.equal(tradingBalanceAcctFour, fourBalance, "4 Balance doesn't equal tokens deposited");
Expand Down Expand Up @@ -161,13 +165,13 @@ contract('MarketCollateralPool.Accounting', function(accounts) {
await collateralToken.approve(collateralPool.address, amountToDeposit, { from: accounts[1] });

// move tokens to the collateralPool
await collateralPool.depositTokensForTrading(amountToDeposit, { from: accounts[0] });
await collateralPool.depositTokensForTrading(amountToDeposit, { from: accounts[1] });
await collateralPool.depositTokensForTrading(collateralToken.address, amountToDeposit, { from: accounts[0] });
await collateralPool.depositTokensForTrading(collateralToken.address, amountToDeposit, { from: accounts[1] });

makerAccountBalanceBeforeTrade = await collateralPool.getUserUnallocatedBalance.call(
makerAccountBalanceBeforeTrade = await collateralPool.getUserUnallocatedBalance.call(collateralToken.address,
accounts[0]
);
takerAccountBalanceBeforeTrade = await collateralPool.getUserUnallocatedBalance.call(
takerAccountBalanceBeforeTrade = await collateralPool.getUserUnallocatedBalance.call(collateralToken.address,
accounts[1]
);

Expand All @@ -185,18 +189,18 @@ contract('MarketCollateralPool.Accounting', function(accounts) {
{ from: accountTaker }
);

var makerNetPos = await collateralPool.getUserNetPosition.call(accountMaker);
var takerNetPos = await collateralPool.getUserNetPosition.call(accountTaker);
var makerNetPos = await collateralPool.getUserNetPosition.call(marketContract.address, accountMaker);
var takerNetPos = await collateralPool.getUserNetPosition.call(marketContract.address, accountTaker);
assert.equal(makerNetPos.toNumber(), 1, 'Maker should be long 1');
assert.equal(takerNetPos.toNumber(), -1, 'Taker should be short 1');

var makerPosCount = await collateralPool.getUserPositionCount.call(accountMaker);
var takerPosCount = await collateralPool.getUserPositionCount.call(accountTaker);
var makerPosCount = await collateralPool.getUserPositionCount.call(marketContract.address, accountMaker);
var takerPosCount = await collateralPool.getUserPositionCount.call(marketContract.address, accountTaker);
assert.equal(makerPosCount.toNumber(), 1, 'Maker should have one position struct');
assert.equal(takerPosCount.toNumber(), 1, 'Taker should have one position struct');

var makerPos = await collateralPool.getUserPosition.call(accountMaker, 0);
var takerPos = await collateralPool.getUserPosition.call(accountTaker, 0);
var makerPos = await collateralPool.getUserPosition.call(marketContract.address, accountMaker, 0);
var takerPos = await collateralPool.getUserPosition.call(marketContract.address, accountTaker, 0);

assert.equal(
makerPos[0].toNumber(),
Expand Down Expand Up @@ -227,21 +231,21 @@ contract('MarketCollateralPool.Accounting', function(accounts) {
{ from: accountTaker }
);

makerNetPos = await collateralPool.getUserNetPosition.call(accountMaker);
takerNetPos = await collateralPool.getUserNetPosition.call(accountTaker);
makerNetPos = await collateralPool.getUserNetPosition.call(marketContract.address, accountMaker);
takerNetPos = await collateralPool.getUserNetPosition.call(marketContract.address, accountTaker);
assert.equal(makerNetPos.toNumber(), 3, 'Maker should be long 3');
assert.equal(takerNetPos.toNumber(), -3, 'Taker should be short 3');

makerPosCount = await collateralPool.getUserPositionCount.call(accountMaker);
takerPosCount = await collateralPool.getUserPositionCount.call(accountTaker);
makerPosCount = await collateralPool.getUserPositionCount.call(marketContract.address, accountMaker);
takerPosCount = await collateralPool.getUserPositionCount.call(marketContract.address, accountTaker);
assert.equal(makerPosCount.toNumber(), 2, 'Maker should have 2 position structs');
assert.equal(takerPosCount.toNumber(), 2, 'Taker should have 2 position structs');

var makerLastPosition = await collateralPool.getUserPosition.call(accountMaker, 1);
var makerLastPosition = await collateralPool.getUserPosition.call(marketContract.address, accountMaker, 1);
assert.equal(makerLastPosition[0].toNumber(), secondEntryOrderPrice, 'Maker should be long 2 from secondEntryOrderPrice');
assert.equal(makerLastPosition[1].toNumber(), qtyToFill, 'Maker should be long 2 from secondEntryOrderPrice');

var takerLastPosition = await collateralPool.getUserPosition.call(accountTaker, 1);
var takerLastPosition = await collateralPool.getUserPosition.call(marketContract.address, accountTaker, 1);
assert.equal(takerLastPosition[0].toNumber(), secondEntryOrderPrice, 'Taker should be short 2 from secondEntryOrderPrice');
assert.equal(takerLastPosition[1].toNumber(), qtyToFill * -1, 'Taker should be short 2 from secondEntryOrderPrice');

Expand Down Expand Up @@ -270,11 +274,11 @@ contract('MarketCollateralPool.Accounting', function(accounts) {

// All accounting is done LIFO, so we should be able to check the new positions of maker and taker and see the
// reduction.
makerLastPosition = await collateralPool.getUserPosition.call(accountMaker, 1);
makerLastPosition = await collateralPool.getUserPosition.call(marketContract.address, accountMaker, 1);
assert.equal(makerLastPosition[0].toNumber(), secondEntryOrderPrice, 'Maker should be long 1 from secondEntryOrderPrice');
assert.equal(makerLastPosition[1].toNumber(), 1, 'Maker should be long 1 from secondEntryOrderPrice');

var takerLastPosition = await collateralPool.getUserPosition.call(accountTaker, 1);
var takerLastPosition = await collateralPool.getUserPosition.call(marketContract.address, accountTaker, 1);
assert.equal(takerLastPosition[0].toNumber(), secondEntryOrderPrice, 'Taker should be short 1 from secondEntryOrderPrice');
assert.equal(takerLastPosition[1].toNumber(), -1, 'Taker should be short 1 from secondEntryOrderPrice');

Expand All @@ -291,16 +295,16 @@ contract('MarketCollateralPool.Accounting', function(accounts) {
{ from: accountTaker }
);

makerPosCount = await collateralPool.getUserPositionCount.call(accountMaker);
takerPosCount = await collateralPool.getUserPositionCount.call(accountTaker);
makerPosCount = await collateralPool.getUserPositionCount.call(marketContract.address, accountMaker);
takerPosCount = await collateralPool.getUserPositionCount.call(marketContract.address, accountTaker);
assert.equal(makerPosCount.toNumber(), 1, 'Maker should have 1 position struct');
assert.equal(takerPosCount.toNumber(), 1, 'Taker should have 1 position struct');

makerLastPosition = await collateralPool.getUserPosition.call(accountMaker, 0);
makerLastPosition = await collateralPool.getUserPosition.call(marketContract.address, accountMaker, 0);
assert.equal(makerLastPosition[0].toNumber(), entryOrderPrice, 'Maker should be long 1 from entryOrderPrice');
assert.equal(makerLastPosition[1].toNumber(), 1, 'Maker should be long 1 from entryOrderPrice');

var takerLastPosition = await collateralPool.getUserPosition.call(accountTaker, 0);
var takerLastPosition = await collateralPool.getUserPosition.call(marketContract.address, accountTaker, 0);
assert.equal(takerLastPosition[0].toNumber(), entryOrderPrice, 'Taker should be short 1 from entryOrderPrice');
assert.equal(takerLastPosition[1].toNumber(), -1, 'Taker should be short 1 from entryOrderPrice');
});
Expand Down

0 comments on commit 81e05ad

Please sign in to comment.