summaryrefslogtreecommitdiffstats
path: root/src/test/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/tools')
-rw-r--r--src/test/tools/MockDocument.ts52
-rw-r--r--src/test/tools/MockEditor.ts43
-rw-r--r--src/test/tools/MockLine.ts13
-rw-r--r--src/test/tools/MockPosition.ts39
-rw-r--r--src/test/tools/MockSelection.ts35
-rw-r--r--src/test/tools/MockTextEditorEdit.ts18
-rw-r--r--src/test/tools/TestSetup.ts46
7 files changed, 246 insertions, 0 deletions
diff --git a/src/test/tools/MockDocument.ts b/src/test/tools/MockDocument.ts
new file mode 100644
index 0000000..cb6bbfe
--- /dev/null
+++ b/src/test/tools/MockDocument.ts
@@ -0,0 +1,52 @@
+import * as vscode from "vscode";
+import MockLine from "./MockLine";
+
+export default class MockDocument implements vscode.TextDocument {
+ public uri: vscode.Uri;
+ public fileName: string;
+ public isUntitled: boolean;
+ public languageId: string;
+ public version: number;
+ public isDirty: boolean;
+ public isClosed: boolean;
+ public eol: vscode.EndOfLine;
+ public lineCount: number;
+ private line: vscode.TextLine;
+ private callCount: number;
+ public constructor(line: vscode.TextLine) {
+ this.line = line;
+ this.callCount = 0;
+ }
+ public save(): Thenable<boolean> {
+ throw new Error("Method not implemented.");
+ }
+ public lineAt(line: number | vscode.Position): vscode.TextLine;
+ public lineAt(position: any): any {
+ if (++this.callCount === 1) {
+ return new MockLine("");
+ } else if (this.callCount === 2) {
+ return this.line;
+ } else {
+ return new MockLine(";");
+ }
+ }
+ public offsetAt(position: vscode.Position): number {
+ throw new Error("Method not implemented.");
+ }
+ public positionAt(offset: number): vscode.Position {
+ throw new Error("Method not implemented.");
+ }
+ public getText(range?: vscode.Range): string {
+ throw new Error("Method not implemented.");
+ }
+ public getWordRangeAtPosition(position: vscode.Position, regex?: RegExp): vscode.Range {
+ throw new Error("Method not implemented.");
+ }
+ public validateRange(range: vscode.Range): vscode.Range {
+ throw new Error("Method not implemented.");
+ }
+ public validatePosition(position: vscode.Position): vscode.Position {
+ throw new Error("Method not implemented.");
+ }
+
+}
diff --git a/src/test/tools/MockEditor.ts b/src/test/tools/MockEditor.ts
new file mode 100644
index 0000000..5368fb8
--- /dev/null
+++ b/src/test/tools/MockEditor.ts
@@ -0,0 +1,43 @@
+import * as vscode from "vscode";
+import { TextEditor } from "vscode";
+import MockDocument from "./MockDocument";
+import MockSelection from "./MockSelection";
+import MockTextEditorEdit from "./MockTextEditorEdit";
+
+export default class MockEditor implements TextEditor {
+ public document: vscode.TextDocument;
+ public selection: vscode.Selection;
+ public selections: vscode.Selection[];
+ public options: vscode.TextEditorOptions;
+ public viewColumn?: vscode.ViewColumn;
+ public editBuilder: MockTextEditorEdit;
+ public constructor(s: MockSelection, d: MockDocument) {
+ this.selection = s;
+ this.document = d;
+ this.editBuilder = new MockTextEditorEdit();
+ }
+
+ public edit(callback: (editBuilder: vscode.TextEditorEdit) => void,
+ options?: { undoStopBefore: boolean; undoStopAfter: boolean; }): Thenable<boolean> {
+ callback(this.editBuilder);
+ return Promise.resolve(true);
+ }
+ public insertSnippet(snippet: vscode.SnippetString,
+ location?: vscode.Position | vscode.Range | vscode.Position[] | vscode.Range[],
+ options?: { undoStopBefore: boolean; undoStopAfter: boolean; }): Thenable<boolean> {
+ throw new Error("Method not implemented.");
+ }
+ public setDecorations(decorationType: vscode.TextEditorDecorationType,
+ rangesOrOptions: vscode.Range[] | vscode.DecorationOptions[]): void {
+ throw new Error("Method not implemented.");
+ }
+ public revealRange(range: vscode.Range, revealType?: vscode.TextEditorRevealType): void {
+ throw new Error("Method not implemented.");
+ }
+ public show(column?: vscode.ViewColumn): void {
+ throw new Error("Method not implemented.");
+ }
+ public hide(): void {
+ throw new Error("Method not implemented.");
+ }
+}
diff --git a/src/test/tools/MockLine.ts b/src/test/tools/MockLine.ts
new file mode 100644
index 0000000..7196a38
--- /dev/null
+++ b/src/test/tools/MockLine.ts
@@ -0,0 +1,13 @@
+import * as vscode from "vscode";
+
+export default class MockLine implements vscode.TextLine {
+ public lineNumber: number;
+ public text: string;
+ public range: vscode.Range;
+ public rangeIncludingLineBreak: vscode.Range;
+ public firstNonWhitespaceCharacterIndex: number;
+ public isEmptyOrWhitespace: boolean;
+ public constructor(text: string) {
+ this.text = text;
+ }
+}
diff --git a/src/test/tools/MockPosition.ts b/src/test/tools/MockPosition.ts
new file mode 100644
index 0000000..0753670
--- /dev/null
+++ b/src/test/tools/MockPosition.ts
@@ -0,0 +1,39 @@
+import * as vscode from "vscode";
+
+export default class MockPosition implements vscode.Position {
+ public line: number;
+ public character: number;
+ public constructor(l: number, c: number) {
+ this.line = l;
+ this.character = c;
+ }
+ public isBefore(other: vscode.Position): boolean {
+ throw new Error("Method not implemented.");
+ }
+ public isBeforeOrEqual(other: vscode.Position): boolean {
+ throw new Error("Method not implemented.");
+ }
+ public isAfter(other: vscode.Position): boolean {
+ throw new Error("Method not implemented.");
+ }
+ public isAfterOrEqual(other: vscode.Position): boolean {
+ throw new Error("Method not implemented.");
+ }
+ public isEqual(other: vscode.Position): boolean {
+ throw new Error("Method not implemented.");
+ }
+ public compareTo(other: vscode.Position): number {
+ throw new Error("Method not implemented.");
+ }
+ public translate(lineDelta?: number, characterDelta?: number): vscode.Position;
+ public translate(change: { lineDelta?: number; characterDelta?: number; }): vscode.Position;
+ public translate(lineDelta?: any, characterDelta?: any): any {
+ throw new Error("Method not implemented.");
+ }
+ public with(line?: number, character?: number): vscode.Position;
+ public with(change: { line?: number; character?: number; }): vscode.Position;
+ public with(line?: any, character?: any): any {
+ throw new Error("Method not implemented.");
+ }
+
+}
diff --git a/src/test/tools/MockSelection.ts b/src/test/tools/MockSelection.ts
new file mode 100644
index 0000000..e72ff8b
--- /dev/null
+++ b/src/test/tools/MockSelection.ts
@@ -0,0 +1,35 @@
+import * as vscode from "vscode";
+import MockPosition from "./MockPosition";
+
+export default class MockSelection implements vscode.Selection {
+ public anchor: vscode.Position;
+ public active: vscode.Position;
+ public isReversed: boolean;
+ public start: vscode.Position;
+ public end: vscode.Position;
+ public isEmpty: boolean;
+ public isSingleLine: boolean;
+
+ public constructor(a: MockPosition) {
+ this.active = a;
+ this.start = a;
+ }
+
+ public contains(positionOrRange: vscode.Range | vscode.Position): boolean {
+ throw new Error("Method not implemented.");
+ }
+ public isEqual(other: vscode.Range): boolean {
+ throw new Error("Method not implemented.");
+ }
+ public intersection(range: vscode.Range): vscode.Range {
+ throw new Error("Method not implemented.");
+ }
+ public union(other: vscode.Range): vscode.Range {
+ throw new Error("Method not implemented.");
+ }
+ public with(start?: vscode.Position, end?: vscode.Position): vscode.Range;
+ public with(change: { start?: vscode.Position; end?: vscode.Position; }): vscode.Range;
+ public with(start?: any, end?: any): any {
+ throw new Error("Method not implemented.");
+ }
+}
diff --git a/src/test/tools/MockTextEditorEdit.ts b/src/test/tools/MockTextEditorEdit.ts
new file mode 100644
index 0000000..e751182
--- /dev/null
+++ b/src/test/tools/MockTextEditorEdit.ts
@@ -0,0 +1,18 @@
+import * as vscode from "vscode";
+
+export default class MockTextEditorEdit implements vscode.TextEditorEdit {
+ public text: string;
+ public replace(location: vscode.Position | vscode.Range | vscode.Selection, value: string): void {
+ this.text = value;
+ }
+ public insert(location: vscode.Position, value: string): void {
+ throw new Error("Method not implemented.");
+ }
+ public delete(location: vscode.Range | vscode.Selection): void {
+ throw new Error("Method not implemented.");
+ }
+ public setEndOfLine(endOfLine: vscode.EndOfLine): void {
+ throw new Error("Method not implemented.");
+ }
+
+}
diff --git a/src/test/tools/TestSetup.ts b/src/test/tools/TestSetup.ts
new file mode 100644
index 0000000..1270616
--- /dev/null
+++ b/src/test/tools/TestSetup.ts
@@ -0,0 +1,46 @@
+import * as vscode from "vscode";
+import CodeParser from "../../CodeParser/CodeParser";
+import CParser from "../../CodeParser/CParser/CParser";
+import { IDocGen } from "../../DocGen/DocGen";
+import * as myExtension from "../../extension";
+import MockDocument from "./MockDocument";
+import MockEditor from "./MockEditor";
+import MockLine from "./MockLine";
+import MockPosition from "./MockPosition";
+import MockSelection from "./MockSelection";
+
+export default class TestSetup {
+ private editor: MockEditor;
+
+ constructor(method: string) {
+ this.SetLine(method);
+ }
+
+ public SetLine(method: string): TestSetup {
+ let position: MockPosition;
+ position = new MockPosition(0, 0);
+
+ let selection: MockSelection;
+ selection = new MockSelection(position);
+
+ let line: MockLine;
+ line = new MockLine(method);
+
+ let doc: MockDocument;
+ doc = new MockDocument(line);
+
+ this.editor = new MockEditor(selection, doc);
+
+ return this;
+ }
+
+ public GetResult(): string {
+ let parser: CodeParser;
+ parser = new CParser();
+
+ const gen: IDocGen = parser.Parse(this.editor);
+ gen.GenerateDoc(new vscode.Range(new vscode.Position(0, 0), new vscode.Position(0, 0)));
+
+ return this.editor.editBuilder.text;
+ }
+}