123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- const { constants, BN } = require('@openzeppelin/test-helpers');
- const { expect } = require('chai');
- const StorageSlotMock = artifacts.require('StorageSlotMock');
- const slot = web3.utils.keccak256('some.storage.slot');
- const otherSlot = web3.utils.keccak256('some.other.storage.slot');
- contract('StorageSlot', function (accounts) {
- beforeEach(async function () {
- this.store = await StorageSlotMock.new();
- });
- describe('boolean storage slot', function () {
- beforeEach(async function () {
- this.value = true;
- });
- it('set', async function () {
- await this.store.setBoolean(slot, this.value);
- });
- describe('get', function () {
- beforeEach(async function () {
- await this.store.setBoolean(slot, this.value);
- });
- it('from right slot', async function () {
- expect(await this.store.getBoolean(slot)).to.be.equal(this.value);
- });
- it('from other slot', async function () {
- expect(await this.store.getBoolean(otherSlot)).to.be.equal(false);
- });
- });
- });
- describe('address storage slot', function () {
- beforeEach(async function () {
- this.value = accounts[1];
- });
- it('set', async function () {
- await this.store.setAddress(slot, this.value);
- });
- describe('get', function () {
- beforeEach(async function () {
- await this.store.setAddress(slot, this.value);
- });
- it('from right slot', async function () {
- expect(await this.store.getAddress(slot)).to.be.equal(this.value);
- });
- it('from other slot', async function () {
- expect(await this.store.getAddress(otherSlot)).to.be.equal(constants.ZERO_ADDRESS);
- });
- });
- });
- describe('bytes32 storage slot', function () {
- beforeEach(async function () {
- this.value = web3.utils.keccak256('some byte32 value');
- });
- it('set', async function () {
- await this.store.setBytes32(slot, this.value);
- });
- describe('get', function () {
- beforeEach(async function () {
- await this.store.setBytes32(slot, this.value);
- });
- it('from right slot', async function () {
- expect(await this.store.getBytes32(slot)).to.be.equal(this.value);
- });
- it('from other slot', async function () {
- expect(await this.store.getBytes32(otherSlot)).to.be.equal(constants.ZERO_BYTES32);
- });
- });
- });
- describe('uint256 storage slot', function () {
- beforeEach(async function () {
- this.value = new BN(1742);
- });
- it('set', async function () {
- await this.store.setUint256(slot, this.value);
- });
- describe('get', function () {
- beforeEach(async function () {
- await this.store.setUint256(slot, this.value);
- });
- it('from right slot', async function () {
- expect(await this.store.getUint256(slot)).to.be.bignumber.equal(this.value);
- });
- it('from other slot', async function () {
- expect(await this.store.getUint256(otherSlot)).to.be.bignumber.equal('0');
- });
- });
- });
- });
|