Skip to content

Commit 1a0cb99

Browse files
committed
Add tests for content pad calculator
1 parent a043b47 commit 1a0cb99

10 files changed

Lines changed: 60 additions & 18 deletions

src/extension/extension.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { TrimmerTransformer } from '../modelFactory/transformers/trimmerTransfor
1414
import { BorderTransformer } from '../modelFactory/transformers/borderTransformer';
1515
import { SelectionInterpreter } from '../modelFactory/selectionInterpreter';
1616
import { SeparatorPadCalculator } from '../padCalculation/separatorPadCalculator';
17-
import { ColumnBasedPadCalculatorSelector } from '../padCalculation/columnBasedPadCalculatorSelector';
17+
import { PadCalculatorSelector } from '../padCalculation/padCalculatorSelector';
1818

1919
// This method is called when the extension is activated.
2020
// The extension is activated the very first time the command is executed.
@@ -31,8 +31,8 @@ export function activate(context: vscode.ExtensionContext): void {
3131
new TableValidator(new SelectionInterpreter()),
3232
new TableViewModelFactory(
3333
new RowViewModelFactory(
34-
new ContentPadCalculator(new ColumnBasedPadCalculatorSelector(), " "),
35-
new SeparatorPadCalculator(new ColumnBasedPadCalculatorSelector(), "-")
34+
new ContentPadCalculator(new PadCalculatorSelector(), " "),
35+
new SeparatorPadCalculator(new PadCalculatorSelector(), "-")
3636
)
3737
),
3838
new TableStringWriter(),

src/padCalculation/contentPadCalculator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { PadCalculator } from "./padCalculator";
22
import { Table } from "../models/table";
3-
import { ColumnBasedPadCalculatorSelector } from "./columnBasedPadCalculatorSelector";
3+
import { PadCalculatorSelector } from "./padCalculatorSelector";
44

55
export class ContentPadCalculator implements PadCalculator {
66

77
constructor(
8-
protected _padCalculatorSelector: ColumnBasedPadCalculatorSelector,
8+
protected _padCalculatorSelector: PadCalculatorSelector,
99
protected _paddingChar: string)
1010
{ }
1111

src/padCalculation/columnBasedPadCalculatorSelector.ts renamed to src/padCalculation/padCalculatorSelector.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { FirstColumnPadCalculator } from "./firstColumnPadCalculator";
44
import { LastColumnPadCalculator } from "./lastColumnPadCalculator";
55
import { MiddleColumnPadCalculator } from "./middleColumnPadCalculator";
66

7-
export class ColumnBasedPadCalculatorSelector {
7+
export class PadCalculatorSelector {
88
public select(table: Table, column: number) : BasePadCalculator {
99
if (column == 0) return new FirstColumnPadCalculator();
1010
if (column == table.columnCount - 1) return new LastColumnPadCalculator();

src/padCalculation/separatorPadCalculator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { PadCalculator } from "./padCalculator";
22
import { ContentPadCalculator } from "./contentPadCalculator";
33
import { Table } from "../models/table";
4-
import { ColumnBasedPadCalculatorSelector } from "./columnBasedPadCalculatorSelector";
4+
import { PadCalculatorSelector } from "./padCalculatorSelector";
55

66
export class SeparatorPadCalculator extends ContentPadCalculator implements PadCalculator {
77

88
constructor(
9-
padCalculatorSelector: ColumnBasedPadCalculatorSelector,
9+
padCalculatorSelector: PadCalculatorSelector,
1010
paddingChar: string)
1111
{
1212
super(padCalculatorSelector, paddingChar);

test/systemTests/tableRangePrettyfierFactory.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { TrimmerTransformer } from '../../src/modelFactory/transformers/trimmerT
1818
import { BorderTransformer } from '../../src/modelFactory/transformers/borderTransformer';
1919
import { SelectionInterpreter } from '../../src/modelFactory/selectionInterpreter';
2020
import { SeparatorPadCalculator } from '../../src/padCalculation/separatorPadCalculator';
21-
import { ColumnBasedPadCalculatorSelector } from '../../src/padCalculation/columnBasedPadCalculatorSelector';
21+
import { PadCalculatorSelector } from '../../src/padCalculation/padCalculatorSelector';
2222

2323
export class PrettyfierFromFile {
2424
private readonly _logger: ILogger;
@@ -61,8 +61,8 @@ export class PrettyfierFromFile {
6161
),
6262
new TableValidator(new SelectionInterpreter()),
6363
new TableViewModelFactory(new RowViewModelFactory(
64-
new ContentPadCalculator(new ColumnBasedPadCalculatorSelector(), " "),
65-
new SeparatorPadCalculator(new ColumnBasedPadCalculatorSelector(), "-")
64+
new ContentPadCalculator(new PadCalculatorSelector(), " "),
65+
new SeparatorPadCalculator(new PadCalculatorSelector(), "-")
6666
)),
6767
new TableStringWriter(),
6868
[ this._logger ]
Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,63 @@
11
import * as assert from 'assert';
22
import { assertExt } from "../../assertExtensions";
3+
import { IMock, Mock, It, Times } from 'typemoq';
34
import { ContentPadCalculator } from "../../../src/padCalculation/contentPadCalculator";
45
import { Table } from '../../../src/models/table';
56
import { Alignment } from '../../../src/models/alignment';
67
import { Cell } from '../../../src/models/cell';
8+
import { PadCalculatorSelector } from '../../../src/padCalculation/padCalculatorSelector';
9+
import { BasePadCalculator } from '../../../src/padCalculation/basePadCalculator';
710
import { PadCalculator } from '../../../src/padCalculation/padCalculator';
8-
import { ColumnBasedPadCalculatorSelector } from '../../../src/padCalculation/columnBasedPadCalculatorSelector';
911

1012
suite("ContentPadCalculator tests", () => {
1113

14+
let _selector: IMock<PadCalculatorSelector>;
15+
let _mockCalculator: IMock<BasePadCalculator>;
16+
17+
setup(() => {
18+
_selector = Mock.ofType<PadCalculatorSelector>();
19+
_mockCalculator = Mock.ofType<BasePadCalculator>();
20+
});
21+
22+
test("getLeftPadding() Uses selector and returns left padding from the pad calculator chosen by the selector", () => {
23+
const sut = createCalculator();
24+
const table = tableFor([
25+
[ "aaaaa", "bbbbb", "ccccc" ],
26+
[ "aaaaa", "bbbbb", "ccccc" ]
27+
]);
28+
_selector.setup(_ => _.select(table, It.isAny())).returns(() => _mockCalculator.object).verifiable(Times.once());
29+
_mockCalculator.setup(_ => _.getLeftPadding(It.isAny(), table, It.isAny())).returns(() => "test").verifiable(Times.once());
30+
31+
const pad = sut.getLeftPadding(table, 1, 2);
32+
33+
assert.equal(pad, "test");
34+
_selector.verifyAll();
35+
_mockCalculator.verifyAll();
36+
});
37+
38+
test("getRightPadding() Uses selector and returns right padding from the pad calculator chosen by the selector", () => {
39+
const sut = createCalculator();
40+
const table = tableFor([
41+
[ "aaaaa", "bbbbb", "ccccc" ],
42+
[ "aaaaa", "bbbbb", "ccccc" ]
43+
]);
44+
_selector.setup(_ => _.select(table, It.isAny())).returns(() => _mockCalculator.object).verifiable(Times.once());
45+
_mockCalculator.setup(_ => _.getRightPadding(It.isAny(), table, 1, 2)).returns(() => "foo bar").verifiable(Times.once());
46+
47+
const pad = sut.getRightPadding(table, 1, 2);
48+
49+
assert.equal(pad, "foo bar");
50+
_selector.verifyAll();
51+
_mockCalculator.verifyAll();
52+
});
53+
1254
function tableFor(rows: string[][]) {
1355
const alignments: Alignment[] = rows[0].map(r => Alignment.Left);
1456
let table = new Table(rows.map(row => row.map(c => new Cell(c))), alignments);
1557
return table;
1658
}
1759

1860
function createCalculator(): PadCalculator {
19-
return new ContentPadCalculator(new ColumnBasedPadCalculatorSelector(), " ");
61+
return new ContentPadCalculator(_selector.object, " ");
2062
}
2163
});

test/unitTests/padCalculation/firstColumnPadCalculator.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Table } from '../../../src/models/table';
55
import { Alignment } from '../../../src/models/alignment';
66
import { Cell } from '../../../src/models/cell';
77
import { PadCalculator } from '../../../src/padCalculation/padCalculator';
8-
import { ColumnBasedPadCalculatorSelector } from '../../../src/padCalculation/columnBasedPadCalculatorSelector';
8+
import { PadCalculatorSelector } from '../../../src/padCalculation/padCalculatorSelector';
99
import { FirstColumnPadCalculator } from '../../../src/padCalculation/firstColumnPadCalculator';
1010

1111
suite("FirstColumnPadCalculator tests", () => {

test/unitTests/padCalculation/lastColumnPadCalculator.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Table } from '../../../src/models/table';
55
import { Alignment } from '../../../src/models/alignment';
66
import { Cell } from '../../../src/models/cell';
77
import { PadCalculator } from '../../../src/padCalculation/padCalculator';
8-
import { ColumnBasedPadCalculatorSelector } from '../../../src/padCalculation/columnBasedPadCalculatorSelector';
8+
import { PadCalculatorSelector } from '../../../src/padCalculation/padCalculatorSelector';
99
import { LastColumnPadCalculator } from '../../../src/padCalculation/lastColumnPadCalculator';
1010

1111
suite("LastColumnPadCalculator tests", () => {

test/unitTests/padCalculation/middleColumnPadCalculator.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Table } from '../../../src/models/table';
55
import { Alignment } from '../../../src/models/alignment';
66
import { Cell } from '../../../src/models/cell';
77
import { PadCalculator } from '../../../src/padCalculation/padCalculator';
8-
import { ColumnBasedPadCalculatorSelector } from '../../../src/padCalculation/columnBasedPadCalculatorSelector';
8+
import { PadCalculatorSelector } from '../../../src/padCalculation/padCalculatorSelector';
99
import { MiddleColumnPadCalculator } from '../../../src/padCalculation/middleColumnPadCalculator';
1010

1111
suite("MiddleColumnPadCalculator tests", () => {

test/unitTests/padCalculation/separatorPadCalculator.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Alignment } from '../../../src/models/alignment';
55
import { Cell } from '../../../src/models/cell';
66
import { PadCalculator } from '../../../src/padCalculation/padCalculator';
77
import { SeparatorPadCalculator } from '../../../src/padCalculation/separatorPadCalculator';
8-
import { ColumnBasedPadCalculatorSelector } from '../../../src/padCalculation/columnBasedPadCalculatorSelector';
8+
import { PadCalculatorSelector } from '../../../src/padCalculation/padCalculatorSelector';
99

1010
suite("SeparatorPadCalculator tests", () => {
1111

@@ -150,6 +150,6 @@ suite("SeparatorPadCalculator tests", () => {
150150
}
151151

152152
function createCalculator(): PadCalculator {
153-
return new SeparatorPadCalculator(new ColumnBasedPadCalculatorSelector(), "-");
153+
return new SeparatorPadCalculator(new PadCalculatorSelector(), "-");
154154
}
155155
});

0 commit comments

Comments
 (0)