mirror of
https://github.com/Microsoft/vscode
synced 2024-09-19 18:48:00 +00:00
Tests committed
This commit is contained in:
parent
930de5510d
commit
af08b4fdbc
|
@ -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();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue