@saberhq/stableswap-sdk
Version:
Solana SDK for Saber's StableSwap program.
58 lines (53 loc) • 1.71 kB
text/typescript
import type { BigintIsh } from "@saberhq/token-utils";
import { computeD, computeY } from "./curve.js";
const assertBN = (actual: BigintIsh, expected: BigintIsh) => {
expect(actual.toString()).toEqual(expected.toString());
};
describe("Calculator tests", () => {
it("computeD", () => {
assertBN(computeD(BigInt(100), BigInt(0), BigInt(0)), BigInt(0));
assertBN(
computeD(BigInt(100), BigInt(1000000000), BigInt(1000000000)),
BigInt("2000000000"),
);
assertBN(computeD(BigInt(73), BigInt(92), BigInt(81)), BigInt(173));
assertBN(
computeD(BigInt(11503), BigInt(28338), BigInt(78889)),
BigInt(107225),
);
assertBN(computeD(BigInt(8552), BigInt(26), BigInt(69321)), BigInt(66920));
assertBN(computeD(BigInt(496), BigInt(62), BigInt(68567)), BigInt(57447));
assertBN(
computeD(
BigInt("17653203515214796177"),
BigInt("13789683482691983066"),
BigInt("3964443602730479576"),
),
BigInt("17754127085422462641"),
);
});
it("computeY", () => {
assertBN(computeY(BigInt(100), BigInt(100), BigInt(0)), BigInt(0));
assertBN(computeY(BigInt(8), BigInt(94), BigInt(163)), BigInt(69));
assertBN(
computeY(BigInt(2137), BigInt(905777403660), BigInt(830914146046)),
BigInt(490376033),
);
assertBN(
computeY(
BigInt("17095344176474858097"),
BigInt(383),
BigInt("2276818911077272163"),
),
BigInt("2276917873767753112"),
);
assertBN(
computeY(
BigInt("7644937799120520965"),
BigInt("14818904982296505121"),
BigInt("17480022366793075404"),
),
BigInt("2661117384496570284"),
);
});
});