UNPKG

ox

Version:

Ethereum Standard Library

66 lines (52 loc) 1.63 kB
import { bench, describe } from 'vp/test' import * as RpcRequest from './RpcRequest.js' import * as RpcResponse from './RpcResponse.js' const successResponse = { id: 0, jsonrpc: '2.0', result: '0x1a2b3c', } as const const errorResponse = { id: 0, jsonrpc: '2.0', error: { code: -32000, message: 'oops' }, } as const describe('RpcResponse.parse', () => { bench('parse(success)', () => { RpcResponse.parse(successResponse) }) bench('parse(success, raw)', () => { RpcResponse.parse(successResponse, { raw: true }) }) bench('parse(error, raw)', () => { RpcResponse.parse(errorResponse, { raw: true }) }) }) describe('RpcResponse.from', () => { const request = RpcRequest.from({ id: 1, method: 'eth_blockNumber' }) bench('from(complete envelope)', () => { RpcResponse.from(successResponse, { request }) }) bench('from(missing id+jsonrpc)', () => { RpcResponse.from({ result: '0x1' } as never, { request }) }) bench('from(no request, complete)', () => { RpcResponse.from(successResponse) }) }) describe('RpcResponse.parseError', () => { const knownCodes = [ -32000, -32001, -32002, -32003, -32004, -32005, -32006, -32600, -32601, -32602, -32603, -32700, ] const errors = knownCodes.map((code) => ({ code, message: 'm' })) bench('parseError(known code rotating)', () => { for (const error of errors) RpcResponse.parseError(error) }) bench('parseError(unknown code)', () => { RpcResponse.parseError({ code: 9999, message: 'unknown' }) }) bench('parseError(plain Error)', () => { RpcResponse.parseError(new Error('boom')) }) })