mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-21 23:59:34 +01:00
Move tests to use LinesLayout
This commit is contained in:
@@ -12,7 +12,6 @@ import { IViewWhitespaceViewportData } from 'vs/editor/common/viewModel/viewMode
|
||||
*
|
||||
* These objects are basically either text (lines) or spaces between those lines (whitespaces).
|
||||
* This provides commodity operations for working with lines that contain whitespace that pushes lines lower (vertically).
|
||||
* This is written with no knowledge of an editor in mind.
|
||||
*/
|
||||
export class LinesLayout {
|
||||
|
||||
@@ -475,4 +474,67 @@ export class LinesLayout {
|
||||
public getWhitespaces(): IEditorWhitespace[] {
|
||||
return this._whitespaces.getWhitespaces(this._lineHeight);
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of whitespaces.
|
||||
*/
|
||||
public getWhitespacesCount(): number {
|
||||
return this._whitespaces.getCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the `id` for whitespace at index `index`.
|
||||
*
|
||||
* @param index The index of the whitespace.
|
||||
* @return `id` of whitespace at `index`.
|
||||
*/
|
||||
public getIdForWhitespaceIndex(index: number): string {
|
||||
return this._whitespaces.getIdForWhitespaceIndex(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the `afterLineNumber` for whitespace at index `index`.
|
||||
*
|
||||
* @param index The index of the whitespace.
|
||||
* @return `afterLineNumber` of whitespace at `index`.
|
||||
*/
|
||||
public getAfterLineNumberForWhitespaceIndex(index: number): number {
|
||||
return this._whitespaces.getAfterLineNumberForWhitespaceIndex(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the `height` for whitespace at index `index`.
|
||||
*
|
||||
* @param index The index of the whitespace.
|
||||
* @return `height` of whitespace at `index`.
|
||||
*/
|
||||
public getHeightForWhitespaceIndex(index: number): number {
|
||||
return this._whitespaces.getHeightForWhitespaceIndex(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the index of the first whitespace which has `afterLineNumber` >= `lineNumber`.
|
||||
* @return The index of the first whitespace with `afterLineNumber` >= `lineNumber` or -1 if no whitespace is found.
|
||||
*/
|
||||
public getFirstWhitespaceIndexAfterLineNumber(lineNumber: number): number {
|
||||
return this._whitespaces.getFirstWhitespaceIndexAfterLineNumber(lineNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the sum of the heights of the whitespaces at [0..index].
|
||||
* This includes the whitespace at `index`.
|
||||
*
|
||||
* @param index The index of the whitespace.
|
||||
* @return The sum of the heights of all whitespaces before the one at `index`, including the one at `index`.
|
||||
*/
|
||||
public getWhitespacesAccumulatedHeight(index: number): number {
|
||||
return this._whitespaces.getAccumulatedHeight(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the sum of all the whitespaces.
|
||||
*/
|
||||
public getWhitespacesTotalHeight(): number {
|
||||
return this._whitespaces.getTotalHeight();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,245 +4,246 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as assert from 'assert';
|
||||
import { WhitespaceComputer } from 'vs/editor/common/viewLayout/whitespaceComputer';
|
||||
import { LinesLayout } from 'vs/editor/common/viewLayout/linesLayout';
|
||||
|
||||
suite('Editor ViewLayout - WhitespaceComputer', () => {
|
||||
|
||||
test('WhitespaceComputer', () => {
|
||||
|
||||
let whitespaceComputer = new WhitespaceComputer();
|
||||
const linesLayout = new LinesLayout(100, 20);
|
||||
|
||||
// Insert a whitespace after line number 2, of height 10
|
||||
let a = whitespaceComputer.insertWhitespace(2, 0, 10, 0);
|
||||
const a = linesLayout.insertWhitespace(2, 0, 10, 0);
|
||||
// whitespaces: a(2, 10)
|
||||
assert.equal(whitespaceComputer.getCount(), 1);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 10);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 10);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 10);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 10);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 10);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 1);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 10);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 10);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 10);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 10);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 10);
|
||||
|
||||
// Insert a whitespace again after line number 2, of height 20
|
||||
let b = whitespaceComputer.insertWhitespace(2, 0, 20, 0);
|
||||
let b = linesLayout.insertWhitespace(2, 0, 20, 0);
|
||||
// whitespaces: a(2, 10), b(2, 20)
|
||||
assert.equal(whitespaceComputer.getCount(), 2);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 10);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 10);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 30);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 30);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 2);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 10);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 10);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 30);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 30);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 30);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 30);
|
||||
|
||||
// Change last inserted whitespace height to 30
|
||||
whitespaceComputer.changeWhitespaceHeight(b, 30);
|
||||
linesLayout.changeWhitespace(b, 2, 30);
|
||||
// whitespaces: a(2, 10), b(2, 30)
|
||||
assert.equal(whitespaceComputer.getCount(), 2);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 10);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 10);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 40);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 40);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 40);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 40);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 2);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 10);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 30);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 10);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 40);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 40);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 40);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 40);
|
||||
|
||||
// Remove last inserted whitespace
|
||||
whitespaceComputer.removeWhitespace(b);
|
||||
linesLayout.removeWhitespace(b);
|
||||
// whitespaces: a(2, 10)
|
||||
assert.equal(whitespaceComputer.getCount(), 1);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 10);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 10);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 10);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 10);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 10);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 1);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 10);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 10);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 10);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 10);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 10);
|
||||
|
||||
// Add a whitespace before the first line of height 50
|
||||
b = whitespaceComputer.insertWhitespace(0, 0, 50, 0);
|
||||
b = linesLayout.insertWhitespace(0, 0, 50, 0);
|
||||
// whitespaces: b(0, 50), a(2, 10)
|
||||
assert.equal(whitespaceComputer.getCount(), 2);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 10);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 60);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 60);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 60);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 60);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 2);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 10);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 50);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 60);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 60);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 60);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 60);
|
||||
|
||||
// Add a whitespace after line 4 of height 20
|
||||
whitespaceComputer.insertWhitespace(4, 0, 20, 0);
|
||||
linesLayout.insertWhitespace(4, 0, 20, 0);
|
||||
// whitespaces: b(0, 50), a(2, 10), c(4, 20)
|
||||
assert.equal(whitespaceComputer.getCount(), 3);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 10);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 4);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(2), 20);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 60);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(2), 80);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 80);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 60);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 60);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 80);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 3);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 10);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 4);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(2), 20);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 50);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 60);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(2), 80);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 80);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 60);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 60);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(5), 80);
|
||||
|
||||
// Add a whitespace after line 3 of height 30
|
||||
whitespaceComputer.insertWhitespace(3, 0, 30, 0);
|
||||
linesLayout.insertWhitespace(3, 0, 30, 0);
|
||||
// whitespaces: b(0, 50), a(2, 10), d(3, 30), c(4, 20)
|
||||
assert.equal(whitespaceComputer.getCount(), 4);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 10);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 3);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(2), 30);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(3), 4);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(3), 20);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 60);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(2), 90);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(3), 110);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 110);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 60);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 90);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 110);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 4);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 10);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 3);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(2), 30);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(3), 4);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(3), 20);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 50);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 60);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(2), 90);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(3), 110);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 110);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 60);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 90);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(5), 110);
|
||||
|
||||
// Change whitespace after line 2 to height of 100
|
||||
whitespaceComputer.changeWhitespaceHeight(a, 100);
|
||||
linesLayout.changeWhitespace(a, 2, 100);
|
||||
// whitespaces: b(0, 50), a(2, 100), d(3, 30), c(4, 20)
|
||||
assert.equal(whitespaceComputer.getCount(), 4);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 100);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 3);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(2), 30);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(3), 4);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(3), 20);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 150);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(2), 180);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(3), 200);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 200);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 150);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 180);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 200);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 4);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 100);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 3);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(2), 30);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(3), 4);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(3), 20);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 50);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 150);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(2), 180);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(3), 200);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 200);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 150);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 180);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(5), 200);
|
||||
|
||||
// Remove whitespace after line 2
|
||||
whitespaceComputer.removeWhitespace(a);
|
||||
linesLayout.removeWhitespace(a);
|
||||
// whitespaces: b(0, 50), d(3, 30), c(4, 20)
|
||||
assert.equal(whitespaceComputer.getCount(), 3);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 30);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 4);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(2), 20);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 80);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(2), 100);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 100);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 80);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 100);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 3);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 50);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 30);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 4);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(2), 20);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 50);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 80);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(2), 100);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 100);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 80);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(5), 100);
|
||||
|
||||
// Remove whitespace before line 1
|
||||
whitespaceComputer.removeWhitespace(b);
|
||||
linesLayout.removeWhitespace(b);
|
||||
// whitespaces: d(3, 30), c(4, 20)
|
||||
assert.equal(whitespaceComputer.getCount(), 2);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 30);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 4);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 50);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 50);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 2);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 30);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 4);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 30);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 50);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 30);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(5), 50);
|
||||
|
||||
// Delete line 1
|
||||
whitespaceComputer.onLinesDeleted(1, 1);
|
||||
linesLayout.onLinesDeleted(1, 1);
|
||||
// whitespaces: d(2, 30), c(3, 20)
|
||||
assert.equal(whitespaceComputer.getCount(), 2);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 30);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 50);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 50);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 2);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 30);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 30);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 50);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 30);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(5), 50);
|
||||
|
||||
// Insert a line before line 1
|
||||
whitespaceComputer.onLinesInserted(1, 1);
|
||||
linesLayout.onLinesInserted(1, 1);
|
||||
// whitespaces: d(3, 30), c(4, 20)
|
||||
assert.equal(whitespaceComputer.getCount(), 2);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 30);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 4);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 50);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 50);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 2);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 30);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 4);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 30);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 50);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 30);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(5), 50);
|
||||
|
||||
// Delete line 4
|
||||
whitespaceComputer.onLinesDeleted(4, 4);
|
||||
linesLayout.onLinesDeleted(4, 4);
|
||||
// whitespaces: d(3, 30), c(3, 20)
|
||||
assert.equal(whitespaceComputer.getCount(), 2);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(0), 30);
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(whitespaceComputer.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(0), 30);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeight(1), 50);
|
||||
assert.equal(whitespaceComputer.getTotalHeight(), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(3), 0);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(4), 50);
|
||||
assert.equal(whitespaceComputer.getAccumulatedHeightBeforeLineNumber(5), 50);
|
||||
assert.equal(linesLayout.getWhitespacesCount(), 2);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(0), 30);
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(linesLayout.getHeightForWhitespaceIndex(1), 20);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(0), 30);
|
||||
assert.equal(linesLayout.getWhitespacesAccumulatedHeight(1), 50);
|
||||
assert.equal(linesLayout.getWhitespacesTotalHeight(), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(2), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(3), 0);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(4), 50);
|
||||
assert.equal(linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(5), 50);
|
||||
});
|
||||
|
||||
test('WhitespaceComputer findInsertionIndex', () => {
|
||||
|
||||
let makeArray = (size: number, fillValue: number) => {
|
||||
const makeArray = (size: number, fillValue: number) => {
|
||||
let r: number[] = [];
|
||||
for (let i = 0; i < size; i++) {
|
||||
r[i] = fillValue;
|
||||
@@ -375,184 +376,184 @@ suite('Editor ViewLayout - WhitespaceComputer', () => {
|
||||
});
|
||||
|
||||
test('WhitespaceComputer changeWhitespaceAfterLineNumber & getFirstWhitespaceIndexAfterLineNumber', () => {
|
||||
let whitespaceComputer = new WhitespaceComputer();
|
||||
const linesLayout = new LinesLayout(100, 20);
|
||||
|
||||
let a = whitespaceComputer.insertWhitespace(0, 0, 1, 0);
|
||||
let b = whitespaceComputer.insertWhitespace(7, 0, 1, 0);
|
||||
let c = whitespaceComputer.insertWhitespace(3, 0, 1, 0);
|
||||
const a = linesLayout.insertWhitespace(0, 0, 1, 0);
|
||||
const b = linesLayout.insertWhitespace(7, 0, 1, 0);
|
||||
const c = linesLayout.insertWhitespace(3, 0, 1, 0);
|
||||
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), c); // 3
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 0);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), c); // 3
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(1), 1); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(2), 1); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(3), 1); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(1), 1); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(2), 1); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(3), 1); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
|
||||
// Do not really move a
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(a, 1);
|
||||
linesLayout.changeWhitespace(a, 1, 1);
|
||||
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 1
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 1);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), c); // 3
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 1
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 1);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), c); // 3
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(1), 0); // a
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(2), 1); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(3), 1); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(1), 0); // a
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(2), 1); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(3), 1); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
|
||||
|
||||
// Do not really move a
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(a, 2);
|
||||
linesLayout.changeWhitespace(a, 2, 1);
|
||||
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 2
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), c); // 3
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 2
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 2);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), c); // 3
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(1), 0); // a
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(2), 0); // a
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(3), 1); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(1), 0); // a
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(2), 0); // a
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(3), 1); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
|
||||
|
||||
// Change a to conflict with c => a gets placed after c
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(a, 3);
|
||||
linesLayout.changeWhitespace(a, 3, 1);
|
||||
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), c); // 3
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), a); // 3
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), c); // 3
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), a); // 3
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(1), 0); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(2), 0); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(3), 0); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(1), 0); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(2), 0); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(3), 0); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
|
||||
|
||||
// Make a no-op
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(c, 3);
|
||||
linesLayout.changeWhitespace(c, 3, 1);
|
||||
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), c); // 3
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), a); // 3
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), c); // 3
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), a); // 3
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 3);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(1), 0); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(2), 0); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(3), 0); // c
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(1), 0); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(2), 0); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(3), 0); // c
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(4), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(5), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(6), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(7), 2); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
|
||||
|
||||
|
||||
// Conflict c with b => c gets placed after b
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(c, 7);
|
||||
linesLayout.changeWhitespace(c, 7, 1);
|
||||
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 3
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), b); // 7
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(1), 7);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), c); // 7
|
||||
assert.equal(whitespaceComputer.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 3
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(0), 3);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), b); // 7
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(1), 7);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), c); // 7
|
||||
assert.equal(linesLayout.getAfterLineNumberForWhitespaceIndex(2), 7);
|
||||
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(1), 0); // a
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(2), 0); // a
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(3), 0); // a
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(4), 1); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(5), 1); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(6), 1); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(7), 1); // b
|
||||
assert.equal(whitespaceComputer.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(1), 0); // a
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(2), 0); // a
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(3), 0); // a
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(4), 1); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(5), 1); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(6), 1); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(7), 1); // b
|
||||
assert.equal(linesLayout.getFirstWhitespaceIndexAfterLineNumber(8), -1); // --
|
||||
});
|
||||
|
||||
|
||||
test('WhitespaceComputer Bug', () => {
|
||||
let whitespaceComputer = new WhitespaceComputer();
|
||||
const linesLayout = new LinesLayout(100, 20);
|
||||
|
||||
let a = whitespaceComputer.insertWhitespace(0, 0, 1, 0);
|
||||
let b = whitespaceComputer.insertWhitespace(7, 0, 1, 0);
|
||||
const a = linesLayout.insertWhitespace(0, 0, 1, 0);
|
||||
const b = linesLayout.insertWhitespace(7, 0, 1, 0);
|
||||
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), b); // 7
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), b); // 7
|
||||
|
||||
let c = whitespaceComputer.insertWhitespace(3, 0, 1, 0);
|
||||
const c = linesLayout.insertWhitespace(3, 0, 1, 0);
|
||||
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), c); // 3
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), b); // 7
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), c); // 3
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), b); // 7
|
||||
|
||||
let d = whitespaceComputer.insertWhitespace(2, 0, 1, 0);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), d); // 2
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), c); // 3
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(3), b); // 7
|
||||
const d = linesLayout.insertWhitespace(2, 0, 1, 0);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), d); // 2
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), c); // 3
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(3), b); // 7
|
||||
|
||||
let e = whitespaceComputer.insertWhitespace(8, 0, 1, 0);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), d); // 2
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), c); // 3
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(3), b); // 7
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(4), e); // 8
|
||||
const e = linesLayout.insertWhitespace(8, 0, 1, 0);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), d); // 2
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), c); // 3
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(3), b); // 7
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(4), e); // 8
|
||||
|
||||
let f = whitespaceComputer.insertWhitespace(11, 0, 1, 0);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), d); // 2
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), c); // 3
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(3), b); // 7
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(4), e); // 8
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(5), f); // 11
|
||||
const f = linesLayout.insertWhitespace(11, 0, 1, 0);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), d); // 2
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), c); // 3
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(3), b); // 7
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(4), e); // 8
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(5), f); // 11
|
||||
|
||||
let g = whitespaceComputer.insertWhitespace(10, 0, 1, 0);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), d); // 2
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), c); // 3
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(3), b); // 7
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(4), e); // 8
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(5), g); // 10
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(6), f); // 11
|
||||
const g = linesLayout.insertWhitespace(10, 0, 1, 0);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), d); // 2
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), c); // 3
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(3), b); // 7
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(4), e); // 8
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(5), g); // 10
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(6), f); // 11
|
||||
|
||||
let h = whitespaceComputer.insertWhitespace(0, 0, 1, 0);
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), h); // 0
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(2), d); // 2
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(3), c); // 3
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(4), b); // 7
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(5), e); // 8
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(6), g); // 10
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(7), f); // 11
|
||||
const h = linesLayout.insertWhitespace(0, 0, 1, 0);
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), h); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), d); // 2
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(3), c); // 3
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(4), b); // 7
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(5), e); // 8
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(6), g); // 10
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(7), f); // 11
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user