Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/vs/base/test/browser/dom.test.ts')
-rw-r--r--src/vs/base/test/browser/dom.test.ts157
1 files changed, 152 insertions, 5 deletions
diff --git a/src/vs/base/test/browser/dom.test.ts b/src/vs/base/test/browser/dom.test.ts
index 435f0066b9c..1ad53561927 100644
--- a/src/vs/base/test/browser/dom.test.ts
+++ b/src/vs/base/test/browser/dom.test.ts
@@ -4,8 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import * as assert from 'assert';
-import * as dom from 'vs/base/browser/dom';
-const $ = dom.$;
+import { $, h, multibyteAwareBtoa } from 'vs/base/browser/dom';
suite('dom', () => {
test('hasClass', () => {
@@ -73,9 +72,9 @@ suite('dom', () => {
});
test('multibyteAwareBtoa', () => {
- assert.ok(dom.multibyteAwareBtoa('hello world').length > 0);
- assert.ok(dom.multibyteAwareBtoa('平仮名').length > 0);
- assert.ok(dom.multibyteAwareBtoa(new Array(100000).fill('vs').join('')).length > 0); // https://github.com/microsoft/vscode/issues/112013
+ assert.ok(multibyteAwareBtoa('hello world').length > 0);
+ assert.ok(multibyteAwareBtoa('平仮名').length > 0);
+ assert.ok(multibyteAwareBtoa(new Array(100000).fill('vs').join('')).length > 0); // https://github.com/microsoft/vscode/issues/112013
});
suite('$', () => {
@@ -129,4 +128,152 @@ suite('dom', () => {
assert.strictEqual(firstChild.textContent, 'foobar');
});
});
+
+ suite('h', () => {
+ test('should build simple nodes', () => {
+ const div = h('div');
+ assert(div.root instanceof HTMLElement);
+ assert.strictEqual(div.root.tagName, 'DIV');
+
+ const span = h('span');
+ assert(span.root instanceof HTMLElement);
+ assert.strictEqual(span.root.tagName, 'SPAN');
+
+ const img = h('img');
+ assert(img.root instanceof HTMLElement);
+ assert.strictEqual(img.root.tagName, 'IMG');
+ });
+
+ test('should handle ids and classes', () => {
+ const divId = h('div#myid');
+ assert.strictEqual(divId.root.tagName, 'DIV');
+ assert.strictEqual(divId.root.id, 'myid');
+
+ const divClass = h('div.a');
+ assert.strictEqual(divClass.root.tagName, 'DIV');
+ assert.strictEqual(divClass.root.classList.length, 1);
+ assert(divClass.root.classList.contains('a'));
+
+ const divClasses = h('div.a.b.c');
+ assert.strictEqual(divClasses.root.tagName, 'DIV');
+ assert.strictEqual(divClasses.root.classList.length, 3);
+ assert(divClasses.root.classList.contains('a'));
+ assert(divClasses.root.classList.contains('b'));
+ assert(divClasses.root.classList.contains('c'));
+
+ const divAll = h('div#myid.a.b.c');
+ assert.strictEqual(divAll.root.tagName, 'DIV');
+ assert.strictEqual(divAll.root.id, 'myid');
+ assert.strictEqual(divAll.root.classList.length, 3);
+ assert(divAll.root.classList.contains('a'));
+ assert(divAll.root.classList.contains('b'));
+ assert(divAll.root.classList.contains('c'));
+
+ const spanId = h('span#myid');
+ assert.strictEqual(spanId.root.tagName, 'SPAN');
+ assert.strictEqual(spanId.root.id, 'myid');
+
+ const spanClass = h('span.a');
+ assert.strictEqual(spanClass.root.tagName, 'SPAN');
+ assert.strictEqual(spanClass.root.classList.length, 1);
+ assert(spanClass.root.classList.contains('a'));
+
+ const spanClasses = h('span.a.b.c');
+ assert.strictEqual(spanClasses.root.tagName, 'SPAN');
+ assert.strictEqual(spanClasses.root.classList.length, 3);
+ assert(spanClasses.root.classList.contains('a'));
+ assert(spanClasses.root.classList.contains('b'));
+ assert(spanClasses.root.classList.contains('c'));
+
+ const spanAll = h('span#myid.a.b.c');
+ assert.strictEqual(spanAll.root.tagName, 'SPAN');
+ assert.strictEqual(spanAll.root.id, 'myid');
+ assert.strictEqual(spanAll.root.classList.length, 3);
+ assert(spanAll.root.classList.contains('a'));
+ assert(spanAll.root.classList.contains('b'));
+ assert(spanAll.root.classList.contains('c'));
+ });
+
+ test('should implicitly handle ids and classes', () => {
+ const divId = h('#myid');
+ assert.strictEqual(divId.root.tagName, 'DIV');
+ assert.strictEqual(divId.root.id, 'myid');
+
+ const divClass = h('.a');
+ assert.strictEqual(divClass.root.tagName, 'DIV');
+ assert.strictEqual(divClass.root.classList.length, 1);
+ assert(divClass.root.classList.contains('a'));
+
+ const divClasses = h('.a.b.c');
+ assert.strictEqual(divClasses.root.tagName, 'DIV');
+ assert.strictEqual(divClasses.root.classList.length, 3);
+ assert(divClasses.root.classList.contains('a'));
+ assert(divClasses.root.classList.contains('b'));
+ assert(divClasses.root.classList.contains('c'));
+
+ const divAll = h('#myid.a.b.c');
+ assert.strictEqual(divAll.root.tagName, 'DIV');
+ assert.strictEqual(divAll.root.id, 'myid');
+ assert.strictEqual(divAll.root.classList.length, 3);
+ assert(divAll.root.classList.contains('a'));
+ assert(divAll.root.classList.contains('b'));
+ assert(divAll.root.classList.contains('c'));
+ });
+
+ test('should handle @ identifiers', () => {
+ const implicit = h('@el');
+ assert.strictEqual(implicit.root, implicit.el);
+ assert.strictEqual(implicit.el.tagName, 'DIV');
+
+ const explicit = h('div@el');
+ assert.strictEqual(explicit.root, explicit.el);
+ assert.strictEqual(explicit.el.tagName, 'DIV');
+
+ const implicitId = h('#myid@el');
+ assert.strictEqual(implicitId.root, implicitId.el);
+ assert.strictEqual(implicitId.el.tagName, 'DIV');
+ assert.strictEqual(implicitId.root.id, 'myid');
+
+ const explicitId = h('div#myid@el');
+ assert.strictEqual(explicitId.root, explicitId.el);
+ assert.strictEqual(explicitId.el.tagName, 'DIV');
+ assert.strictEqual(explicitId.root.id, 'myid');
+
+ const implicitClass = h('.a@el');
+ assert.strictEqual(implicitClass.root, implicitClass.el);
+ assert.strictEqual(implicitClass.el.tagName, 'DIV');
+ assert.strictEqual(implicitClass.root.classList.length, 1);
+ assert(implicitClass.root.classList.contains('a'));
+
+ const explicitClass = h('div.a@el');
+ assert.strictEqual(explicitClass.root, explicitClass.el);
+ assert.strictEqual(explicitClass.el.tagName, 'DIV');
+ assert.strictEqual(explicitClass.root.classList.length, 1);
+ assert(explicitClass.root.classList.contains('a'));
+ });
+ });
+
+ test('should recurse', () => {
+ const result = h('div.code-view', [
+ h('div.title@title'),
+ h('div.container', [
+ h('div.gutter@gutterDiv'),
+ h('span@editor'),
+ ]),
+ ]);
+
+ assert.strictEqual(result.root.tagName, 'DIV');
+ assert.strictEqual(result.root.className, 'code-view');
+ assert.strictEqual(result.root.childElementCount, 2);
+ assert.strictEqual(result.root.firstElementChild, result.title);
+ assert.strictEqual(result.title.tagName, 'DIV');
+ assert.strictEqual(result.title.className, 'title');
+ assert.strictEqual(result.title.childElementCount, 0);
+ assert.strictEqual(result.gutterDiv.tagName, 'DIV');
+ assert.strictEqual(result.gutterDiv.className, 'gutter');
+ assert.strictEqual(result.gutterDiv.childElementCount, 0);
+ assert.strictEqual(result.editor.tagName, 'SPAN');
+ assert.strictEqual(result.editor.className, '');
+ assert.strictEqual(result.editor.childElementCount, 0);
+ });
});