12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- const EnumerableSet = artifacts.require('$EnumerableSet');
- const { mapValues } = require('../../helpers/map-values');
- const { shouldBehaveLikeSet } = require('./EnumerableSet.behavior');
- const getMethods = ms => {
- return mapValues(
- ms,
- m =>
- (self, ...args) =>
- self.methods[m](0, ...args),
- );
- };
- // Get the name of the library. In the transpiled code it will be EnumerableSetUpgradeable.
- const library = EnumerableSet._json.contractName.replace(/^\$/, '');
- contract('EnumerableSet', function (accounts) {
- beforeEach(async function () {
- this.set = await EnumerableSet.new();
- });
- // Bytes32Set
- describe('EnumerableBytes32Set', function () {
- shouldBehaveLikeSet(
- ['0xdeadbeef', '0x0123456789', '0x42424242'].map(e => e.padEnd(66, '0')),
- getMethods({
- add: '$add(uint256,bytes32)',
- remove: '$remove(uint256,bytes32)',
- contains: '$contains(uint256,bytes32)',
- length: `$length_${library}_Bytes32Set(uint256)`,
- at: `$at_${library}_Bytes32Set(uint256,uint256)`,
- values: `$values_${library}_Bytes32Set(uint256)`,
- }),
- {
- addReturn: `return$add_${library}_Bytes32Set_bytes32`,
- removeReturn: `return$remove_${library}_Bytes32Set_bytes32`,
- },
- );
- });
- // AddressSet
- describe('EnumerableAddressSet', function () {
- shouldBehaveLikeSet(
- accounts,
- getMethods({
- add: '$add(uint256,address)',
- remove: '$remove(uint256,address)',
- contains: '$contains(uint256,address)',
- length: `$length_${library}_AddressSet(uint256)`,
- at: `$at_${library}_AddressSet(uint256,uint256)`,
- values: `$values_${library}_AddressSet(uint256)`,
- }),
- {
- addReturn: `return$add_${library}_AddressSet_address`,
- removeReturn: `return$remove_${library}_AddressSet_address`,
- },
- );
- });
- // UintSet
- describe('EnumerableUintSet', function () {
- shouldBehaveLikeSet(
- [1234, 5678, 9101112].map(e => web3.utils.toBN(e)),
- getMethods({
- add: '$add(uint256,uint256)',
- remove: '$remove(uint256,uint256)',
- contains: '$contains(uint256,uint256)',
- length: `$length_${library}_UintSet(uint256)`,
- at: `$at_${library}_UintSet(uint256,uint256)`,
- values: `$values_${library}_UintSet(uint256)`,
- }),
- {
- addReturn: `return$add_${library}_UintSet_uint256`,
- removeReturn: `return$remove_${library}_UintSet_uint256`,
- },
- );
- });
- });
|