overflow.spec.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. // SPDX-License-Identifier: Apache-2.0
  2. import expect from 'expect';
  3. import { loadContract } from './setup';
  4. import { BN } from '@coral-xyz/anchor';
  5. describe('Testing math overflow', function () {
  6. this.timeout(500000);
  7. it('overflow', async function () {
  8. let { program } = await loadContract('overflow');
  9. let res = await program.methods.addu32(new BN(1), new BN(3)).view();
  10. expect(res).toEqual(4);
  11. await expect(program.methods.addu32(new BN(2147483648), new BN(2147483648)).view()).rejects.toThrow();
  12. res = await program.methods.subu32(new BN(7), new BN(3)).view();
  13. expect(res).toEqual(4);
  14. await expect(program.methods.subu32(new BN(2147483640), new BN(2147483648)).view()).rejects.toThrow();
  15. res = await program.methods.mulu32(new BN(7), new BN(3)).view();
  16. expect(res).toEqual(21);
  17. await expect(program.methods.mulu32(new BN(2147483640), new BN(2147483648)).view()).rejects.toThrow();
  18. res = await program.methods.powu32(new BN(7), new BN(3)).view();
  19. expect(res).toEqual(343);
  20. await expect(program.methods.powu32(new BN(2147483640), new BN(2147483648)).view()).rejects.toThrow();
  21. });
  22. });