Add keys() accessor to EnumerableMaps (#3920)

Co-authored-by: Francisco Giordano <frangio.1@gmail.com>
This commit is contained in:
Hadrien Croubois
2023-01-03 22:25:37 +01:00
committed by GitHub
parent 2fc24fc8d4
commit 88754d0b36
5 changed files with 147 additions and 10 deletions

View File

@ -36,6 +36,13 @@ function shouldBehaveLikeMap (
}))).to.have.same.deep.members(
zip(keys.map(k => k.toString()), values.map(v => v.toString())),
);
// This also checks that both arrays have the same length
expect(
(await methods.keys(map)).map(k => k.toString()),
).to.have.same.members(
keys.map(key => key.toString()),
);
}
it('starts empty', async function () {

View File

@ -39,6 +39,7 @@ contract('EnumerableMap', function (accounts) {
length: '$length_EnumerableMap_AddressToUintMap(uint256)',
at: '$at_EnumerableMap_AddressToUintMap(uint256,uint256)',
contains: '$contains(uint256,address)',
keys: '$keys_EnumerableMap_AddressToUintMap(uint256)',
}),
{
setReturn: 'return$set_EnumerableMap_AddressToUintMap_address_uint256',
@ -62,6 +63,7 @@ contract('EnumerableMap', function (accounts) {
length: '$length_EnumerableMap_UintToAddressMap(uint256)',
at: '$at_EnumerableMap_UintToAddressMap(uint256,uint256)',
contains: '$contains_EnumerableMap_UintToAddressMap(uint256,uint256)',
keys: '$keys_EnumerableMap_UintToAddressMap(uint256)',
}),
{
setReturn: 'return$set_EnumerableMap_UintToAddressMap_uint256_address',
@ -85,6 +87,7 @@ contract('EnumerableMap', function (accounts) {
length: '$length_EnumerableMap_Bytes32ToBytes32Map(uint256)',
at: '$at_EnumerableMap_Bytes32ToBytes32Map(uint256,uint256)',
contains: '$contains_EnumerableMap_Bytes32ToBytes32Map(uint256,bytes32)',
keys: '$keys_EnumerableMap_Bytes32ToBytes32Map(uint256)',
}),
{
setReturn: 'return$set_EnumerableMap_Bytes32ToBytes32Map_bytes32_bytes32',
@ -108,6 +111,7 @@ contract('EnumerableMap', function (accounts) {
length: '$length_EnumerableMap_UintToUintMap(uint256)',
at: '$at_EnumerableMap_UintToUintMap(uint256,uint256)',
contains: '$contains_EnumerableMap_UintToUintMap(uint256,uint256)',
keys: '$keys_EnumerableMap_UintToUintMap(uint256)',
}),
{
setReturn: 'return$set_EnumerableMap_UintToUintMap_uint256_uint256',
@ -131,6 +135,7 @@ contract('EnumerableMap', function (accounts) {
length: '$length_EnumerableMap_Bytes32ToUintMap(uint256)',
at: '$at_EnumerableMap_Bytes32ToUintMap(uint256,uint256)',
contains: '$contains_EnumerableMap_Bytes32ToUintMap(uint256,bytes32)',
keys: '$keys_EnumerableMap_Bytes32ToUintMap(uint256)',
}),
{
setReturn: 'return$set_EnumerableMap_Bytes32ToUintMap_bytes32_uint256',