Add values() functions to EnumerableSets (#2768)
Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
This commit is contained in:
@ -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 () {
|
||||
|
||||
Reference in New Issue
Block a user