Skip to content

Commit 92338fd

Browse files
committed
Use the document formatter for system tests
1 parent 7055765 commit 92338fd

4 files changed

Lines changed: 58 additions & 26 deletions

File tree

src/tableFinding/tableFinder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export class TableFinder {
6868
private getRangeForLines(rows: string[], startLine: number, endLine: number): vscode.Range {
6969
return new vscode.Range(
7070
new vscode.Position(startLine, 0),
71-
new vscode.Position(endLine, rows[endLine - 1].length)
71+
new vscode.Position(endLine, rows[endLine].length)
7272
);
7373
}
7474
}

test/stubs/markdownTextDocumentStub.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ export class MarkdownTextDocumentStub implements vscode.TextDocument {
1313
lineCount: number;
1414

1515
constructor(text: string) {
16-
this._lines = text.split(/\r\n|\r|\n/);
17-
this.lineCount = this._lines.length;
16+
this.setLines(text);
1817

1918
this.fileName = "test.md";
2019
this.isUntitled = false;
@@ -23,6 +22,11 @@ export class MarkdownTextDocumentStub implements vscode.TextDocument {
2322
this.isDirty = false;
2423
}
2524

25+
private setLines(text: string) {
26+
this._lines = text.split(/\r\n|\r|\n/);
27+
this.lineCount = this._lines.length;
28+
}
29+
2630
getFullRange(): vscode.Range {
2731
return this.getRangeForLines(0, this._lines.length - 1);
2832
}
@@ -34,6 +38,25 @@ export class MarkdownTextDocumentStub implements vscode.TextDocument {
3438
);
3539
}
3640

41+
applyEdits(edits: vscode.TextEdit[]): void {
42+
let original = this._lines.join(EOL);
43+
for (let edit of edits) {
44+
const startIndex = this.indexOf(edit.range.start);
45+
const endIndex = this.indexOf(edit.range.end);
46+
original = original.substring(0, startIndex) + edit.newText + original.substring(endIndex);
47+
}
48+
this.setLines(original);
49+
}
50+
51+
indexOf(position: vscode.Position): number {
52+
let result = 0;
53+
for (let i = 0; i < position.line; i++) {
54+
result += this._lines[i].length;
55+
}
56+
result += position.character;
57+
return result;
58+
}
59+
3760
lineAt(param: number): vscode.TextLine;
3861
lineAt(param: vscode.Position): vscode.TextLine;
3962
lineAt(param: any) {

test/systemTests/resources/alignCenterWithBorder-input.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@
88
|int|-2,147,483,648 to 2,147,483,647|Signed 32-bit integer|
99
|uint|0 to 4,294,967,295|Unsigned 32-bit integer|
1010
|long|-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807|Signed 64-bit integer|
11-
|ulong|0 to 18,446,744,073,709,551,615|Unsigned 64-bit integer|
11+
|ulong|0 to 18,446,744,073,709,551,615|Unsigned 64-bit integer|

test/systemTests/tableRangePrettyfierFactory.ts

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import { BorderTransformer } from '../../src/modelFactory/transformers/borderTra
1818
import { SelectionInterpreter } from '../../src/modelFactory/selectionInterpreter';
1919
import { PadCalculatorSelector } from '../../src/padCalculation/padCalculatorSelector';
2020
import { AlignmentMarkerStrategy } from '../../src/viewModelFactories/alignmentMarking';
21+
import { TableDocumentPrettyfier } from '../../src/extension/tableDocumentPrettyfier';
22+
import { TableFinder } from '../../src/tableFinding/tableFinder';
2123

2224
export class PrettyfierFromFile {
2325
private readonly _logger: ILogger;
@@ -27,44 +29,51 @@ export class PrettyfierFromFile {
2729
}
2830

2931
public assertPrettyfiedAsExpected(fileNamePrefix: string): void {
30-
this.assertEditsPrettyfied(
31-
this.makeTextEdit(this.readFileContents(`${fileNamePrefix}-input.md`)),
32-
this.readFileContents(`${fileNamePrefix}-expected.md`)
33-
);
32+
const inputFileContents = this.readFileContents(`${fileNamePrefix}-input.md`);
33+
const edits = this.makeTextEdit(inputFileContents);
34+
const expectedFileContents = this.readFileContents(`${fileNamePrefix}-expected.md`);
35+
this.assertEditsPrettyfied(inputFileContents, edits, expectedFileContents);
3436
}
3537

36-
private assertEditsPrettyfied(edits: vscode.TextEdit[], expected: string): void {
37-
assert.equal(edits.length, 1);
38+
private assertEditsPrettyfied(originalInput: string, edits: vscode.TextEdit[], expected: string): void {
39+
const doc = new MarkdownTextDocumentStub(originalInput);
40+
doc.applyEdits(edits);
41+
const actual = doc.getText();
42+
3843
const expectedLines = expected.split(/\r\n|\r|\n/);
39-
const actualLines = edits[0].newText.split(/\r\n|\r|\n/);
44+
const actualLines = actual.split(/\r\n|\r|\n/);
45+
4046
assert.equal(actualLines.length, expectedLines.length);
4147
for (let i = 0; i < actualLines.length; i++)
4248
assert.equal(actualLines[i], expectedLines[i]);
4349
}
4450

4551
private makeTextEdit(fileContents: string): vscode.TextEdit[] {
4652
const doc = new MarkdownTextDocumentStub(fileContents);
47-
return this.createPrettyfier().provideDocumentRangeFormattingEdits(doc, doc.getFullRange(), null, null);
53+
return this.createPrettyfier().provideDocumentFormattingEdits(doc, null, null);
4854
}
4955

5056
private readFileContents(fileName: string) {
5157
return fs.readFileSync(path.resolve(__dirname, fileName), 'utf-8');
5258
}
5359

54-
private createPrettyfier(): TableDocumentRangePrettyfier {
55-
return new TableDocumentRangePrettyfier(
56-
new TableFactory(
57-
new AlignmentFactory(),
58-
new SelectionInterpreter(false),
59-
new TrimmerTransformer(new BorderTransformer(null))
60-
),
61-
new TableValidator(new SelectionInterpreter(false)),
62-
new TableViewModelFactory(new RowViewModelFactory(
63-
new ContentPadCalculator(new PadCalculatorSelector(), " "),
64-
new AlignmentMarkerStrategy(":")
65-
)),
66-
new TableStringWriter(),
67-
[ this._logger ]
60+
private createPrettyfier(): TableDocumentPrettyfier {
61+
return new TableDocumentPrettyfier(
62+
new TableFinder(new TableValidator(new SelectionInterpreter(true))),
63+
new TableDocumentRangePrettyfier(
64+
new TableFactory(
65+
new AlignmentFactory(),
66+
new SelectionInterpreter(false),
67+
new TrimmerTransformer(new BorderTransformer(null))
68+
),
69+
new TableValidator(new SelectionInterpreter(false)),
70+
new TableViewModelFactory(new RowViewModelFactory(
71+
new ContentPadCalculator(new PadCalculatorSelector(), " "),
72+
new AlignmentMarkerStrategy(":")
73+
)),
74+
new TableStringWriter(),
75+
[ this._logger ]
76+
)
6877
);
6978
}
7079
}

0 commit comments

Comments
 (0)