From 13299158d1e22d1af1cd36434fc403a74743ecb1 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Sun, 4 Mar 2018 19:05:26 -0800 Subject: Add sol-cover implementation --- packages/web3-wrapper/src/index.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'packages/web3-wrapper/src') diff --git a/packages/web3-wrapper/src/index.ts b/packages/web3-wrapper/src/index.ts index e14eb2914..02d5e4f7b 100644 --- a/packages/web3-wrapper/src/index.ts +++ b/packages/web3-wrapper/src/index.ts @@ -4,6 +4,8 @@ import * as _ from 'lodash'; import * as Web3 from 'web3'; export class Web3Wrapper { + // This is here purely to reliably distinguish it from other objects in runtime (like BigNumber.isBigNumber) + public isZeroExWeb3Wrapper = true; private _web3: Web3; private _defaults: Partial; private _jsonRpcRequestId: number; @@ -92,6 +94,20 @@ export class Web3Wrapper { const normalizedAddresses = _.map(addresses, address => address.toLowerCase()); return normalizedAddresses; } + public async takeSnapshotAsync(): Promise { + const snapshotId = Number(await this._sendRawPayloadAsync({ method: 'evm_snapshot', params: [] })); + return snapshotId; + } + public async revertSnapshotAsync(snapshotId: number): Promise { + const didRevert = await this._sendRawPayloadAsync({ method: 'evm_revert', params: [snapshotId] }); + return didRevert; + } + public async mineBlockAsync(): Promise { + await this._sendRawPayloadAsync({ method: 'evm_mine', params: [] }); + } + public async increaseTimeAsync(timeDelta: number): Promise { + await this._sendRawPayloadAsync({ method: 'evm_increaseTime', params: [timeDelta] }); + } public async getLogsAsync(filter: Web3.FilterObject): Promise { let fromBlock = filter.fromBlock; if (_.isNumber(fromBlock)) { @@ -132,7 +148,7 @@ export class Web3Wrapper { const txHash = await promisify(this._web3.eth.sendTransaction)(txData); return txHash; } - private async _sendRawPayloadAsync(payload: Web3.JSONRPCRequestPayload): Promise { + private async _sendRawPayloadAsync(payload: Partial): Promise { const sendAsync = this._web3.currentProvider.sendAsync.bind(this._web3.currentProvider); const response = await promisify(sendAsync)(payload); const result = response.result; -- cgit v1.2.3