Migrate math tests to ethers.js v6 (#4769)
Co-authored-by: Ernesto García <ernestognw@gmail.com>
This commit is contained in:
@ -2,10 +2,20 @@ function Enum(...options) {
|
||||
return Object.fromEntries(options.map((key, i) => [key, web3.utils.toBN(i)]));
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
Enum,
|
||||
ProposalState: Enum('Pending', 'Active', 'Canceled', 'Defeated', 'Succeeded', 'Queued', 'Expired', 'Executed'),
|
||||
VoteType: Enum('Against', 'For', 'Abstain'),
|
||||
Rounding: Enum('Floor', 'Ceil', 'Trunc', 'Expand'),
|
||||
OperationState: Enum('Unset', 'Waiting', 'Ready', 'Done'),
|
||||
};
|
||||
function EnumBigInt(...options) {
|
||||
return Object.fromEntries(options.map((key, i) => [key, BigInt(i)]));
|
||||
}
|
||||
|
||||
// TODO: remove web3, simplify code
|
||||
function createExport(Enum) {
|
||||
return {
|
||||
Enum,
|
||||
ProposalState: Enum('Pending', 'Active', 'Canceled', 'Defeated', 'Succeeded', 'Queued', 'Expired', 'Executed'),
|
||||
VoteType: Enum('Against', 'For', 'Abstain'),
|
||||
Rounding: Enum('Floor', 'Ceil', 'Trunc', 'Expand'),
|
||||
OperationState: Enum('Unset', 'Waiting', 'Ready', 'Done'),
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = createExport(Enum);
|
||||
module.exports.bigint = createExport(EnumBigInt);
|
||||
|
||||
@ -1,16 +1,10 @@
|
||||
// Map values in an object
|
||||
const mapValues = (obj, fn) => Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, fn(v)]));
|
||||
|
||||
// Array of number or bigint
|
||||
const max = (...values) => values.slice(1).reduce((x, y) => (x > y ? x : y), values[0]);
|
||||
const min = (...values) => values.slice(1).reduce((x, y) => (x < y ? x : y), values[0]);
|
||||
|
||||
// Cartesian product of a list of arrays
|
||||
const product = (...arrays) => arrays.reduce((a, b) => a.flatMap(ai => b.map(bi => [...ai, bi])), [[]]);
|
||||
|
||||
module.exports = {
|
||||
mapValues,
|
||||
max,
|
||||
min,
|
||||
product,
|
||||
};
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
// Array of number or bigint
|
||||
const max = (...values) => values.slice(1).reduce((x, y) => (x > y ? x : y), values.at(0));
|
||||
const min = (...values) => values.slice(1).reduce((x, y) => (x < y ? x : y), values.at(0));
|
||||
const sum = (...values) => values.slice(1).reduce((x, y) => x + y, values.at(0));
|
||||
|
||||
module.exports = {
|
||||
// sum of integer / bignumber
|
||||
sum: (...args) => args.reduce((acc, n) => acc + n, 0),
|
||||
bigintSum: (...args) => args.reduce((acc, n) => acc + n, 0n),
|
||||
BNsum: (...args) => args.reduce((acc, n) => acc.add(n), web3.utils.toBN(0)),
|
||||
// min of integer / bignumber
|
||||
min: (...args) => args.slice(1).reduce((x, y) => (x < y ? x : y), args[0]),
|
||||
BNmin: (...args) => args.slice(1).reduce((x, y) => (x.lt(y) ? x : y), args[0]),
|
||||
// max of integer / bignumber
|
||||
max: (...args) => args.slice(1).reduce((x, y) => (x > y ? x : y), args[0]),
|
||||
BNmax: (...args) => args.slice(1).reduce((x, y) => (x.gt(y) ? x : y), args[0]),
|
||||
// re-export min, max & sum of integer / bignumber
|
||||
min,
|
||||
max,
|
||||
sum,
|
||||
// deprecated: BN version of sum
|
||||
BNsum: (...args) => args.slice(1).reduce((x, y) => x.add(y), args.at(0)),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user