mirror of openzeppelin-contracts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
openzeppelin-contracts/test/utils/structs/EnumerableMap/helpers.js

31 lines
1.0 KiB

const zip = require('lodash.zip');
const toStringArray = (array) => array.map((i) => i.toString());
async function expectMembersMatch (map, keys, values) {
const stringKeys = toStringArray(keys);
const stringValues = toStringArray(values);
expect(keys.length).to.equal(values.length);
await Promise.all(keys.map(async (key) => expect(await map.contains(key)).to.equal(true)));
expect(await map.length()).to.bignumber.equal(keys.length.toString());
expect(toStringArray(await Promise.all(keys.map((key) => map.get(key))))).to.have.same.members(stringValues);
// to compare key-value pairs, we zip keys and values
// we also stringify pairs because this helper is used for multiple types of maps
expect(
await Promise.all(
[...Array(keys.length).keys()].map(async (index) => {
const { key, value } = await map.at(index);
return [key.toString(), value.toString()];
}),
),
).to.have.same.deep.members(zip(stringKeys, stringValues));
}
module.exports = {
expectMembersMatch,
};