Tests committed

This commit is contained in:
aiday-mar 2022-08-16 14:19:20 +02:00
parent 930de5510d
commit af08b4fdbc

View file

@ -3,14 +3,13 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as assert from 'assert';
import { withAsyncTestCodeEditor, withTestCodeEditor } from 'vs/editor/test/browser/testCodeEditor';
import { withAsyncTestCodeEditor } from 'vs/editor/test/browser/testCodeEditor';
import { StickyScrollController } from 'vs/editor/contrib/stickyScroll/browser/stickyScroll';
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures';
import { createTextModel } from 'vs/editor/test/common/testTextModel';
import { LanguageFeaturesService } from 'vs/editor/common/services/languageFeaturesService';
import { DocumentSymbol, SymbolKind } from 'vs/editor/common/languages';
import { CoreEditingCommands, CoreNavigationCommands } from 'vs/editor/browser/coreCommands';
import { StickyLineCandidate, StickyLineCandidateProvider } from 'vs/editor/contrib/stickyScroll/browser/stickyScrollProvider';
import { EditorOption } from 'vs/editor/common/config/editorOptions';
@ -22,7 +21,7 @@ suite('Sticky Scroll Tests', () => {
[ILanguageFeaturesService, new LanguageFeaturesService()]
);
const model = createTextModel([
const text = [
'function foo() {',
'',
'}',
@ -37,7 +36,7 @@ suite('Sticky Scroll Tests', () => {
'}}',
'function bar() { function insideBar() {}',
'}'
].join('\n'));
].join('\n');
function documentSymbolProviderForTestModel() {
return {
@ -103,29 +102,12 @@ suite('Sticky Scroll Tests', () => {
}
test('Testing the function getCandidateStickyLinesIntersecting', async () => {
const model = createTextModel(text);
await withAsyncTestCodeEditor(model, { serviceCollection }, async (editor, _viewModel, instantiationService) => {
const languageService = instantiationService.get(ILanguageFeaturesService);
languageService.documentSymbolProvider.register('*', documentSymbolProviderForTestModel());
const provider: StickyLineCandidateProvider = new StickyLineCandidateProvider(editor, languageService);
/*
provider.onStickyScrollChange(() => {
console.log('resolve');
});
*/
// TODO: The below times out doesn't return after 5000 ms
/*
await new Promise<void>(resolve => {
const disposable = provider.onStickyScrollChange(() => {
console.log('resolve');
resolve();
});
disposable.dispose();
});
*/
// console.log('before update of provider');
await provider.update();
assert.deepStrictEqual(provider.getCandidateStickyLinesIntersecting({ startLineNumber: 1, endLineNumber: 4 }), [new StickyLineCandidate(1, 2, 1)]);
@ -133,21 +115,26 @@ suite('Sticky Scroll Tests', () => {
assert.deepStrictEqual(provider.getCandidateStickyLinesIntersecting({ startLineNumber: 1, endLineNumber: 13 }), [new StickyLineCandidate(1, 2, 1), new StickyLineCandidate(7, 11, 1), new StickyLineCandidate(9, 11, 2), new StickyLineCandidate(10, 10, 3), new StickyLineCandidate(13, 13, 1)]);
provider.dispose();
model.dispose();
});
});
test('issue #157180: Render the correct line corresponding to the scope definition', async () => {
const model = createTextModel(text);
await withAsyncTestCodeEditor(model, { serviceCollection }, async (editor, _viewModel, instantiationService) => {
const stickyScrollController: StickyScrollController = editor.registerAndInstantiateContribution(StickyScrollController.ID, StickyScrollController);
await stickyScrollController.stickyScrollCandidateProvider.update();
const lineHeight: number = editor.getOption(EditorOption.lineHeight);
const languageService: ILanguageFeaturesService = instantiationService.get(ILanguageFeaturesService);
languageService.documentSymbolProvider.register('*', documentSymbolProviderForTestModel());
let state;
editor.setScrollTop(1);
state = stickyScrollController.getScrollWidgetState();
assert.deepStrictEqual(state.lineNumbers, [1]);
editor.setScrollTop(lineHeight + 1);
state = stickyScrollController.getScrollWidgetState();
assert.deepStrictEqual(state.lineNumbers, [1]);
@ -169,67 +156,49 @@ suite('Sticky Scroll Tests', () => {
assert.deepStrictEqual(state.lineNumbers, [7]);
stickyScrollController.dispose();
});
});
test('issue #157809: Reveal the correct range taking into account the widget height', async () => {
await withAsyncTestCodeEditor(model, { serviceCollection }, async (editor, viewModel, instantiationService) => {
const stickyScrollController = editor.registerAndInstantiateContribution(StickyScrollController.ID, StickyScrollController);
await stickyScrollController.stickyScrollCandidateProvider.update();
const lineHeight = editor.getOption(EditorOption.lineHeight);
const languageService = instantiationService.get(ILanguageFeaturesService);
languageService.documentSymbolProvider.register('*', documentSymbolProviderForTestModel());
// editor.setPosition({ lineNumber: 5, column: 1 }, 'test');
editor.setScrollTop(11 * lineHeight);
/*
CoreNavigationCommands.CreateCursor.runCoreEditorCommand(viewModel, {
source: 'mouse',
position: new Position(2, 1),
viewPosition: new Position(2, 1),
wholeLine: true
});
*/
// CoreNavigationCommands.MoveTo.runCoreEditorCommand(viewModel, { position: new Position(2, 1) });
console.log('visible ranges : ', editor.getVisibleRanges()[0].startLineNumber);
console.log('scroll top : ', Math.floor(editor.getScrollTop() / lineHeight));
console.log('position : ', editor.getPosition().lineNumber);
/*
editor.trigger('keyboard', Handler.Type, { text: 'd' });
CoreNavigationCommands.RevealLine.runCoreEditorCommand(viewModel, { lineNumber: 5, source: undefined });
*/
CoreEditingCommands.Tab.runEditorCommand(null, editor, null);
console.log('visible ranges : ', editor.getVisibleRanges()[0].startLineNumber);
console.log('scroll top : ', Math.floor(editor.getScrollTop() / lineHeight));
console.log('position : ', editor.getPosition().lineNumber);
stickyScrollController.dispose();
stickyScrollController.stickyScrollCandidateProvider.dispose();
model.dispose();
});
});
test('issue #156268 : Do not reveal sticky lines when they are in a folded region ', async () => {
const model = createTextModel(text);
await withAsyncTestCodeEditor(model, { serviceCollection }, async (editor, viewModel, instantiationService) => {
const stickyScrollController = editor.registerAndInstantiateContribution(StickyScrollController.ID, StickyScrollController);
const stickyScrollController: StickyScrollController = editor.registerAndInstantiateContribution(StickyScrollController.ID, StickyScrollController);
await stickyScrollController.stickyScrollCandidateProvider.update();
const lineHeight = editor.getOption(EditorOption.lineHeight);
const languageService = instantiationService.get(ILanguageFeaturesService);
languageService.documentSymbolProvider.register('*', documentSymbolProviderForTestModel());
stickyScrollController.dispose();
editor.setHiddenAreas([{ startLineNumber: 2, endLineNumber: 2, startColumn: 1, endColumn: 1 }, { startLineNumber: 10, endLineNumber: 11, startColumn: 1, endColumn: 1 }]);
let state;
editor.setScrollTop(1);
state = stickyScrollController.getScrollWidgetState();
assert.deepStrictEqual(state.lineNumbers, [1]);
editor.setScrollTop(lineHeight + 1);
state = stickyScrollController.getScrollWidgetState();
assert.deepStrictEqual(state.lineNumbers, []);
editor.setScrollTop(6 * lineHeight + 1);
state = stickyScrollController.getScrollWidgetState();
assert.deepStrictEqual(state.lineNumbers, [7, 9]);
editor.setScrollTop(7 * lineHeight + 1);
state = stickyScrollController.getScrollWidgetState();
assert.deepStrictEqual(state.lineNumbers, [7]);
editor.setScrollTop(10 * lineHeight + 1);
state = stickyScrollController.getScrollWidgetState();
assert.deepStrictEqual(state.lineNumbers, []);
stickyScrollController.dispose();
stickyScrollController.stickyScrollCandidateProvider.dispose();
model.dispose();
});
});
});