blob: 2e6c7f1f46724a735c96f1603f869b2420e95fdc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
import * as vscode from "vscode";
import CodeParser from "../../Common/ICodeParser";
import { IDocGen } from "../../Common/IDocGen";
import { Config } from "../../Config";
import * as myExtension from "../../extension";
import CppParser from "../../Lang/Cpp/CppParser";
import MockDocument from "../tools/MockDocument";
import MockEditor from "../tools/MockEditor";
import MockLine from "../tools/MockLine";
import MockPosition from "../tools/MockPosition";
import MockSelection from "../tools/MockSelection";
export default class TestSetup {
public cfg: Config;
public firstLine: number;
private editor: MockEditor;
constructor(method: string) {
this.cfg = new Config();
this.firstLine = 0;
this.SetLine(method);
}
public SetLine(method: string): TestSetup {
return this.SetLines([method]);
}
public SetLines(lines: string[]): TestSetup {
let mockLines: MockLine[];
// Add two empty lines with just the indentation
// since one is for the triggersequence line.
// And the other is if the next empty line.
if (lines.length > 0) {
const indent: string = lines[0].match("^\\s*")[0];
mockLines = [indent, indent].concat(lines)
.map((l) => new MockLine(l));
}
const selection: MockSelection = new MockSelection(new MockPosition(this.firstLine, 0));
const doc: MockDocument = new MockDocument(mockLines);
this.editor = new MockEditor(selection, doc);
return this;
}
public GetResult(): string {
let parser: CodeParser;
parser = new CppParser(this.cfg);
const gen: IDocGen = parser.Parse(this.editor);
// tslint:disable-next-line:max-line-length
gen.GenerateDoc(new vscode.Range(new vscode.Position(this.firstLine, 0), new vscode.Position(this.firstLine, 0)));
return this.editor.editBuilder.text;
}
}
|