aboutsummaryrefslogtreecommitdiffstats
path: root/packages/sol-tracing-utils/test/trace_test.ts
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2019-01-12 00:12:55 +0800
committerFabio Berger <me@fabioberger.com>2019-01-12 00:12:55 +0800
commit96ff5eef644b8c4d3f8fc4ec53270991fb51f121 (patch)
tree530f43b03d2b3aa09b5f6552d4285df92d45fed0 /packages/sol-tracing-utils/test/trace_test.ts
parent7f5a2c972bb86df77c423fb7029e9a629ecc1ede (diff)
parent2cf57a48dd2857dd5cf2f31f4c60dd47ae4d34a5 (diff)
downloaddexon-sol-tools-96ff5eef644b8c4d3f8fc4ec53270991fb51f121.tar
dexon-sol-tools-96ff5eef644b8c4d3f8fc4ec53270991fb51f121.tar.gz
dexon-sol-tools-96ff5eef644b8c4d3f8fc4ec53270991fb51f121.tar.bz2
dexon-sol-tools-96ff5eef644b8c4d3f8fc4ec53270991fb51f121.tar.lz
dexon-sol-tools-96ff5eef644b8c4d3f8fc4ec53270991fb51f121.tar.xz
dexon-sol-tools-96ff5eef644b8c4d3f8fc4ec53270991fb51f121.tar.zst
dexon-sol-tools-96ff5eef644b8c4d3f8fc4ec53270991fb51f121.zip
merge development
Diffstat (limited to 'packages/sol-tracing-utils/test/trace_test.ts')
-rw-r--r--packages/sol-tracing-utils/test/trace_test.ts55
1 files changed, 55 insertions, 0 deletions
diff --git a/packages/sol-tracing-utils/test/trace_test.ts b/packages/sol-tracing-utils/test/trace_test.ts
new file mode 100644
index 000000000..7a034362c
--- /dev/null
+++ b/packages/sol-tracing-utils/test/trace_test.ts
@@ -0,0 +1,55 @@
+import * as chai from 'chai';
+import { OpCode, StructLog } from 'ethereum-types';
+import * as _ from 'lodash';
+import 'mocha';
+
+import { getTracesByContractAddress } from '../src/trace';
+
+const expect = chai.expect;
+
+const DEFAULT_STRUCT_LOG: StructLog = {
+ depth: 0,
+ error: '',
+ gas: 0,
+ gasCost: 0,
+ memory: [],
+ op: OpCode.Invalid,
+ pc: 0,
+ stack: [],
+ storage: {},
+};
+
+function addDefaultStructLogFields(compactStructLog: Partial<StructLog> & { op: OpCode; depth: number }): StructLog {
+ return { ...DEFAULT_STRUCT_LOG, ...compactStructLog };
+}
+
+describe('Trace', () => {
+ describe('#getTracesByContractAddress', () => {
+ it('correctly splits trace by contract address', () => {
+ const delegateCallAddress = '0x0000000000000000000000000000000000000002';
+ const trace = [
+ {
+ op: OpCode.DelegateCall,
+ stack: [delegateCallAddress, '0x'],
+ depth: 0,
+ },
+ {
+ op: OpCode.Return,
+ depth: 1,
+ },
+ {
+ op: OpCode.Return,
+ depth: 0,
+ },
+ ];
+ const fullTrace = _.map(trace, compactStructLog => addDefaultStructLogFields(compactStructLog));
+ const startAddress = '0x0000000000000000000000000000000000000001';
+ const traceByContractAddress = getTracesByContractAddress(fullTrace, startAddress);
+ const expectedTraceByContractAddress = {
+ [startAddress]: [fullTrace[0], fullTrace[2]],
+ [delegateCallAddress]: [fullTrace[1]],
+ };
+ expect(traceByContractAddress).to.be.deep.equal(expectedTraceByContractAddress);
+ });
+ });
+});