Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions packages/group/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,25 +72,27 @@ export class Group {
* @param member The new member to be added.
*/
public addMember(member: BigNumber) {
if (member === 0n || member === "0") {
const normalizedMember = BigInt(member)

if (normalizedMember === 0n) {
throw new Error("Failed to add member: value cannot be 0")
}

this.leanIMT.insert(BigInt(member))
this.leanIMT.insert(normalizedMember)
}

/**
* Adds new members to the group.
* @param members New members.
*/
public addMembers(members: BigNumber[]) {
for (const member of members) {
if (member === 0n || member === "0") {
throw new Error("Failed to add member: value cannot be 0")
}
const normalizedMembers = members.map(BigInt)

if (normalizedMembers.some((member) => member === 0n)) {
throw new Error("Failed to add member: value cannot be 0")
}

this.leanIMT.insertMany(members.map(BigInt))
this.leanIMT.insertMany(normalizedMembers)
}

/**
Expand Down
11 changes: 7 additions & 4 deletions packages/group/tests/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { Group } from "../src"

const zeroMembers = [0n, "0", "00", "+0", "-0", "0x0", "0o0", "0b0", " 0 ", "", " "] as const

describe("Group", () => {
describe("# Group", () => {
it("Should create a group", () => {
Expand Down Expand Up @@ -42,10 +44,10 @@ describe("Group", () => {
expect(group.size).toBe(1)
})

it("Should not add a member to a group if its value is 0", () => {
it.each(zeroMembers)("Should not add a member to a group if %p represents 0", (member) => {
const group = new Group()

const fun = () => group.addMember(0n)
const fun = () => group.addMember(member)

expect(fun).toThrow("Failed to add member: value cannot be 0")
})
Expand All @@ -60,12 +62,13 @@ describe("Group", () => {
expect(group.size).toBe(2)
})

it("Should not add many members to a group if any value is 0", () => {
it.each(zeroMembers)("Should not add many members to a group if %p represents 0", (member) => {
const group = new Group()

const fun = () => group.addMembers([1n, 0n])
const fun = () => group.addMembers([1n, member, 3n])

expect(fun).toThrow("Failed to add member: value cannot be 0")
expect(group.members).toEqual([])
})
})

Expand Down
Loading