From f9ea2494ead4c1865d1975051c100a69950d4a2f Mon Sep 17 00:00:00 2001 From: kafeikui Date: Fri, 10 Jun 2022 23:02:24 +0800 Subject: [PATCH] add `getNextInitializedTick` test in TickManager --- package.json | 2 +- test/TestSubgraph.test.ts | 2 +- test/TickManager.test.ts | 104 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 test/TickManager.test.ts diff --git a/package.json b/package.json index 463e233..8fa5513 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bella-defintech/uniswap-v3-simulator", - "version": "0.1.4", + "version": "0.1.5", "description": "the 'Tuner', a Uniswap V3 Simulator", "keywords": [ "uniswap", diff --git a/test/TestSubgraph.test.ts b/test/TestSubgraph.test.ts index 9f47b69..8bffff5 100644 --- a/test/TestSubgraph.test.ts +++ b/test/TestSubgraph.test.ts @@ -6,7 +6,7 @@ chai.use(chaiAsPromised); describe("Test Uniswap v3 Subgraph", function () { const APIURL = "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3"; - it.only("can download events", async function () { + it("can download events", async function () { const query = gql` query { pool(id: "0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8") { diff --git a/test/TickManager.test.ts b/test/TickManager.test.ts new file mode 100644 index 0000000..0104a6d --- /dev/null +++ b/test/TickManager.test.ts @@ -0,0 +1,104 @@ +import { Tick } from "../src/model/Tick"; +import { TickMath } from "../src/util/TickMath"; +import { expect } from "./shared/expect"; +import { TickManager } from "../src/manager/TickManager"; + +describe("TickManager", () => { + describe("#getNextInitializedTick", () => { + let highTick: Tick; + let lowTick: Tick; + let midTick: Tick; + let ticks: Tick[]; + let tickManager: TickManager = new TickManager(); + + beforeEach(() => { + lowTick = new Tick(TickMath.MIN_TICK + 1); + midTick = new Tick(0); + highTick = new Tick(TickMath.MAX_TICK - 1); + + ticks = [lowTick, midTick, highTick]; + + for (let tick of ticks) { + tickManager.set(tick); + } + }); + + it("lte = true", () => { + expect(tickManager.getNextInitializedTick(-257, 1, true)).to.eql({ + nextTick: -512, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(-256, 1, true)).to.eql({ + nextTick: -256, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(-1, 1, true)).to.eql({ + nextTick: -256, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(0, 1, true)).to.eql({ + nextTick: 0, + initialized: true, + }); + expect(tickManager.getNextInitializedTick(1, 1, true)).to.eql({ + nextTick: 0, + initialized: true, + }); + expect(tickManager.getNextInitializedTick(255, 1, true)).to.eql({ + nextTick: 0, + initialized: true, + }); + expect(tickManager.getNextInitializedTick(256, 1, true)).to.eql({ + nextTick: 256, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(257, 1, true)).to.eql({ + nextTick: 256, + initialized: false, + }); + }); + + it("lte = false", () => { + expect(tickManager.getNextInitializedTick(-215041, 60, false)).to.eql({ + nextTick: -199740, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(-257, 1, false)).to.eql({ + nextTick: -1, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(-256, 1, false)).to.eql({ + nextTick: -1, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(-2, 1, false)).to.eql({ + nextTick: -1, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(-1, 1, false)).to.eql({ + nextTick: 0, + initialized: true, + }); + expect(tickManager.getNextInitializedTick(0, 1, false)).to.eql({ + nextTick: 255, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(1, 1, false)).to.eql({ + nextTick: 255, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(254, 1, false)).to.eql({ + nextTick: 255, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(255, 1, false)).to.eql({ + nextTick: 511, + initialized: false, + }); + expect(tickManager.getNextInitializedTick(256, 1, false)).to.eql({ + nextTick: 511, + initialized: false, + }); + }); + }); +});