"use strict";
var typeInfo = require("ts-type-info");
var TestRunnerArgsCacheGenerator = (function () {
/* istanbul ignore next */ function TestRunnerArgsCacheGenerator() {
}
TestRunnerArgsCacheGenerator.prototype.fillFile = function (file) {
file.addClass({
name: "TestRunnerArgsCache",
isExported: true,
typeParameters: [{ name: "T", constraintType: "TestRunner<any, any>" }],
constructorDef: {
onWriteFunctionBody: function (writer) {
writer.writeLine("this.items = [];");
}
},
properties: [{
name: "items",
scope: typeInfo.Scope.Private,
isReadonly: true,
type: "{ args: any[]; value: T; }[]"
}],
methods: [{
name: "getIndex",
parameters: [{ name: "args", type: "any[]" }],
onWriteFunctionBody: function (writer) {
writer.write("for (let i = 0; i < this.items.length; i++)").block(function () {
writer.writeLine("const item = this.items[i];");
writer.write("if (args.length !== item.args.length)").block(function () {
writer.writeLine("continue;");
});
writer.newLine();
writer.writeLine("let isMatch = true;");
writer.write("for (let j = 0; j < args.length; j++)").block(function () {
writer.write("if (args[j] !== item.args[j])").block(function () {
writer.writeLine("isMatch = false;");
writer.writeLine("break;");
});
});
writer.write("if (isMatch)").block(function () {
writer.writeLine("return i;");
});
});
writer.newLine();
writer.writeLine("return -1;");
}
}, {
name: "addItem",
parameters: [{ name: "value", type: "T" }, { name: "args", type: "any[]" }],
onWriteFunctionBody: function (writer) {
writer.writeLine("this.items.push({ value, args });");
}
}, {
name: "getItemAtIndex",
parameters: [{ name: "index", type: "number" }],
onWriteFunctionBody: function (writer) {
writer.writeLine("return this.items[index].value;");
}
}]
});
};
return TestRunnerArgsCacheGenerator;
}());
exports.TestRunnerArgsCacheGenerator = TestRunnerArgsCacheGenerator;
//# sourceMappingURL=TestRunnerArgsCacheGenerator.js.map
|