EnumerableMap.test.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. const { BN, constants } = require('@openzeppelin/test-helpers');
  2. const AddressToUintMapMock = artifacts.require('AddressToUintMapMock');
  3. const UintToAddressMapMock = artifacts.require('UintToAddressMapMock');
  4. const Bytes32ToBytes32MapMock = artifacts.require('Bytes32ToBytes32MapMock');
  5. const UintToUintMapMock = artifacts.require('UintToUintMapMock');
  6. const Bytes32ToUintMapMock = artifacts.require('Bytes32ToUintMapMock');
  7. const { shouldBehaveLikeMap } = require('./EnumerableMap.behavior');
  8. contract('EnumerableMap', function (accounts) {
  9. const [ accountA, accountB, accountC ] = accounts;
  10. const keyA = new BN('7891');
  11. const keyB = new BN('451');
  12. const keyC = new BN('9592328');
  13. const bytesA = '0xdeadbeef'.padEnd(66, '0');
  14. const bytesB = '0x0123456789'.padEnd(66, '0');
  15. const bytesC = '0x42424242'.padEnd(66, '0');
  16. // AddressToUintMap
  17. describe('AddressToUintMap', function () {
  18. beforeEach(async function () {
  19. this.map = await AddressToUintMapMock.new();
  20. });
  21. shouldBehaveLikeMap(
  22. [ accountA, accountB, accountC ],
  23. [ keyA, keyB, keyC ],
  24. new BN('0'),
  25. );
  26. });
  27. // UintToAddressMap
  28. describe('UintToAddressMap', function () {
  29. beforeEach(async function () {
  30. this.map = await UintToAddressMapMock.new();
  31. });
  32. shouldBehaveLikeMap(
  33. [ keyA, keyB, keyC ],
  34. [ accountA, accountB, accountC ],
  35. constants.ZERO_ADDRESS,
  36. );
  37. });
  38. // Bytes32ToBytes32Map
  39. describe('Bytes32ToBytes32Map', function () {
  40. beforeEach(async function () {
  41. this.map = await Bytes32ToBytes32MapMock.new();
  42. });
  43. shouldBehaveLikeMap(
  44. [ keyA, keyB, keyC ].map(k => '0x' + k.toString(16).padEnd(64, '0')),
  45. [ bytesA, bytesB, bytesC ],
  46. constants.ZERO_BYTES32,
  47. );
  48. });
  49. // UintToUintMap
  50. describe('UintToUintMap', function () {
  51. beforeEach(async function () {
  52. this.map = await UintToUintMapMock.new();
  53. });
  54. shouldBehaveLikeMap(
  55. [ keyA, keyB, keyC ],
  56. [ keyA, keyB, keyC ].map(k => k.add(new BN('1332'))),
  57. new BN('0'),
  58. );
  59. });
  60. // Bytes32ToUintMap
  61. describe('Bytes32ToUintMap', function () {
  62. beforeEach(async function () {
  63. this.map = await Bytes32ToUintMapMock.new();
  64. });
  65. shouldBehaveLikeMap(
  66. [ bytesA, bytesB, bytesC ],
  67. [ keyA, keyB, keyC ],
  68. new BN('0'),
  69. );
  70. });
  71. });