js-slang
Version:
Javascript-based implementations of Source, written in Typescript
82 lines • 2.66 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.mockEnvironment = exports.mockClosure = exports.mockRuntimeContext = exports.mockImportDeclaration = exports.mockContext = void 0;
const createContext_1 = require("../createContext");
const closure_1 = require("../interpreter/closure");
const closure_2 = require("../cse-machine/closure");
const interpreter_1 = require("../interpreter/interpreter");
const types_1 = require("../types");
function mockContext(chapter = types_1.Chapter.SOURCE_1, variant = types_1.Variant.DEFAULT) {
return (0, createContext_1.default)(chapter, variant);
}
exports.mockContext = mockContext;
function mockImportDeclaration() {
const mockImportDecl = {
type: 'ImportDeclaration',
specifiers: [
{
type: 'ImportDefaultSpecifier',
local: {
type: 'Identifier',
name: 'MockName'
}
}
],
source: {
type: 'Literal',
value: 'mock-path',
raw: "'mock-path'"
}
};
return mockImportDecl;
}
exports.mockImportDeclaration = mockImportDeclaration;
function mockRuntimeContext() {
const context = (0, createContext_1.default)();
context.runtime = {
break: false,
debuggerOn: true,
isRunning: true,
environmentTree: new createContext_1.EnvTree(),
environments: [],
nodes: [
{
type: 'Literal',
loc: {
start: { line: 1, column: 0 },
end: { line: 1, column: 1 }
},
value: 0,
raw: '0',
range: [0, 1]
}
],
control: null,
stash: null,
objectCount: 0,
envStepsTotal: 0,
breakpointSteps: [],
changepointSteps: []
};
return context;
}
exports.mockRuntimeContext = mockRuntimeContext;
function mockClosure(cseMachineClosure) {
const context = (0, createContext_1.default)();
return new (cseMachineClosure ? closure_2.default : closure_1.default)({
type: 'ArrowFunctionExpression',
expression: true,
loc: null,
params: [],
body: {
type: 'BlockStatement',
body: []
}
}, mockEnvironment(context), context);
}
exports.mockClosure = mockClosure;
function mockEnvironment(context, name = 'blockEnvironment') {
return (0, interpreter_1.createBlockEnvironment)(context, name);
}
exports.mockEnvironment = mockEnvironment;
//# sourceMappingURL=context.js.map
;