mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Merge from vscode 2cfc8172e533e50c90e6a3152f6bfb1f82f963f3 (#6516)
* Merge from vscode 2cfc8172e533e50c90e6a3152f6bfb1f82f963f3 * fix tests
This commit is contained in:
@@ -4344,12 +4344,12 @@ suite('autoClosingPairs', () => {
|
||||
let autoClosePositions = [
|
||||
'var a |=| [|]|;|',
|
||||
'var b |=| |`asd`|;|',
|
||||
'var c |=| |\'asd!\'|;|',
|
||||
'var c |=| |\'asd\'|;|',
|
||||
'var d |=| |"asd"|;|',
|
||||
'var e |=| /*3*/| 3;|',
|
||||
'var f |=| /**| 3 */3;|',
|
||||
'var g |=| (3+5)|;|',
|
||||
'var h |=| {| a:| |\'value!\'| |}|;|',
|
||||
'var h |=| {| a:| |\'value\'| |}|;|',
|
||||
];
|
||||
for (let i = 0, len = autoClosePositions.length; i < len; i++) {
|
||||
const lineNumber = i + 1;
|
||||
@@ -4494,6 +4494,107 @@ suite('autoClosingPairs', () => {
|
||||
mode.dispose();
|
||||
});
|
||||
|
||||
test('issue #37315 - overtypes only those characters that it inserted', () => {
|
||||
let mode = new AutoClosingMode();
|
||||
usingCursor({
|
||||
text: [
|
||||
'',
|
||||
'y=();'
|
||||
],
|
||||
languageIdentifier: mode.getLanguageIdentifier()
|
||||
}, (model, cursor) => {
|
||||
assertCursor(cursor, new Position(1, 1));
|
||||
|
||||
cursorCommand(cursor, H.Type, { text: 'x=(' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=()');
|
||||
|
||||
cursorCommand(cursor, H.Type, { text: 'asd' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=(asd)');
|
||||
|
||||
// overtype!
|
||||
cursorCommand(cursor, H.Type, { text: ')' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=(asd)');
|
||||
|
||||
// do not overtype!
|
||||
cursor.setSelections('test', [new Selection(2, 4, 2, 4)]);
|
||||
cursorCommand(cursor, H.Type, { text: ')' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(2), 'y=());');
|
||||
|
||||
});
|
||||
mode.dispose();
|
||||
});
|
||||
|
||||
test('issue #37315 - stops overtyping once cursor leaves area', () => {
|
||||
let mode = new AutoClosingMode();
|
||||
usingCursor({
|
||||
text: [
|
||||
'',
|
||||
'y=();'
|
||||
],
|
||||
languageIdentifier: mode.getLanguageIdentifier()
|
||||
}, (model, cursor) => {
|
||||
assertCursor(cursor, new Position(1, 1));
|
||||
|
||||
cursorCommand(cursor, H.Type, { text: 'x=(' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=()');
|
||||
|
||||
cursor.setSelections('test', [new Selection(1, 5, 1, 5)]);
|
||||
cursorCommand(cursor, H.Type, { text: ')' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=())');
|
||||
});
|
||||
mode.dispose();
|
||||
});
|
||||
|
||||
test('issue #37315 - it overtypes only once', () => {
|
||||
let mode = new AutoClosingMode();
|
||||
usingCursor({
|
||||
text: [
|
||||
'',
|
||||
'y=();'
|
||||
],
|
||||
languageIdentifier: mode.getLanguageIdentifier()
|
||||
}, (model, cursor) => {
|
||||
assertCursor(cursor, new Position(1, 1));
|
||||
|
||||
cursorCommand(cursor, H.Type, { text: 'x=(' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=()');
|
||||
|
||||
cursorCommand(cursor, H.Type, { text: ')' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=()');
|
||||
|
||||
cursor.setSelections('test', [new Selection(1, 4, 1, 4)]);
|
||||
cursorCommand(cursor, H.Type, { text: ')' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=())');
|
||||
});
|
||||
mode.dispose();
|
||||
});
|
||||
|
||||
test('issue #37315 - it can remember multiple auto-closed instances', () => {
|
||||
let mode = new AutoClosingMode();
|
||||
usingCursor({
|
||||
text: [
|
||||
'',
|
||||
'y=();'
|
||||
],
|
||||
languageIdentifier: mode.getLanguageIdentifier()
|
||||
}, (model, cursor) => {
|
||||
assertCursor(cursor, new Position(1, 1));
|
||||
|
||||
cursorCommand(cursor, H.Type, { text: 'x=(' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=()');
|
||||
|
||||
cursorCommand(cursor, H.Type, { text: '(' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=(())');
|
||||
|
||||
cursorCommand(cursor, H.Type, { text: ')' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=(())');
|
||||
|
||||
cursorCommand(cursor, H.Type, { text: ')' }, 'keyboard');
|
||||
assert.strictEqual(model.getLineContent(1), 'x=(())');
|
||||
});
|
||||
mode.dispose();
|
||||
});
|
||||
|
||||
test('issue #15825: accents on mac US intl keyboard', () => {
|
||||
let mode = new AutoClosingMode();
|
||||
usingCursor({
|
||||
|
||||
@@ -132,7 +132,7 @@ suite('Cursor move command test', () => {
|
||||
test('move to first non white space character of line from middle', () => {
|
||||
moveTo(thisCursor, 1, 8);
|
||||
|
||||
moveToLineFirstNonWhiteSpaceCharacter(thisCursor);
|
||||
moveToLineFirstNonWhitespaceCharacter(thisCursor);
|
||||
|
||||
cursorEqual(thisCursor, 1, 6);
|
||||
});
|
||||
@@ -140,7 +140,7 @@ suite('Cursor move command test', () => {
|
||||
test('move to first non white space character of line from first non white space character', () => {
|
||||
moveTo(thisCursor, 1, 6);
|
||||
|
||||
moveToLineFirstNonWhiteSpaceCharacter(thisCursor);
|
||||
moveToLineFirstNonWhitespaceCharacter(thisCursor);
|
||||
|
||||
cursorEqual(thisCursor, 1, 6);
|
||||
});
|
||||
@@ -148,7 +148,7 @@ suite('Cursor move command test', () => {
|
||||
test('move to first non white space character of line from first character', () => {
|
||||
moveTo(thisCursor, 1, 1);
|
||||
|
||||
moveToLineFirstNonWhiteSpaceCharacter(thisCursor);
|
||||
moveToLineFirstNonWhitespaceCharacter(thisCursor);
|
||||
|
||||
cursorEqual(thisCursor, 1, 6);
|
||||
});
|
||||
@@ -180,7 +180,7 @@ suite('Cursor move command test', () => {
|
||||
test('move to last non white space character from middle', () => {
|
||||
moveTo(thisCursor, 1, 8);
|
||||
|
||||
moveToLineLastNonWhiteSpaceCharacter(thisCursor);
|
||||
moveToLineLastNonWhitespaceCharacter(thisCursor);
|
||||
|
||||
cursorEqual(thisCursor, 1, 19);
|
||||
});
|
||||
@@ -188,7 +188,7 @@ suite('Cursor move command test', () => {
|
||||
test('move to last non white space character from last non white space character', () => {
|
||||
moveTo(thisCursor, 1, 19);
|
||||
|
||||
moveToLineLastNonWhiteSpaceCharacter(thisCursor);
|
||||
moveToLineLastNonWhitespaceCharacter(thisCursor);
|
||||
|
||||
cursorEqual(thisCursor, 1, 19);
|
||||
});
|
||||
@@ -196,7 +196,7 @@ suite('Cursor move command test', () => {
|
||||
test('move to last non white space character from line end', () => {
|
||||
moveTo(thisCursor, 1, 21);
|
||||
|
||||
moveToLineLastNonWhiteSpaceCharacter(thisCursor);
|
||||
moveToLineLastNonWhitespaceCharacter(thisCursor);
|
||||
|
||||
cursorEqual(thisCursor, 1, 19);
|
||||
});
|
||||
@@ -415,7 +415,7 @@ function moveToLineStart(cursor: Cursor) {
|
||||
move(cursor, { to: CursorMove.RawDirection.WrappedLineStart });
|
||||
}
|
||||
|
||||
function moveToLineFirstNonWhiteSpaceCharacter(cursor: Cursor) {
|
||||
function moveToLineFirstNonWhitespaceCharacter(cursor: Cursor) {
|
||||
move(cursor, { to: CursorMove.RawDirection.WrappedLineFirstNonWhitespaceCharacter });
|
||||
}
|
||||
|
||||
@@ -427,7 +427,7 @@ function moveToLineEnd(cursor: Cursor) {
|
||||
move(cursor, { to: CursorMove.RawDirection.WrappedLineEnd });
|
||||
}
|
||||
|
||||
function moveToLineLastNonWhiteSpaceCharacter(cursor: Cursor) {
|
||||
function moveToLineLastNonWhitespaceCharacter(cursor: Cursor) {
|
||||
move(cursor, { to: CursorMove.RawDirection.WrappedLineLastNonWhitespaceCharacter });
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,9 @@ export class TestCommandService implements ICommandService {
|
||||
private readonly _onWillExecuteCommand = new Emitter<ICommandEvent>();
|
||||
public readonly onWillExecuteCommand: Event<ICommandEvent> = this._onWillExecuteCommand.event;
|
||||
|
||||
private readonly _onDidExecuteCommand = new Emitter<ICommandEvent>();
|
||||
public readonly onDidExecuteCommand: Event<ICommandEvent> = this._onDidExecuteCommand.event;
|
||||
|
||||
constructor(instantiationService: IInstantiationService) {
|
||||
this._instantiationService = instantiationService;
|
||||
}
|
||||
@@ -43,8 +46,9 @@ export class TestCommandService implements ICommandService {
|
||||
}
|
||||
|
||||
try {
|
||||
this._onWillExecuteCommand.fire({ commandId: id });
|
||||
this._onWillExecuteCommand.fire({ commandId: id, args });
|
||||
const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler, ...args]) as T;
|
||||
this._onDidExecuteCommand.fire({ commandId: id, args });
|
||||
return Promise.resolve(result);
|
||||
} catch (err) {
|
||||
return Promise.reject(err);
|
||||
|
||||
@@ -17,6 +17,7 @@ suite('OpenerService', function () {
|
||||
const commandService = new class implements ICommandService {
|
||||
_serviceBrand: any;
|
||||
onWillExecuteCommand = () => ({ dispose: () => { } });
|
||||
onDidExecuteCommand = () => ({ dispose: () => { } });
|
||||
executeCommand(id: string, ...args: any[]): Promise<any> {
|
||||
lastCommand = { id, args };
|
||||
return Promise.resolve(undefined);
|
||||
|
||||
@@ -733,4 +733,23 @@ suite('TextModelSearch', () => {
|
||||
assert(isMultilineRegexSource('\\n'));
|
||||
assert(isMultilineRegexSource('foo\\W'));
|
||||
});
|
||||
|
||||
test('issue #74715. \\d* finds empty string and stops searching.', () => {
|
||||
let model = TextModel.createFromString('10.243.30.10');
|
||||
|
||||
let searchParams = new SearchParams('\\d*', true, false, null);
|
||||
|
||||
let actual = TextModelSearch.findMatches(model, searchParams, model.getFullModelRange(), true, 100);
|
||||
assert.deepEqual(actual, [
|
||||
new FindMatch(new Range(1, 1, 1, 3), ['10']),
|
||||
new FindMatch(new Range(1, 3, 1, 3), ['']),
|
||||
new FindMatch(new Range(1, 4, 1, 7), ['243']),
|
||||
new FindMatch(new Range(1, 7, 1, 7), ['']),
|
||||
new FindMatch(new Range(1, 8, 1, 10), ['30']),
|
||||
new FindMatch(new Range(1, 10, 1, 10), ['']),
|
||||
new FindMatch(new Range(1, 11, 1, 13), ['10'])
|
||||
]);
|
||||
|
||||
model.dispose();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user