add tests

This commit is contained in:
Otto Cheung 2022-06-13 10:31:20 -07:00
parent 8f387e52c2
commit efa9daa623
2 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,64 @@
import * as assert from "assert";
import { PoolUtil, SwapDirection, TokenType } from "../../../../src";
import { testWhirlpoolData } from "../../../utils/testDataTypes";
import { Keypair } from "@solana/web3.js";
describe("PoolUtils tests", () => {
describe("getTokenType", () => {
it("Token is tokenA", async () => {
const whirlpoolData = testWhirlpoolData;
const result = PoolUtil.getTokenType(whirlpoolData, whirlpoolData.tokenMintA);
assert.equal(result, TokenType.TokenA);
});
it("Token is tokenB", async () => {
const whirlpoolData = testWhirlpoolData;
const result = PoolUtil.getTokenType(whirlpoolData, whirlpoolData.tokenMintB);
assert.equal(result, TokenType.TokenB);
});
it("Token is some other token", async () => {
const whirlpoolData = testWhirlpoolData;
const result = PoolUtil.getTokenType(whirlpoolData, Keypair.generate().publicKey);
assert.ok(result === undefined);
});
});
describe("getSwapDirection", () => {
it("SwapToken is tokenA and is an input", async () => {
const whirlpoolData = testWhirlpoolData;
const result = PoolUtil.getSwapDirection(whirlpoolData, whirlpoolData.tokenMintA, true);
assert.equal(result, SwapDirection.AtoB);
});
it("SwapToken is tokenB and is an input", async () => {
const whirlpoolData = testWhirlpoolData;
const result = PoolUtil.getSwapDirection(whirlpoolData, whirlpoolData.tokenMintB, true);
assert.equal(result, SwapDirection.BtoA);
});
it("SwapToken is tokenA and is not an input", async () => {
const whirlpoolData = testWhirlpoolData;
const result = PoolUtil.getSwapDirection(whirlpoolData, whirlpoolData.tokenMintA, false);
assert.equal(result, SwapDirection.BtoA);
});
it("SwapToken is tokenB and is not an input", async () => {
const whirlpoolData = testWhirlpoolData;
const result = PoolUtil.getSwapDirection(whirlpoolData, whirlpoolData.tokenMintB, false);
assert.equal(result, SwapDirection.AtoB);
});
it("SwapToken is a random mint and is an input", async () => {
const whirlpoolData = testWhirlpoolData;
const result = PoolUtil.getSwapDirection(whirlpoolData, Keypair.generate().publicKey, true);
assert.equal(result, undefined);
});
it("SwapToken is a random mint and is not an input", async () => {
const whirlpoolData = testWhirlpoolData;
const result = PoolUtil.getSwapDirection(whirlpoolData, Keypair.generate().publicKey, false);
assert.equal(result, undefined);
});
});
});

View File

@ -0,0 +1,24 @@
import { Keypair } from "@solana/web3.js";
import { BN } from "bn.js";
import { PriceMath } from "../../src";
export const testWhirlpoolData = {
whirlpoolsConfig: Keypair.generate().publicKey,
whirlpoolBump: [],
feeRate: 300,
protocolFeeRate: 1800,
liquidity: new BN("32523523532"),
sqrtPrice: new BN("32523523532"),
tickCurrentIndex: PriceMath.sqrtPriceX64ToTickIndex(new BN("32523523532")),
protocolFeeOwedA: new BN("2314532532"),
protocolFeeOwedB: new BN("2314532532"),
tokenMintA: Keypair.generate().publicKey,
tokenVaultA: Keypair.generate().publicKey,
feeGrowthGlobalA: new BN("32532523523523523"),
tokenMintB: Keypair.generate().publicKey,
tokenVaultB: Keypair.generate().publicKey,
feeGrowthGlobalB: new BN("32532523523523523"),
rewardLastUpdatedTimestamp: new BN("3253252312412523523523"),
rewardInfos: [],
tickSpacing: 64,
};