mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-09 09:42:34 -05:00
Merge from vscode a5cf1da01d5db3d2557132be8d30f89c38019f6c (#8525)
* Merge from vscode a5cf1da01d5db3d2557132be8d30f89c38019f6c * remove files we don't want * fix hygiene * update distro * update distro * fix hygiene * fix strict nulls * distro * distro * fix tests * fix tests * add another edit * fix viewlet icon * fix azure dialog * fix some padding * fix more padding issues
This commit is contained in:
@@ -755,7 +755,7 @@ suite('Editor Model - TextModel', () => {
|
||||
assert.deepEqual(actual, expected, `validateRange for ${input}, got ${actual}, expected ${expected}`);
|
||||
}
|
||||
|
||||
test('combining marks', () => {
|
||||
test('grapheme breaking', () => {
|
||||
const m = TextModel.createFromString([
|
||||
'abcabc',
|
||||
'ãããããã',
|
||||
|
||||
@@ -202,4 +202,11 @@ suite('Editor Modes - Link Computer', () => {
|
||||
' http://[::1]:5000/connect/token '
|
||||
);
|
||||
});
|
||||
|
||||
test('issue #70254: bold links dont open in markdown file using editor mode with ctrl + click', () => {
|
||||
assertLink(
|
||||
'2. Navigate to **https://portal.azure.com**',
|
||||
' https://portal.azure.com '
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -6,6 +6,7 @@ import * as assert from 'assert';
|
||||
import { CharacterPair, IndentAction } from 'vs/editor/common/modes/languageConfiguration';
|
||||
import { OnEnterSupport } from 'vs/editor/common/modes/supports/onEnter';
|
||||
import { javascriptOnEnterRules } from 'vs/editor/test/common/modes/supports/javascriptOnEnterRules';
|
||||
import { EditorAutoIndentStrategy } from 'vs/editor/common/config/editorOptions';
|
||||
|
||||
suite('OnEnter', () => {
|
||||
|
||||
@@ -18,7 +19,7 @@ suite('OnEnter', () => {
|
||||
brackets: brackets
|
||||
});
|
||||
let testIndentAction = (beforeText: string, afterText: string, expected: IndentAction) => {
|
||||
let actual = support.onEnter('', beforeText, afterText);
|
||||
let actual = support.onEnter(EditorAutoIndentStrategy.Advanced, '', beforeText, afterText);
|
||||
if (expected === IndentAction.None) {
|
||||
assert.equal(actual, null);
|
||||
} else {
|
||||
@@ -48,10 +49,10 @@ suite('OnEnter', () => {
|
||||
|
||||
test('uses regExpRules', () => {
|
||||
let support = new OnEnterSupport({
|
||||
regExpRules: javascriptOnEnterRules
|
||||
onEnterRules: javascriptOnEnterRules
|
||||
});
|
||||
let testIndentAction = (oneLineAboveText: string, beforeText: string, afterText: string, expectedIndentAction: IndentAction | null, expectedAppendText: string | null, removeText: number = 0) => {
|
||||
let actual = support.onEnter(oneLineAboveText, beforeText, afterText);
|
||||
let actual = support.onEnter(EditorAutoIndentStrategy.Advanced, oneLineAboveText, beforeText, afterText);
|
||||
if (expectedIndentAction === null) {
|
||||
assert.equal(actual, null, 'isNull:' + beforeText);
|
||||
} else {
|
||||
@@ -132,4 +133,4 @@ suite('OnEnter', () => {
|
||||
testIndentAction('', ' * test() {', '', IndentAction.Indent, null, 0);
|
||||
testIndentAction(' ', ' * test() {', '', IndentAction.Indent, null, 0);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -109,9 +109,9 @@ suite('Editor Modes - textToHtmlTokenizer', () => {
|
||||
[
|
||||
'<div>',
|
||||
'<span style="color: #ff0000;font-style: italic;font-weight: bold;">Ciao</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #00ff00;">hello</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #0000ff;text-decoration: underline;">world!</span>',
|
||||
'</div>'
|
||||
].join('')
|
||||
@@ -122,9 +122,9 @@ suite('Editor Modes - textToHtmlTokenizer', () => {
|
||||
[
|
||||
'<div>',
|
||||
'<span style="color: #ff0000;font-style: italic;font-weight: bold;">Ciao</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #00ff00;">hello</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #0000ff;text-decoration: underline;">w</span>',
|
||||
'</div>'
|
||||
].join('')
|
||||
@@ -135,9 +135,9 @@ suite('Editor Modes - textToHtmlTokenizer', () => {
|
||||
[
|
||||
'<div>',
|
||||
'<span style="color: #ff0000;font-style: italic;font-weight: bold;">Ciao</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #00ff00;">hello</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'</div>'
|
||||
].join('')
|
||||
);
|
||||
@@ -147,9 +147,9 @@ suite('Editor Modes - textToHtmlTokenizer', () => {
|
||||
[
|
||||
'<div>',
|
||||
'<span style="color: #ff0000;font-style: italic;font-weight: bold;">iao</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #00ff00;">hello</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'</div>'
|
||||
].join('')
|
||||
);
|
||||
@@ -158,9 +158,9 @@ suite('Editor Modes - textToHtmlTokenizer', () => {
|
||||
tokenizeLineToHTML(text, lineTokens, colorMap, 4, 11, 4, true),
|
||||
[
|
||||
'<div>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #00ff00;">hello</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'</div>'
|
||||
].join('')
|
||||
);
|
||||
@@ -170,7 +170,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => {
|
||||
[
|
||||
'<div>',
|
||||
'<span style="color: #00ff00;">hello</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'</div>'
|
||||
].join('')
|
||||
);
|
||||
@@ -241,11 +241,11 @@ suite('Editor Modes - textToHtmlTokenizer', () => {
|
||||
tokenizeLineToHTML(text, lineTokens, colorMap, 0, 21, 4, true),
|
||||
[
|
||||
'<div>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;">  </span>',
|
||||
'<span style="color: #ff0000;font-style: italic;font-weight: bold;">Ciao</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;">   </span>',
|
||||
'<span style="color: #00ff00;">hello</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #0000ff;text-decoration: underline;">world!</span>',
|
||||
'</div>'
|
||||
].join('')
|
||||
@@ -255,11 +255,11 @@ suite('Editor Modes - textToHtmlTokenizer', () => {
|
||||
tokenizeLineToHTML(text, lineTokens, colorMap, 0, 17, 4, true),
|
||||
[
|
||||
'<div>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;">  </span>',
|
||||
'<span style="color: #ff0000;font-style: italic;font-weight: bold;">Ciao</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;">   </span>',
|
||||
'<span style="color: #00ff00;">hello</span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #0000ff;text-decoration: underline;">wo</span>',
|
||||
'</div>'
|
||||
].join('')
|
||||
@@ -269,7 +269,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => {
|
||||
tokenizeLineToHTML(text, lineTokens, colorMap, 0, 3, 4, true),
|
||||
[
|
||||
'<div>',
|
||||
'<span style="color: #000000;"> </span>',
|
||||
'<span style="color: #000000;">  </span>',
|
||||
'<span style="color: #ff0000;font-style: italic;font-weight: bold;">C</span>',
|
||||
'</div>'
|
||||
].join('')
|
||||
|
||||
@@ -167,9 +167,8 @@ suite('EditorSimpleWorker', () => {
|
||||
assert.ok(false);
|
||||
return;
|
||||
}
|
||||
const { suggestions } = result;
|
||||
assert.equal(suggestions.length, 1);
|
||||
assert.equal(suggestions[0].label, 'foobar');
|
||||
assert.equal(result.length, 1);
|
||||
assert.equal(result, 'foobar');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ import { ModelServiceImpl } from 'vs/editor/common/services/modelServiceImpl';
|
||||
import { ITextResourcePropertiesService } from 'vs/editor/common/services/resourceConfiguration';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
|
||||
import { TestThemeService } from 'vs/platform/theme/test/common/testThemeService';
|
||||
|
||||
const GENERATE_TESTS = false;
|
||||
|
||||
@@ -27,7 +28,7 @@ suite('ModelService', () => {
|
||||
configService.setUserConfiguration('files', { 'eol': '\n' });
|
||||
configService.setUserConfiguration('files', { 'eol': '\r\n' }, URI.file(platform.isWindows ? 'c:\\myroot' : '/myroot'));
|
||||
|
||||
modelService = new ModelServiceImpl(configService, new TestTextResourcePropertiesService(configService));
|
||||
modelService = new ModelServiceImpl(configService, new TestTextResourcePropertiesService(configService), new TestThemeService());
|
||||
});
|
||||
|
||||
teardown(() => {
|
||||
|
||||
@@ -702,12 +702,12 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => {
|
||||
decorationsHeight: 800,
|
||||
|
||||
contentLeft: 10,
|
||||
contentWidth: 901,
|
||||
contentWidth: 893,
|
||||
contentHeight: 800,
|
||||
|
||||
renderMinimap: RenderMinimap.Text,
|
||||
minimapLeft: 911,
|
||||
minimapWidth: 89,
|
||||
minimapLeft: 903,
|
||||
minimapWidth: 97,
|
||||
viewportColumn: 89,
|
||||
|
||||
verticalScrollbarWidth: 0,
|
||||
@@ -760,12 +760,12 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => {
|
||||
decorationsHeight: 800,
|
||||
|
||||
contentLeft: 10,
|
||||
contentWidth: 901,
|
||||
contentWidth: 893,
|
||||
contentHeight: 800,
|
||||
|
||||
renderMinimap: RenderMinimap.Text,
|
||||
minimapLeft: 911,
|
||||
minimapWidth: 89,
|
||||
minimapLeft: 903,
|
||||
minimapWidth: 97,
|
||||
viewportColumn: 89,
|
||||
|
||||
verticalScrollbarWidth: 0,
|
||||
@@ -818,13 +818,13 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => {
|
||||
decorationsHeight: 800,
|
||||
|
||||
contentLeft: 10,
|
||||
contentWidth: 943,
|
||||
contentWidth: 935,
|
||||
contentHeight: 800,
|
||||
|
||||
renderMinimap: RenderMinimap.Text,
|
||||
minimapLeft: 953,
|
||||
minimapWidth: 47,
|
||||
viewportColumn: 94,
|
||||
minimapLeft: 945,
|
||||
minimapWidth: 55,
|
||||
viewportColumn: 93,
|
||||
|
||||
verticalScrollbarWidth: 0,
|
||||
horizontalScrollbarHeight: 0,
|
||||
@@ -863,26 +863,26 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => {
|
||||
width: 1000,
|
||||
height: 800,
|
||||
|
||||
glyphMarginLeft: 47,
|
||||
glyphMarginLeft: 55,
|
||||
glyphMarginWidth: 0,
|
||||
glyphMarginHeight: 800,
|
||||
|
||||
lineNumbersLeft: 47,
|
||||
lineNumbersLeft: 55,
|
||||
lineNumbersWidth: 0,
|
||||
lineNumbersHeight: 800,
|
||||
|
||||
decorationsLeft: 47,
|
||||
decorationsLeft: 55,
|
||||
decorationsWidth: 10,
|
||||
decorationsHeight: 800,
|
||||
|
||||
contentLeft: 57,
|
||||
contentWidth: 943,
|
||||
contentLeft: 65,
|
||||
contentWidth: 935,
|
||||
contentHeight: 800,
|
||||
|
||||
renderMinimap: RenderMinimap.Text,
|
||||
minimapLeft: 0,
|
||||
minimapWidth: 47,
|
||||
viewportColumn: 94,
|
||||
minimapWidth: 55,
|
||||
viewportColumn: 93,
|
||||
|
||||
verticalScrollbarWidth: 0,
|
||||
horizontalScrollbarHeight: 0,
|
||||
@@ -934,12 +934,12 @@ suite('Editor ViewLayout - EditorLayoutProvider', () => {
|
||||
decorationsHeight: 422,
|
||||
|
||||
contentLeft: 92,
|
||||
contentWidth: 1026,
|
||||
contentWidth: 1018,
|
||||
contentHeight: 422,
|
||||
|
||||
renderMinimap: RenderMinimap.Text,
|
||||
minimapLeft: 1104,
|
||||
minimapWidth: 83,
|
||||
minimapLeft: 1096,
|
||||
minimapWidth: 91,
|
||||
viewportColumn: 83,
|
||||
|
||||
verticalScrollbarWidth: 14,
|
||||
|
||||
@@ -3,10 +3,28 @@
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as assert from 'assert';
|
||||
import { LinesLayout } from 'vs/editor/common/viewLayout/linesLayout';
|
||||
import { LinesLayout, EditorWhitespace } from 'vs/editor/common/viewLayout/linesLayout';
|
||||
|
||||
suite('Editor ViewLayout - LinesLayout', () => {
|
||||
|
||||
function insertWhitespace(linesLayout: LinesLayout, afterLineNumber: number, ordinal: number, heightInPx: number, minWidth: number): string {
|
||||
return linesLayout.changeWhitespace((accessor) => {
|
||||
return accessor.insertWhitespace(afterLineNumber, ordinal, heightInPx, minWidth);
|
||||
});
|
||||
}
|
||||
|
||||
function changeOneWhitespace(linesLayout: LinesLayout, id: string, newAfterLineNumber: number, newHeight: number): void {
|
||||
linesLayout.changeWhitespace((accessor) => {
|
||||
accessor.changeOneWhitespace(id, newAfterLineNumber, newHeight);
|
||||
});
|
||||
}
|
||||
|
||||
function removeWhitespace(linesLayout: LinesLayout, id: string): void {
|
||||
linesLayout.changeWhitespace((accessor) => {
|
||||
accessor.removeWhitespace(id);
|
||||
});
|
||||
}
|
||||
|
||||
test('LinesLayout 1', () => {
|
||||
|
||||
// Start off with 10 lines
|
||||
@@ -39,7 +57,7 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
assert.equal(linesLayout.getLineNumberAtOrAfterVerticalOffset(29), 3);
|
||||
|
||||
// Add whitespace of height 5px after 2nd line
|
||||
linesLayout.insertWhitespace(2, 0, 5, 0);
|
||||
insertWhitespace(linesLayout, 2, 0, 5, 0);
|
||||
// lines: [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
// whitespace: a(2,5)
|
||||
assert.equal(linesLayout.getLinesTotalHeight(), 105);
|
||||
@@ -63,8 +81,8 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
assert.equal(linesLayout.getLineNumberAtOrAfterVerticalOffset(105), 10);
|
||||
|
||||
// Add two more whitespaces of height 5px
|
||||
linesLayout.insertWhitespace(3, 0, 5, 0);
|
||||
linesLayout.insertWhitespace(4, 0, 5, 0);
|
||||
insertWhitespace(linesLayout, 3, 0, 5, 0);
|
||||
insertWhitespace(linesLayout, 4, 0, 5, 0);
|
||||
// lines: [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
// whitespace: a(2,5), b(3, 5), c(4, 5)
|
||||
assert.equal(linesLayout.getLinesTotalHeight(), 115);
|
||||
@@ -120,7 +138,7 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
|
||||
// Start off with 10 lines and one whitespace after line 2, of height 5
|
||||
let linesLayout = new LinesLayout(10, 1);
|
||||
let a = linesLayout.insertWhitespace(2, 0, 5, 0);
|
||||
let a = insertWhitespace(linesLayout, 2, 0, 5, 0);
|
||||
|
||||
// 10 lines
|
||||
// whitespace: - a(2,5)
|
||||
@@ -139,7 +157,7 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
// Change whitespace height
|
||||
// 10 lines
|
||||
// whitespace: - a(2,10)
|
||||
linesLayout.changeWhitespace(a, 2, 10);
|
||||
changeOneWhitespace(linesLayout, a, 2, 10);
|
||||
assert.equal(linesLayout.getLinesTotalHeight(), 20);
|
||||
assert.equal(linesLayout.getVerticalOffsetForLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getVerticalOffsetForLineNumber(2), 1);
|
||||
@@ -155,7 +173,7 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
// Change whitespace position
|
||||
// 10 lines
|
||||
// whitespace: - a(5,10)
|
||||
linesLayout.changeWhitespace(a, 5, 10);
|
||||
changeOneWhitespace(linesLayout, a, 5, 10);
|
||||
assert.equal(linesLayout.getLinesTotalHeight(), 20);
|
||||
assert.equal(linesLayout.getVerticalOffsetForLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getVerticalOffsetForLineNumber(2), 1);
|
||||
@@ -200,7 +218,7 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
|
||||
// Remove whitespace
|
||||
// 10 lines
|
||||
linesLayout.removeWhitespace(a);
|
||||
removeWhitespace(linesLayout, a);
|
||||
assert.equal(linesLayout.getLinesTotalHeight(), 10);
|
||||
assert.equal(linesLayout.getVerticalOffsetForLineNumber(1), 0);
|
||||
assert.equal(linesLayout.getVerticalOffsetForLineNumber(2), 1);
|
||||
@@ -216,7 +234,7 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
|
||||
test('LinesLayout getLineNumberAtOrAfterVerticalOffset', () => {
|
||||
let linesLayout = new LinesLayout(10, 1);
|
||||
linesLayout.insertWhitespace(6, 0, 10, 0);
|
||||
insertWhitespace(linesLayout, 6, 0, 10, 0);
|
||||
|
||||
// 10 lines
|
||||
// whitespace: - a(6,10)
|
||||
@@ -265,7 +283,7 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
|
||||
test('LinesLayout getCenteredLineInViewport', () => {
|
||||
let linesLayout = new LinesLayout(10, 1);
|
||||
linesLayout.insertWhitespace(6, 0, 10, 0);
|
||||
insertWhitespace(linesLayout, 6, 0, 10, 0);
|
||||
|
||||
// 10 lines
|
||||
// whitespace: - a(6,10)
|
||||
@@ -348,7 +366,7 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
|
||||
test('LinesLayout getLinesViewportData 1', () => {
|
||||
let linesLayout = new LinesLayout(10, 10);
|
||||
linesLayout.insertWhitespace(6, 0, 100, 0);
|
||||
insertWhitespace(linesLayout, 6, 0, 100, 0);
|
||||
|
||||
// 10 lines
|
||||
// whitespace: - a(6,100)
|
||||
@@ -479,11 +497,10 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
assert.deepEqual(viewportData.relativeVerticalOffset, [160, 170, 180, 190]);
|
||||
});
|
||||
|
||||
|
||||
test('LinesLayout getLinesViewportData 2 & getWhitespaceViewportData', () => {
|
||||
let linesLayout = new LinesLayout(10, 10);
|
||||
let a = linesLayout.insertWhitespace(6, 0, 100, 0);
|
||||
let b = linesLayout.insertWhitespace(7, 0, 50, 0);
|
||||
let a = insertWhitespace(linesLayout, 6, 0, 100, 0);
|
||||
let b = insertWhitespace(linesLayout, 7, 0, 50, 0);
|
||||
|
||||
// 10 lines
|
||||
// whitespace: - a(6,100), b(7, 50)
|
||||
@@ -553,8 +570,8 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
|
||||
test('LinesLayout getWhitespaceAtVerticalOffset', () => {
|
||||
let linesLayout = new LinesLayout(10, 10);
|
||||
let a = linesLayout.insertWhitespace(6, 0, 100, 0);
|
||||
let b = linesLayout.insertWhitespace(7, 0, 50, 0);
|
||||
let a = insertWhitespace(linesLayout, 6, 0, 100, 0);
|
||||
let b = insertWhitespace(linesLayout, 7, 0, 50, 0);
|
||||
|
||||
let whitespace = linesLayout.getWhitespaceAtVerticalOffset(0);
|
||||
assert.equal(whitespace, null);
|
||||
@@ -592,4 +609,536 @@ suite('Editor ViewLayout - LinesLayout', () => {
|
||||
whitespace = linesLayout.getWhitespaceAtVerticalOffset(220);
|
||||
assert.equal(whitespace, null);
|
||||
});
|
||||
|
||||
test('LinesLayout', () => {
|
||||
|
||||
const linesLayout = new LinesLayout(100, 20);
|
||||
|
||||
// Insert a whitespace after line number 2, of height 10
|
||||
const a = insertWhitespace(linesLayout, 2, 0, 10, 0);
|
||||
// whitespaces: a(2, 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 = insertWhitespace(linesLayout, 2, 0, 20, 0);
|
||||
// whitespaces: a(2, 10), b(2, 20)
|
||||
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
|
||||
changeOneWhitespace(linesLayout, b, 2, 30);
|
||||
// whitespaces: a(2, 10), b(2, 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), 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
|
||||
removeWhitespace(linesLayout, b);
|
||||
// whitespaces: a(2, 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 = insertWhitespace(linesLayout, 0, 0, 50, 0);
|
||||
// whitespaces: b(0, 50), a(2, 10)
|
||||
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
|
||||
insertWhitespace(linesLayout, 4, 0, 20, 0);
|
||||
// whitespaces: b(0, 50), a(2, 10), c(4, 20)
|
||||
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
|
||||
insertWhitespace(linesLayout, 3, 0, 30, 0);
|
||||
// whitespaces: b(0, 50), a(2, 10), d(3, 30), c(4, 20)
|
||||
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
|
||||
changeOneWhitespace(linesLayout, a, 2, 100);
|
||||
// whitespaces: b(0, 50), a(2, 100), d(3, 30), c(4, 20)
|
||||
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
|
||||
removeWhitespace(linesLayout, a);
|
||||
// whitespaces: b(0, 50), d(3, 30), c(4, 20)
|
||||
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
|
||||
removeWhitespace(linesLayout, b);
|
||||
// whitespaces: d(3, 30), c(4, 20)
|
||||
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
|
||||
linesLayout.onLinesDeleted(1, 1);
|
||||
// whitespaces: d(2, 30), c(3, 20)
|
||||
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
|
||||
linesLayout.onLinesInserted(1, 1);
|
||||
// whitespaces: d(3, 30), c(4, 20)
|
||||
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
|
||||
linesLayout.onLinesDeleted(4, 4);
|
||||
// whitespaces: d(3, 30), c(3, 20)
|
||||
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('LinesLayout findInsertionIndex', () => {
|
||||
|
||||
const makeInternalWhitespace = (afterLineNumbers: number[], ordinal: number = 0) => {
|
||||
return afterLineNumbers.map((afterLineNumber) => new EditorWhitespace('', afterLineNumber, ordinal, 0, 0));
|
||||
};
|
||||
|
||||
let arr: EditorWhitespace[];
|
||||
|
||||
arr = makeInternalWhitespace([]);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 0);
|
||||
|
||||
arr = makeInternalWhitespace([1]);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 1);
|
||||
|
||||
arr = makeInternalWhitespace([1, 3]);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 3, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 4, 0), 2);
|
||||
|
||||
arr = makeInternalWhitespace([1, 3, 5]);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 3, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 4, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 5, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 6, 0), 3);
|
||||
|
||||
arr = makeInternalWhitespace([1, 3, 5], 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 3, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 4, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 5, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 6, 0), 3);
|
||||
|
||||
arr = makeInternalWhitespace([1, 3, 5, 7]);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 3, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 4, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 5, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 6, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 7, 0), 4);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 8, 0), 4);
|
||||
|
||||
arr = makeInternalWhitespace([1, 3, 5, 7, 9]);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 3, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 4, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 5, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 6, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 7, 0), 4);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 8, 0), 4);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 9, 0), 5);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 10, 0), 5);
|
||||
|
||||
arr = makeInternalWhitespace([1, 3, 5, 7, 9, 11]);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 3, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 4, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 5, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 6, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 7, 0), 4);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 8, 0), 4);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 9, 0), 5);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 10, 0), 5);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 11, 0), 6);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 12, 0), 6);
|
||||
|
||||
arr = makeInternalWhitespace([1, 3, 5, 7, 9, 11, 13]);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 3, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 4, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 5, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 6, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 7, 0), 4);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 8, 0), 4);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 9, 0), 5);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 10, 0), 5);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 11, 0), 6);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 12, 0), 6);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 13, 0), 7);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 14, 0), 7);
|
||||
|
||||
arr = makeInternalWhitespace([1, 3, 5, 7, 9, 11, 13, 15]);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 0, 0), 0);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 1, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 2, 0), 1);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 3, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 4, 0), 2);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 5, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 6, 0), 3);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 7, 0), 4);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 8, 0), 4);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 9, 0), 5);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 10, 0), 5);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 11, 0), 6);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 12, 0), 6);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 13, 0), 7);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 14, 0), 7);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 15, 0), 8);
|
||||
assert.equal(LinesLayout.findInsertionIndex(arr, 16, 0), 8);
|
||||
});
|
||||
|
||||
test('LinesLayout changeWhitespaceAfterLineNumber & getFirstWhitespaceIndexAfterLineNumber', () => {
|
||||
const linesLayout = new LinesLayout(100, 20);
|
||||
|
||||
const a = insertWhitespace(linesLayout, 0, 0, 1, 0);
|
||||
const b = insertWhitespace(linesLayout, 7, 0, 1, 0);
|
||||
const c = insertWhitespace(linesLayout, 3, 0, 1, 0);
|
||||
|
||||
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(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
|
||||
changeOneWhitespace(linesLayout, a, 1, 1);
|
||||
|
||||
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(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
|
||||
changeOneWhitespace(linesLayout, a, 2, 1);
|
||||
|
||||
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(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
|
||||
changeOneWhitespace(linesLayout, a, 3, 1);
|
||||
|
||||
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(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
|
||||
changeOneWhitespace(linesLayout, c, 3, 1);
|
||||
|
||||
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(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
|
||||
changeOneWhitespace(linesLayout, c, 7, 1);
|
||||
|
||||
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(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('LinesLayout Bug', () => {
|
||||
const linesLayout = new LinesLayout(100, 20);
|
||||
|
||||
const a = insertWhitespace(linesLayout, 0, 0, 1, 0);
|
||||
const b = insertWhitespace(linesLayout, 7, 0, 1, 0);
|
||||
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), b); // 7
|
||||
|
||||
const c = insertWhitespace(linesLayout, 3, 0, 1, 0);
|
||||
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(1), c); // 3
|
||||
assert.equal(linesLayout.getIdForWhitespaceIndex(2), b); // 7
|
||||
|
||||
const d = insertWhitespace(linesLayout, 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
|
||||
|
||||
const e = insertWhitespace(linesLayout, 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
|
||||
|
||||
const f = insertWhitespace(linesLayout, 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
|
||||
|
||||
const g = insertWhitespace(linesLayout, 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
|
||||
|
||||
const h = insertWhitespace(linesLayout, 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
|
||||
});
|
||||
});
|
||||
|
||||
@@ -189,8 +189,8 @@ suite('viewLineRenderer.renderLine', () => {
|
||||
createPart(48, 12),
|
||||
]);
|
||||
let expectedOutput = [
|
||||
'<span class="vs-whitespace" style="width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="mtk2">export</span>',
|
||||
'<span class="mtk3">\u00a0</span>',
|
||||
'<span class="mtk4">class</span>',
|
||||
@@ -201,8 +201,8 @@ suite('viewLineRenderer.renderLine', () => {
|
||||
'<span class="mtk9">\u00a0</span>',
|
||||
'<span class="mtk10">//\u00a0</span>',
|
||||
'<span class="mtk11">http://test.com</span>',
|
||||
'<span class="vs-whitespace" style="width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="width:30px">\u00b7\u00b7\u00b7</span>'
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:30px">\u00b7\u00b7\u00b7</span>'
|
||||
].join('');
|
||||
let expectedOffsetsArr = [
|
||||
[0],
|
||||
@@ -867,10 +867,10 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
null,
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="mtk2">He</span>',
|
||||
'<span class="mtk3">llo\u00a0world!</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
);
|
||||
@@ -889,12 +889,12 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
null,
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="mtk2">He</span>',
|
||||
'<span class="mtk3">llo\u00a0world!</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
);
|
||||
@@ -913,11 +913,11 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
null,
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="mtk2">He</span>',
|
||||
'<span class="mtk3">llo\u00a0world!</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
);
|
||||
@@ -936,15 +936,15 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
null,
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u2192\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u2192\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="mtk2">He</span>',
|
||||
'<span class="mtk3">llo\u00a0world!</span>',
|
||||
'<span class="vs-whitespace" style="width:20px">\u00b7\uffeb</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u2192\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\uffeb</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:20px">\u00b7\uffeb</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u2192\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\uffeb</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
);
|
||||
@@ -965,13 +965,13 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
[
|
||||
'<span>',
|
||||
'<span class="">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="mtk2">He</span>',
|
||||
'<span class="mtk3">llo\u00a0world!</span>',
|
||||
'<span class="vs-whitespace" style="width:20px">\u00b7\uffeb</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u2192\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\uffeb</span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:20px">\u00b7\uffeb</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u2192\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\uffeb</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
);
|
||||
@@ -1016,11 +1016,11 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
[
|
||||
'<span>',
|
||||
'<span class="mtk1">it</span>',
|
||||
'<span class="vs-whitespace" style="width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="mtk1">it</span>',
|
||||
'<span class="mtk2">\u00a0</span>',
|
||||
'<span class="mtk3">it</span>',
|
||||
'<span class="vs-whitespace" style="width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:20px">\u00b7\u00b7</span>',
|
||||
'<span class="mtk3">it</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
@@ -1041,12 +1041,12 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
null,
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:10px">\u00b7</span>',
|
||||
'<span class="mtk0">Hel</span>',
|
||||
'<span class="mtk1">lo</span>',
|
||||
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:10px">\u00b7</span>',
|
||||
'<span class="mtk2">world!</span>',
|
||||
'<span class="vs-whitespace" style="width:30px">\u2192\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:30px">\u2192\u00a0\u00a0</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
);
|
||||
@@ -1088,12 +1088,12 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
[new LineRange(0, 14)],
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:10px">\u00b7</span>',
|
||||
'<span class="mtk0">Hel</span>',
|
||||
'<span class="mtk1">lo</span>',
|
||||
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:10px">\u00b7</span>',
|
||||
'<span class="mtk2">world!</span>',
|
||||
'<span class="vs-whitespace" style="width:30px">\u2192\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:30px">\u2192\u00a0\u00a0</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
);
|
||||
@@ -1113,7 +1113,7 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
[new LineRange(0, 5)],
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:10px">\u00b7</span>',
|
||||
'<span class="mtk0">Hel</span>',
|
||||
'<span class="mtk1">lo</span>',
|
||||
'<span class="mtk2">\u00a0world!\u00a0\u00a0\u00a0</span>',
|
||||
@@ -1137,11 +1137,11 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
[new LineRange(0, 5), new LineRange(9, 14)],
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:10px">\u00b7</span>',
|
||||
'<span class="mtk0">Hel</span>',
|
||||
'<span class="mtk1">lo</span>',
|
||||
'<span class="mtk2">\u00a0world!</span>',
|
||||
'<span class="vs-whitespace" style="width:30px">\u2192\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:30px">\u2192\u00a0\u00a0</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
);
|
||||
@@ -1162,11 +1162,11 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
[new LineRange(9, 14), new LineRange(0, 5)],
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:10px">\u00b7</span>',
|
||||
'<span class="mtk0">Hel</span>',
|
||||
'<span class="mtk1">lo</span>',
|
||||
'<span class="mtk2">\u00a0world!</span>',
|
||||
'<span class="vs-whitespace" style="width:30px">\u2192\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:30px">\u2192\u00a0\u00a0</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
);
|
||||
@@ -1184,9 +1184,9 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
[new LineRange(0, 1), new LineRange(1, 2), new LineRange(2, 3)],
|
||||
[
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:10px">\u00b7</span>',
|
||||
'<span class="mtk0">*</span>',
|
||||
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:10px">\u00b7</span>',
|
||||
'<span class="mtk0">S</span>',
|
||||
'</span>',
|
||||
].join('')
|
||||
@@ -1293,7 +1293,7 @@ suite('viewLineRenderer.renderLine 2', () => {
|
||||
|
||||
let expected = [
|
||||
'<span>',
|
||||
'<span class="vs-whitespace" style="width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="vs-whitespace" style="display:inline-block;width:40px">\u2192\u00a0\u00a0\u00a0</span>',
|
||||
'<span class="mtk3 before">b</span>',
|
||||
'<span class="mtk3">la</span>',
|
||||
'</span>'
|
||||
|
||||
@@ -1,558 +0,0 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import * as assert from 'assert';
|
||||
import { WhitespaceComputer } from 'vs/editor/common/viewLayout/whitespaceComputer';
|
||||
|
||||
suite('Editor ViewLayout - WhitespaceComputer', () => {
|
||||
|
||||
test('WhitespaceComputer', () => {
|
||||
|
||||
let whitespaceComputer = new WhitespaceComputer();
|
||||
|
||||
// Insert a whitespace after line number 2, of height 10
|
||||
let a = whitespaceComputer.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);
|
||||
|
||||
// Insert a whitespace again after line number 2, of height 20
|
||||
let b = whitespaceComputer.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);
|
||||
|
||||
// Change last inserted whitespace height to 30
|
||||
whitespaceComputer.changeWhitespaceHeight(b, 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);
|
||||
|
||||
// Remove last inserted whitespace
|
||||
whitespaceComputer.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);
|
||||
|
||||
// Add a whitespace before the first line of height 50
|
||||
b = whitespaceComputer.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);
|
||||
|
||||
// Add a whitespace after line 4 of height 20
|
||||
whitespaceComputer.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);
|
||||
|
||||
// Add a whitespace after line 3 of height 30
|
||||
whitespaceComputer.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);
|
||||
|
||||
// Change whitespace after line 2 to height of 100
|
||||
whitespaceComputer.changeWhitespaceHeight(a, 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);
|
||||
|
||||
// Remove whitespace after line 2
|
||||
whitespaceComputer.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);
|
||||
|
||||
// Remove whitespace before line 1
|
||||
whitespaceComputer.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);
|
||||
|
||||
// Delete line 1
|
||||
whitespaceComputer.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);
|
||||
|
||||
// Insert a line before line 1
|
||||
whitespaceComputer.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);
|
||||
|
||||
// Delete line 4
|
||||
whitespaceComputer.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);
|
||||
});
|
||||
|
||||
test('WhitespaceComputer findInsertionIndex', () => {
|
||||
|
||||
let makeArray = (size: number, fillValue: number) => {
|
||||
let r: number[] = [];
|
||||
for (let i = 0; i < size; i++) {
|
||||
r[i] = fillValue;
|
||||
}
|
||||
return r;
|
||||
};
|
||||
|
||||
let arr: number[];
|
||||
let ordinals: number[];
|
||||
|
||||
arr = [];
|
||||
ordinals = makeArray(arr.length, 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 0);
|
||||
|
||||
arr = [1];
|
||||
ordinals = makeArray(arr.length, 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 1);
|
||||
|
||||
arr = [1, 3];
|
||||
ordinals = makeArray(arr.length, 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 3, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 4, ordinals, 0), 2);
|
||||
|
||||
arr = [1, 3, 5];
|
||||
ordinals = makeArray(arr.length, 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 3, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 4, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 5, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 6, ordinals, 0), 3);
|
||||
|
||||
arr = [1, 3, 5];
|
||||
ordinals = makeArray(arr.length, 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 3, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 4, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 5, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 6, ordinals, 0), 3);
|
||||
|
||||
arr = [1, 3, 5, 7];
|
||||
ordinals = makeArray(arr.length, 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 3, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 4, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 5, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 6, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 7, ordinals, 0), 4);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 8, ordinals, 0), 4);
|
||||
|
||||
arr = [1, 3, 5, 7, 9];
|
||||
ordinals = makeArray(arr.length, 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 3, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 4, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 5, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 6, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 7, ordinals, 0), 4);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 8, ordinals, 0), 4);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 9, ordinals, 0), 5);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 10, ordinals, 0), 5);
|
||||
|
||||
arr = [1, 3, 5, 7, 9, 11];
|
||||
ordinals = makeArray(arr.length, 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 3, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 4, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 5, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 6, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 7, ordinals, 0), 4);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 8, ordinals, 0), 4);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 9, ordinals, 0), 5);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 10, ordinals, 0), 5);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 11, ordinals, 0), 6);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 12, ordinals, 0), 6);
|
||||
|
||||
arr = [1, 3, 5, 7, 9, 11, 13];
|
||||
ordinals = makeArray(arr.length, 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 3, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 4, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 5, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 6, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 7, ordinals, 0), 4);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 8, ordinals, 0), 4);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 9, ordinals, 0), 5);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 10, ordinals, 0), 5);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 11, ordinals, 0), 6);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 12, ordinals, 0), 6);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 13, ordinals, 0), 7);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 14, ordinals, 0), 7);
|
||||
|
||||
arr = [1, 3, 5, 7, 9, 11, 13, 15];
|
||||
ordinals = makeArray(arr.length, 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 0, ordinals, 0), 0);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 1, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 2, ordinals, 0), 1);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 3, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 4, ordinals, 0), 2);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 5, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 6, ordinals, 0), 3);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 7, ordinals, 0), 4);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 8, ordinals, 0), 4);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 9, ordinals, 0), 5);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 10, ordinals, 0), 5);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 11, ordinals, 0), 6);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 12, ordinals, 0), 6);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 13, ordinals, 0), 7);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 14, ordinals, 0), 7);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 15, ordinals, 0), 8);
|
||||
assert.equal(WhitespaceComputer.findInsertionIndex(arr, 16, ordinals, 0), 8);
|
||||
});
|
||||
|
||||
test('WhitespaceComputer changeWhitespaceAfterLineNumber & getFirstWhitespaceIndexAfterLineNumber', () => {
|
||||
let whitespaceComputer = new WhitespaceComputer();
|
||||
|
||||
let a = whitespaceComputer.insertWhitespace(0, 0, 1, 0);
|
||||
let b = whitespaceComputer.insertWhitespace(7, 0, 1, 0);
|
||||
let c = whitespaceComputer.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(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); // --
|
||||
|
||||
// Do not really move a
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(a, 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(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); // --
|
||||
|
||||
|
||||
// Do not really move a
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(a, 2);
|
||||
|
||||
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(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); // --
|
||||
|
||||
|
||||
// Change a to conflict with c => a gets placed after c
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(a, 3);
|
||||
|
||||
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(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); // --
|
||||
|
||||
|
||||
// Make a no-op
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(c, 3);
|
||||
|
||||
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(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); // --
|
||||
|
||||
|
||||
|
||||
// Conflict c with b => c gets placed after b
|
||||
whitespaceComputer.changeWhitespaceAfterLineNumber(c, 7);
|
||||
|
||||
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(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); // --
|
||||
});
|
||||
|
||||
|
||||
test('WhitespaceComputer Bug', () => {
|
||||
let whitespaceComputer = new WhitespaceComputer();
|
||||
|
||||
let a = whitespaceComputer.insertWhitespace(0, 0, 1, 0);
|
||||
let b = whitespaceComputer.insertWhitespace(7, 0, 1, 0);
|
||||
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(0), a); // 0
|
||||
assert.equal(whitespaceComputer.getIdForWhitespaceIndex(1), b); // 7
|
||||
|
||||
let c = whitespaceComputer.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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
});
|
||||
});
|
||||
|
||||
@@ -103,16 +103,6 @@ suite('ViewModelDecorations', () => {
|
||||
|
||||
// view line 2: (1,14 -> 1,24)
|
||||
assert.deepEqual(inlineDecorations1, [
|
||||
{
|
||||
range: new Range(1, 2, 2, 1),
|
||||
inlineClassName: 'i-dec2',
|
||||
type: InlineDecorationType.Regular
|
||||
},
|
||||
{
|
||||
range: new Range(2, 1, 2, 1),
|
||||
inlineClassName: 'a-dec2',
|
||||
type: InlineDecorationType.After
|
||||
},
|
||||
{
|
||||
range: new Range(1, 2, 2, 2),
|
||||
inlineClassName: 'i-dec3',
|
||||
@@ -124,7 +114,7 @@ suite('ViewModelDecorations', () => {
|
||||
type: InlineDecorationType.After
|
||||
},
|
||||
{
|
||||
range: new Range(1, 2, 4, 1),
|
||||
range: new Range(1, 2, 3, 13),
|
||||
inlineClassName: 'i-dec4',
|
||||
type: InlineDecorationType.Regular
|
||||
},
|
||||
@@ -164,7 +154,7 @@ suite('ViewModelDecorations', () => {
|
||||
type: InlineDecorationType.After
|
||||
},
|
||||
{
|
||||
range: new Range(2, 1, 4, 1),
|
||||
range: new Range(2, 1, 3, 13),
|
||||
inlineClassName: 'i-dec8',
|
||||
type: InlineDecorationType.Regular
|
||||
},
|
||||
@@ -199,7 +189,7 @@ suite('ViewModelDecorations', () => {
|
||||
type: InlineDecorationType.After
|
||||
},
|
||||
{
|
||||
range: new Range(2, 3, 4, 1),
|
||||
range: new Range(2, 3, 3, 13),
|
||||
inlineClassName: 'i-dec11',
|
||||
type: InlineDecorationType.Regular
|
||||
},
|
||||
@@ -228,30 +218,45 @@ suite('ViewModelDecorations', () => {
|
||||
// view line 3 (24 -> 36)
|
||||
assert.deepEqual(inlineDecorations2, [
|
||||
{
|
||||
range: new Range(1, 2, 4, 1),
|
||||
range: new Range(1, 2, 3, 13),
|
||||
inlineClassName: 'i-dec4',
|
||||
type: InlineDecorationType.Regular
|
||||
},
|
||||
{
|
||||
range: new Range(3, 13, 3, 13),
|
||||
inlineClassName: 'a-dec4',
|
||||
type: InlineDecorationType.After
|
||||
},
|
||||
{
|
||||
range: new Range(1, 2, 5, 8),
|
||||
inlineClassName: 'i-dec5',
|
||||
type: InlineDecorationType.Regular
|
||||
},
|
||||
{
|
||||
range: new Range(2, 1, 4, 1),
|
||||
range: new Range(2, 1, 3, 13),
|
||||
inlineClassName: 'i-dec8',
|
||||
type: InlineDecorationType.Regular
|
||||
},
|
||||
{
|
||||
range: new Range(3, 13, 3, 13),
|
||||
inlineClassName: 'a-dec8',
|
||||
type: InlineDecorationType.After
|
||||
},
|
||||
{
|
||||
range: new Range(2, 1, 5, 8),
|
||||
inlineClassName: 'i-dec9',
|
||||
type: InlineDecorationType.Regular
|
||||
},
|
||||
{
|
||||
range: new Range(2, 3, 4, 1),
|
||||
range: new Range(2, 3, 3, 13),
|
||||
inlineClassName: 'i-dec11',
|
||||
type: InlineDecorationType.Regular
|
||||
},
|
||||
{
|
||||
range: new Range(3, 13, 3, 13),
|
||||
inlineClassName: 'a-dec11',
|
||||
type: InlineDecorationType.After
|
||||
},
|
||||
{
|
||||
range: new Range(2, 3, 5, 8),
|
||||
inlineClassName: 'i-dec12',
|
||||
|
||||
Reference in New Issue
Block a user