shift-interpreter
Version:
Shift-interpreter is an experimental JavaScript meta-interpreter useful for reverse engineering and analysis. One notable difference from other projects is that shift-interpreter retains state over an entire script but can be fed expressions and statement
46 lines (41 loc) • 886 B
text/typescript
import chai from 'chai';
import spies from 'chai-spies';
import { assertResult, compare } from '../util';
chai.use(spies);
describe('this', () => {
it('should refer to local context', () => {
const context = { global: {}, console };
context.global = context;
assertResult(
compare(`
const c = {
a : function() {return this.b},
b : "Hello"
}
c.a();
`),
);
});
it('should support dynamic context', () => {
const context = { global: {}, console };
context.global = context;
assertResult(
compare(`
const outer = {
inner: {
innerFn() {
return this.b
},
b: "innerValue"
},
outerFn() {
this.extracted = this.inner.innerFn;
return this.extracted();
},
b : "outerValue"
}
outer.outerFn();
`),
);
});
});