custom-discriminator.ts 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import * as anchor from "@coral-xyz/anchor";
  2. import assert from "assert";
  3. import type { CustomDiscriminator } from "../target/types/custom_discriminator";
  4. describe("custom-discriminator", () => {
  5. anchor.setProvider(anchor.AnchorProvider.env());
  6. const program: anchor.Program<CustomDiscriminator> =
  7. anchor.workspace.customDiscriminator;
  8. describe("Can use custom instruction discriminators", () => {
  9. const testCommon = async (ixName: keyof typeof program["methods"]) => {
  10. const tx = await program.methods[ixName]().transaction();
  11. // Verify discriminator
  12. const ix = program.idl.instructions.find((ix) => ix.name === ixName)!;
  13. assert(ix.discriminator.length < 8);
  14. const data = tx.instructions[0].data;
  15. assert(data.equals(Buffer.from(ix.discriminator)));
  16. // Verify tx runs
  17. await program.provider.sendAndConfirm!(tx);
  18. };
  19. it("Integer", () => testCommon("int"));
  20. it("Array", () => testCommon("array"));
  21. it("Byte string", () => testCommon("byteStr"));
  22. it("Constant", () => testCommon("constant"));
  23. it("Const Fn", () => testCommon("constFn"));
  24. });
  25. });