mirror of
https://github.com/logos-storage/logos-storage-contracts-eth.git
synced 2026-01-13 02:33:12 +00:00
- refactor Mappings.Mapping to use a ClearableBytes32Set and multiple EnumerableSet.Bytes32Sets instead of implementing that code directly in Mappings.Mapping. - update the api for better readability and reasoning. This should be much cleaner now.
91 lines
2.8 KiB
JavaScript
91 lines
2.8 KiB
JavaScript
const { ethers } = require("hardhat")
|
|
const { expect } = require("chai")
|
|
const { hexlify, randomBytes } = ethers.utils
|
|
const { exampleAddress } = require("./examples")
|
|
|
|
describe("EnumerableSetExtensions", function () {
|
|
let account
|
|
let key
|
|
let value
|
|
let contract
|
|
|
|
describe("ClearableBytes32Set", function () {
|
|
beforeEach(async function () {
|
|
let ClearableBytes32Set = await ethers.getContractFactory(
|
|
"TestClearableBytes32Set"
|
|
)
|
|
contract = await ClearableBytes32Set.deploy()
|
|
;[account] = await ethers.getSigners()
|
|
value = randomBytes(32)
|
|
})
|
|
|
|
it("starts empty", async function () {
|
|
await expect(await contract.values()).to.deep.equal([])
|
|
})
|
|
|
|
it("adds a value", async function () {
|
|
await expect(contract.add(value))
|
|
.to.emit(contract, "OperationResult")
|
|
.withArgs(true)
|
|
await expect(await contract.values()).to.deep.equal([hexlify(value)])
|
|
})
|
|
|
|
it("adds a value that already exists", async function () {
|
|
await contract.add(value)
|
|
await expect(contract.add(value))
|
|
.to.emit(contract, "OperationResult")
|
|
.withArgs(false)
|
|
await expect(await contract.values()).to.deep.equal([hexlify(value)])
|
|
})
|
|
|
|
it("contains a value", async function () {
|
|
let key1 = randomBytes(32)
|
|
let value1 = randomBytes(32)
|
|
await contract.add(value)
|
|
await contract.add(value1)
|
|
await expect(await contract.contains(value)).to.equal(true)
|
|
await expect(await contract.contains(value1)).to.equal(true)
|
|
})
|
|
|
|
it("removes a value", async function () {
|
|
let value1 = randomBytes(32)
|
|
await contract.add(value)
|
|
await contract.add(value1)
|
|
await expect(contract.remove(value))
|
|
.to.emit(contract, "OperationResult")
|
|
.withArgs(true)
|
|
await expect(await contract.values()).to.deep.equal([hexlify(value1)])
|
|
})
|
|
|
|
it("removes a value that doesn't exist", async function () {
|
|
let value1 = randomBytes(32)
|
|
await contract.add(value)
|
|
await contract.add(value1)
|
|
await contract.remove(value)
|
|
await expect(contract.remove(value))
|
|
.to.emit(contract, "OperationResult")
|
|
.withArgs(false)
|
|
await expect(await contract.values()).to.deep.equal([hexlify(value1)])
|
|
})
|
|
|
|
it("clears all values", async function () {
|
|
let value1 = randomBytes(32)
|
|
let value2 = randomBytes(32)
|
|
await contract.add(value)
|
|
await contract.add(value1)
|
|
await contract.add(value2)
|
|
await expect(contract.clear())
|
|
await expect(await contract.values()).to.deep.equal([])
|
|
})
|
|
|
|
it("gets the length of values", async function () {
|
|
let value1 = randomBytes(32)
|
|
let value2 = randomBytes(32)
|
|
await contract.add(value)
|
|
await contract.add(value1)
|
|
await contract.add(value2)
|
|
await expect(await contract.length()).to.equal(3)
|
|
})
|
|
})
|
|
})
|