mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Merge from vscode a4177f50c475fc0fa278a78235e3bee9ffdec781 (#8649)
* Merge from vscode a4177f50c475fc0fa278a78235e3bee9ffdec781 * distro * fix tests
This commit is contained in:
@@ -6,42 +6,104 @@
|
||||
import * as assert from 'assert';
|
||||
import * as marked from 'vs/base/common/marked/marked';
|
||||
import { renderMarkdown } from 'vs/base/browser/markdownRenderer';
|
||||
import { MarkdownString } from 'vs/base/common/htmlContent';
|
||||
|
||||
suite('MarkdownRenderer', () => {
|
||||
test('image rendering conforms to default', () => {
|
||||
const markdown = { value: `` };
|
||||
const result: HTMLElement = renderMarkdown(markdown);
|
||||
const renderer = new marked.Renderer();
|
||||
const imageFromMarked = marked(markdown.value, {
|
||||
sanitize: true,
|
||||
renderer
|
||||
}).trim();
|
||||
assert.strictEqual(result.innerHTML, imageFromMarked);
|
||||
suite('Images', () => {
|
||||
|
||||
test('image rendering conforms to default', () => {
|
||||
const markdown = { value: `` };
|
||||
const result: HTMLElement = renderMarkdown(markdown);
|
||||
const renderer = new marked.Renderer();
|
||||
const imageFromMarked = marked(markdown.value, {
|
||||
sanitize: true,
|
||||
renderer
|
||||
}).trim();
|
||||
assert.strictEqual(result.innerHTML, imageFromMarked);
|
||||
});
|
||||
|
||||
test('image rendering conforms to default without title', () => {
|
||||
const markdown = { value: `` };
|
||||
const result: HTMLElement = renderMarkdown(markdown);
|
||||
const renderer = new marked.Renderer();
|
||||
const imageFromMarked = marked(markdown.value, {
|
||||
sanitize: true,
|
||||
renderer
|
||||
}).trim();
|
||||
assert.strictEqual(result.innerHTML, imageFromMarked);
|
||||
});
|
||||
|
||||
test('image width from title params', () => {
|
||||
let result: HTMLElement = renderMarkdown({ value: `` });
|
||||
assert.strictEqual(result.innerHTML, `<p><img src="someimageurl" alt="image" title="caption" width="100"></p>`);
|
||||
});
|
||||
|
||||
test('image height from title params', () => {
|
||||
let result: HTMLElement = renderMarkdown({ value: `` });
|
||||
assert.strictEqual(result.innerHTML, `<p><img src="someimageurl" alt="image" title="caption" height="100"></p>`);
|
||||
});
|
||||
|
||||
test('image width and height from title params', () => {
|
||||
let result: HTMLElement = renderMarkdown({ value: `` });
|
||||
assert.strictEqual(result.innerHTML, `<p><img src="someimageurl" alt="image" title="caption" width="100" height="200"></p>`);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
test('image rendering conforms to default without title', () => {
|
||||
const markdown = { value: `` };
|
||||
const result: HTMLElement = renderMarkdown(markdown);
|
||||
const renderer = new marked.Renderer();
|
||||
const imageFromMarked = marked(markdown.value, {
|
||||
sanitize: true,
|
||||
renderer
|
||||
}).trim();
|
||||
assert.strictEqual(result.innerHTML, imageFromMarked);
|
||||
suite('ThemeIcons Support On', () => {
|
||||
|
||||
test('render appendText', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: true });
|
||||
mds.appendText('$(zap) $(dont match me)');
|
||||
|
||||
let result: HTMLElement = renderMarkdown(mds);
|
||||
assert.strictEqual(result.innerHTML, `<p><span class="codicon codicon-zap"></span> $(dont match me)</p>`);
|
||||
});
|
||||
|
||||
test('render appendText escaped', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: true });
|
||||
mds.appendText(MarkdownString.escapeThemeIcons('$(zap) $(dont match me)'));
|
||||
|
||||
let result: HTMLElement = renderMarkdown(mds);
|
||||
assert.strictEqual(result.innerHTML, `<p>$(zap) $(dont match me)</p>`);
|
||||
});
|
||||
|
||||
test('render appendMarkdown', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: true });
|
||||
mds.appendMarkdown('$(zap) $(dont match me)');
|
||||
|
||||
let result: HTMLElement = renderMarkdown(mds);
|
||||
assert.strictEqual(result.innerHTML, `<p><span class="codicon codicon-zap"></span> $(dont match me)</p>`);
|
||||
});
|
||||
|
||||
test('render appendMarkdown escaped', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: true });
|
||||
mds.appendMarkdown(MarkdownString.escapeThemeIcons('$(zap) $(dont match me)'));
|
||||
|
||||
let result: HTMLElement = renderMarkdown(mds);
|
||||
assert.strictEqual(result.innerHTML, `<p>$(zap) $(dont match me)</p>`);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
test('image width from title params', () => {
|
||||
let result: HTMLElement = renderMarkdown({ value: `` });
|
||||
assert.strictEqual(result.innerHTML, `<p><img src="someimageurl" alt="image" title="caption" width="100"></p>`);
|
||||
suite('ThemeIcons Support Off', () => {
|
||||
|
||||
test('render appendText', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: false });
|
||||
mds.appendText('$(zap) $(dont match me)');
|
||||
|
||||
let result: HTMLElement = renderMarkdown(mds);
|
||||
assert.strictEqual(result.innerHTML, `<p>$(zap) $(dont match me)</p>`);
|
||||
});
|
||||
|
||||
test('render appendMarkdown', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: false });
|
||||
mds.appendMarkdown('$(zap) $(dont match me)');
|
||||
|
||||
let result: HTMLElement = renderMarkdown(mds);
|
||||
assert.strictEqual(result.innerHTML, `<p>$(zap) $(dont match me)</p>`);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
test('image height from title params', () => {
|
||||
let result: HTMLElement = renderMarkdown({ value: `` });
|
||||
assert.strictEqual(result.innerHTML, `<p><img src="someimageurl" alt="image" title="caption" height="100"></p>`);
|
||||
});
|
||||
|
||||
test('image width and height from title params', () => {
|
||||
let result: HTMLElement = renderMarkdown({ value: `` });
|
||||
assert.strictEqual(result.innerHTML, `<p><img src="someimageurl" alt="image" title="caption" width="100" height="200"></p>`);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as sinon from 'sinon';
|
||||
import * as assert from 'assert';
|
||||
import { memoize, createMemoizer } from 'vs/base/common/decorators';
|
||||
import { memoize, createMemoizer, throttle } from 'vs/base/common/decorators';
|
||||
|
||||
suite('Decorators', () => {
|
||||
test('memoize should memoize methods', () => {
|
||||
@@ -100,7 +101,9 @@ suite('Decorators', () => {
|
||||
test('memoized property should not be enumerable', () => {
|
||||
class Foo {
|
||||
@memoize
|
||||
get answer() { return 42; }
|
||||
get answer() {
|
||||
return 42;
|
||||
}
|
||||
}
|
||||
|
||||
const foo = new Foo();
|
||||
@@ -112,7 +115,9 @@ suite('Decorators', () => {
|
||||
test('memoized property should not be writable', () => {
|
||||
class Foo {
|
||||
@memoize
|
||||
get answer() { return 42; }
|
||||
get answer() {
|
||||
return 42;
|
||||
}
|
||||
}
|
||||
|
||||
const foo = new Foo();
|
||||
@@ -131,7 +136,9 @@ suite('Decorators', () => {
|
||||
let counter = 0;
|
||||
class Foo {
|
||||
@memoizer
|
||||
get answer() { return ++counter; }
|
||||
get answer() {
|
||||
return ++counter;
|
||||
}
|
||||
}
|
||||
|
||||
const foo = new Foo();
|
||||
@@ -145,4 +152,49 @@ suite('Decorators', () => {
|
||||
assert.equal(foo.answer, 3);
|
||||
assert.equal(foo.answer, 3);
|
||||
});
|
||||
|
||||
test('throttle', () => {
|
||||
const spy = sinon.spy();
|
||||
const clock = sinon.useFakeTimers();
|
||||
try {
|
||||
class ThrottleTest {
|
||||
private _handle: Function;
|
||||
|
||||
constructor(fn: Function) {
|
||||
this._handle = fn;
|
||||
}
|
||||
|
||||
@throttle(
|
||||
100,
|
||||
(a: number, b: number) => a + b,
|
||||
() => 0
|
||||
)
|
||||
report(p: number): void {
|
||||
this._handle(p);
|
||||
}
|
||||
}
|
||||
|
||||
const t = new ThrottleTest(spy);
|
||||
|
||||
t.report(1);
|
||||
t.report(2);
|
||||
t.report(3);
|
||||
assert.deepEqual(spy.args, [[1]]);
|
||||
|
||||
clock.tick(200);
|
||||
assert.deepEqual(spy.args, [[1], [5]]);
|
||||
spy.reset();
|
||||
|
||||
t.report(4);
|
||||
t.report(5);
|
||||
clock.tick(50);
|
||||
t.report(6);
|
||||
|
||||
assert.deepEqual(spy.args, [[4]]);
|
||||
clock.tick(60);
|
||||
assert.deepEqual(spy.args, [[4], [11]]);
|
||||
} finally {
|
||||
clock.restore();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
* 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 { toErrorMessage } from 'vs/base/common/errorMessage';
|
||||
|
||||
@@ -16,9 +17,17 @@ suite('Errors', () => {
|
||||
error.detail.exception = {};
|
||||
error.detail.exception.message = 'Foo Bar';
|
||||
assert.strictEqual(toErrorMessage(error), 'Foo Bar');
|
||||
assert.strictEqual(toErrorMessage(error, true), 'Foo Bar');
|
||||
|
||||
assert(toErrorMessage());
|
||||
assert(toErrorMessage(null));
|
||||
assert(toErrorMessage({}));
|
||||
|
||||
try {
|
||||
throw new Error();
|
||||
} catch (error) {
|
||||
assert.strictEqual(toErrorMessage(error), 'An unknown error occurred. Please consult the log for more details.');
|
||||
assert.ok(toErrorMessage(error, true).length > 'An unknown error occurred. Please consult the log for more details.'.length);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -43,4 +43,14 @@ suite('Hash', () => {
|
||||
assert.notEqual(hash({ 'foo': 'bar' }), hash({ 'foo': 'bar2' }));
|
||||
assert.notEqual(hash({}), hash([]));
|
||||
});
|
||||
});
|
||||
|
||||
test('array - unexpected collision', function () {
|
||||
this.skip();
|
||||
const a = hash([undefined, undefined, undefined, undefined, undefined]);
|
||||
const b = hash([undefined, undefined, 'HHHHHH', [{ line: 0, character: 0 }, { line: 0, character: 0 }], undefined]);
|
||||
// console.log(a);
|
||||
// console.log(b);
|
||||
assert.notEqual(a, b);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
import * as assert from 'assert';
|
||||
import { MarkdownString } from 'vs/base/common/htmlContent';
|
||||
|
||||
suite('markdownString', () => {
|
||||
suite('MarkdownString', () => {
|
||||
|
||||
test('escape', () => {
|
||||
|
||||
@@ -16,4 +16,63 @@ suite('markdownString', () => {
|
||||
|
||||
assert.equal(mds.value, '\\# foo\n\n\\*bar\\*');
|
||||
});
|
||||
|
||||
suite('ThemeIcons', () => {
|
||||
|
||||
test('escapeThemeIcons', () => {
|
||||
assert.equal(
|
||||
MarkdownString.escapeThemeIcons('$(zap) $(not an icon) foo$(bar)'),
|
||||
'\\$(zap) $(not an icon) foo\\$(bar)'
|
||||
);
|
||||
});
|
||||
|
||||
suite('Support On', () => {
|
||||
|
||||
test('appendText', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: true });
|
||||
mds.appendText('$(zap)');
|
||||
|
||||
assert.equal(mds.value, '$(zap)');
|
||||
});
|
||||
|
||||
test('appendText escaped', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: true });
|
||||
mds.appendText(MarkdownString.escapeThemeIcons('$(zap)'));
|
||||
|
||||
assert.equal(mds.value, '\\\\$\\(zap\\)');
|
||||
});
|
||||
|
||||
test('appendMarkdown', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: true });
|
||||
mds.appendMarkdown('$(zap)');
|
||||
|
||||
assert.equal(mds.value, '$(zap)');
|
||||
});
|
||||
|
||||
test('appendMarkdown escaped', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: true });
|
||||
mds.appendMarkdown(MarkdownString.escapeThemeIcons('$(zap)'));
|
||||
|
||||
assert.equal(mds.value, '\\$(zap)');
|
||||
});
|
||||
});
|
||||
|
||||
suite('Support Off', () => {
|
||||
|
||||
test('appendText', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: false });
|
||||
mds.appendText('$(zap)');
|
||||
|
||||
assert.equal(mds.value, '$\\(zap\\)');
|
||||
});
|
||||
|
||||
test('appendMarkdown', () => {
|
||||
const mds = new MarkdownString(undefined, { supportThemeIcons: false });
|
||||
mds.appendMarkdown('$(zap)');
|
||||
|
||||
assert.equal(mds.value, '$(zap)');
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user