Add values() functions to EnumerableSets (#2768)

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
This commit is contained in:
Hadrien Croubois
2021-07-16 17:06:47 +02:00
committed by GitHub
parent 87826f807a
commit f88e555234
4 changed files with 92 additions and 8 deletions

View File

@ -3,18 +3,27 @@ const { expect } = require('chai');
function shouldBehaveLikeSet (valueA, valueB, valueC) {
async function expectMembersMatch (set, values) {
await Promise.all(values.map(async value =>
expect(await set.contains(value)).to.equal(true),
));
const contains = await Promise.all(values.map(value => set.contains(value)));
expect(contains.every(Boolean)).to.be.equal(true);
expect(await set.length()).to.bignumber.equal(values.length.toString());
const length = await set.length();
expect(length).to.bignumber.equal(values.length.toString());
// To compare values we convert to strings to workaround Chai
// limitations when dealing with nested arrays (required for BNs)
expect(await Promise.all([...Array(values.length).keys()].map(async (index) => {
const entry = await set.at(index);
return entry.toString();
}))).to.have.same.members(values.map(v => v.toString()));
const indexedValues = await Promise.all(Array(values.length).fill().map((_, index) => set.at(index)));
expect(
indexedValues.map(v => v.toString()),
).to.have.same.members(
values.map(v => v.toString()),
);
const returnedValues = await set.values();
expect(
returnedValues.map(v => v.toString()),
).to.have.same.members(
values.map(v => v.toString()),
);
}
it('starts empty', async function () {