12345678910111213141516171819202122232425262728293031 |
- 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,
- };
|