Skip to content

Commit a5d9b65

Browse files
committed
migrate more tests to htmlRunner
1 parent f464e89 commit a5d9b65

15 files changed

+239
-261
lines changed

src/browser/dom/performance.zig

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -203,22 +203,6 @@ test "Performance: now" {
203203
}
204204
}
205205

206-
test "Browser.Performance.Mark" {
207-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
208-
defer runner.deinit();
209-
210-
try runner.testCases(&.{
211-
.{ "let performance = window.performance", null },
212-
.{ "performance instanceof Performance", "true" },
213-
214-
.{ "let mark1 = performance.mark(\"start\")", null },
215-
.{ "mark1 instanceof PerformanceMark", "true" },
216-
.{ "mark1.name", "start" },
217-
.{ "mark1.entryType", "mark" },
218-
.{ "mark1.duration", "0" },
219-
.{ "mark1.detail", "null" },
220-
221-
.{ "let mark2 = performance.mark(\"start\", {startTime: 32939393.9})", null },
222-
.{ "mark2.startTime", "32939393.9" },
223-
}, .{});
206+
test "Browser: Performance.Mark" {
207+
try testing.htmlRunner("dom/performance.html");
224208
}

src/browser/dom/performance_observer.zig

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,6 @@ const Options = struct {
5353
};
5454

5555
const testing = @import("../../testing.zig");
56-
test "Browser.DOM.PerformanceObserver" {
57-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
58-
defer runner.deinit();
59-
60-
try runner.testCases(&.{
61-
.{ "PerformanceObserver.supportedEntryTypes.length", "0" },
62-
}, .{});
56+
test "Browser: DOM.PerformanceObserver" {
57+
try testing.htmlRunner("dom/performance_observer.html");
6358
}

src/browser/dom/processing_instruction.zig

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -87,30 +87,6 @@ pub const ProcessingInstruction = struct {
8787
};
8888

8989
const testing = @import("../../testing.zig");
90-
test "Browser.DOM.ProcessingInstruction" {
91-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
92-
defer runner.deinit();
93-
94-
try runner.testCases(&.{
95-
.{ "let pi = document.createProcessingInstruction('foo', 'bar')", "undefined" },
96-
.{ "pi.target", "foo" },
97-
.{ "pi.data", "bar" },
98-
.{ "pi.data = 'foo'", "foo" },
99-
.{ "pi.data", "foo" },
100-
101-
.{ "let pi2 = pi.cloneNode()", "undefined" },
102-
.{ "pi2.nodeType", "7" },
103-
}, .{});
104-
105-
try runner.testCases(&.{
106-
.{ "let pi11 = document.createProcessingInstruction('target1', 'data1');", "undefined" },
107-
.{ "let pi12 = document.createProcessingInstruction('target2', 'data2');", "undefined" },
108-
.{ "let pi13 = document.createProcessingInstruction('target1', 'data1');", "undefined" },
109-
.{ "pi11.isEqualNode(pi11)", "true" },
110-
.{ "pi11.isEqualNode(pi13)", "true" },
111-
.{ "pi11.isEqualNode(pi12)", "false" },
112-
.{ "pi12.isEqualNode(pi13)", "false" },
113-
.{ "pi11.isEqualNode(document)", "false" },
114-
.{ "document.isEqualNode(pi11)", "false" },
115-
}, .{});
90+
test "Browser: DOM.ProcessingInstruction" {
91+
try testing.htmlRunner("dom/processing_instruction.html");
11692
}

src/browser/dom/range.zig

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -385,44 +385,6 @@ fn compare(node_a: *parser.Node, offset_a: u32, node_b: *parser.Node, offset_b:
385385
}
386386

387387
const testing = @import("../../testing.zig");
388-
test "Browser.Range" {
389-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
390-
defer runner.deinit();
391-
392-
try runner.testCases(&.{
393-
// Test Range constructor
394-
.{ "let range = new Range()", "undefined" },
395-
.{ "range instanceof Range", "true" },
396-
.{ "range instanceof AbstractRange", "true" },
397-
398-
// Test initial state - collapsed range
399-
.{ "range.collapsed", "true" },
400-
.{ "range.startOffset", "0" },
401-
.{ "range.endOffset", "0" },
402-
.{ "range.startContainer instanceof HTMLDocument", "true" },
403-
.{ "range.endContainer instanceof HTMLDocument", "true" },
404-
405-
// Test document.createRange()
406-
.{ "let docRange = document.createRange()", "undefined" },
407-
.{ "docRange instanceof Range", "true" },
408-
.{ "docRange.collapsed", "true" },
409-
}, .{});
410-
411-
try runner.testCases(&.{
412-
.{ "const container = document.getElementById('content');", null },
413-
414-
// Test text range
415-
.{ "const commentNode = container.childNodes[7];", null },
416-
.{ "commentNode.nodeValue", "comment" },
417-
.{ "const textRange = document.createRange();", null },
418-
.{ "textRange.selectNodeContents(commentNode)", "undefined" },
419-
.{ "textRange.startOffset", "0" },
420-
.{ "textRange.endOffset", "7" }, // length of `comment`
421-
422-
// Test Node range
423-
.{ "const nodeRange = document.createRange();", null },
424-
.{ "nodeRange.selectNodeContents(container)", "undefined" },
425-
.{ "nodeRange.startOffset", "0" },
426-
.{ "nodeRange.endOffset", "9" }, // length of container.childNodes
427-
}, .{});
388+
test "Browser: Range" {
389+
try testing.htmlRunner("dom/range.html");
428390
}

src/browser/dom/shadow_root.zig

Lines changed: 2 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -96,60 +96,6 @@ pub const ShadowRoot = struct {
9696
};
9797

9898
const testing = @import("../../testing.zig");
99-
test "Browser.DOM.ShadowRoot" {
100-
defer testing.reset();
101-
102-
var runner = try testing.jsRunner(testing.tracking_allocator, .{ .html =
103-
\\ <div id=conflict>nope</div>
104-
});
105-
defer runner.deinit();
106-
107-
try runner.testCases(&.{
108-
.{ "const div1 = document.createElement('div');", null },
109-
.{ "let sr1 = div1.attachShadow({mode: 'open'})", null },
110-
.{ "sr1.host == div1", "true" },
111-
.{ "div1.attachShadow({mode: 'open'}) == sr1", "true" },
112-
.{ "div1.shadowRoot == sr1", "true" },
113-
114-
.{ "try { div1.attachShadow({mode: 'closed'}) } catch (e) { e }", "Error: NotSupportedError" },
115-
116-
.{ " sr1.append(document.createElement('div'))", null },
117-
.{ " sr1.append(document.createElement('span'))", null },
118-
.{ "sr1.childElementCount", "2" },
119-
// re-attaching clears it
120-
.{ "div1.attachShadow({mode: 'open'}) == sr1", "true" },
121-
.{ "sr1.childElementCount", "0" },
122-
}, .{});
123-
124-
try runner.testCases(&.{
125-
.{ "const div2 = document.createElement('di2');", null },
126-
.{ "let sr2 = div2.attachShadow({mode: 'closed'})", null },
127-
.{ "sr2.host == div2", "true" },
128-
.{ "div2.shadowRoot", "null" }, // null when attached with 'closed'
129-
}, .{});
130-
131-
try runner.testCases(&.{
132-
.{ "sr2.getElementById('conflict')", "null" },
133-
.{ "const n1 = document.createElement('div')", null },
134-
.{ "n1.id = 'conflict'", null },
135-
.{ "sr2.append(n1)", null },
136-
.{ "sr2.getElementById('conflict') == n1", "true" },
137-
}, .{});
138-
139-
try runner.testCases(&.{
140-
.{ "const acss = sr2.adoptedStyleSheets", null },
141-
.{ "acss.length", "0" },
142-
.{ "acss.push(new CSSStyleSheet())", null },
143-
.{ "sr2.adoptedStyleSheets.length", "1" },
144-
}, .{});
145-
146-
try runner.testCases(&.{
147-
.{ "sr1.innerHTML = '<p>hello</p>'", null },
148-
.{ "sr1.innerHTML", "<p>hello</p>" },
149-
.{ "sr1.querySelector('*')", "[object HTMLParagraphElement]" },
150-
151-
.{ "sr1.innerHTML = null", null },
152-
.{ "sr1.innerHTML", "" },
153-
.{ "sr1.querySelector('*')", "null" },
154-
}, .{});
99+
test "Browser: DOM.ShadowRoot" {
100+
try testing.htmlRunner("dom/shadow_root.html");
155101
}

src/browser/dom/text.zig

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -56,31 +56,7 @@ pub const Text = struct {
5656
}
5757
};
5858

59-
// Tests
60-
// -----
61-
6259
const testing = @import("../../testing.zig");
63-
test "Browser.DOM.Text" {
64-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
65-
defer runner.deinit();
66-
67-
try runner.testCases(&.{
68-
.{ "let t = new Text('foo')", "undefined" },
69-
.{ "t.data", "foo" },
70-
71-
.{ "let emptyt = new Text()", "undefined" },
72-
.{ "emptyt.data", "" },
73-
}, .{});
74-
75-
try runner.testCases(&.{
76-
.{ "let text = document.getElementById('link').firstChild", "undefined" },
77-
.{ "text.wholeText === 'OK'", "true" },
78-
}, .{});
79-
80-
try runner.testCases(&.{
81-
.{ "text.data = 'OK modified'", "OK modified" },
82-
.{ "let split = text.splitText('OK'.length)", "undefined" },
83-
.{ "split.data === ' modified'", "true" },
84-
.{ "text.data === 'OK'", "true" },
85-
}, .{});
60+
test "Browser: DOM.Text" {
61+
try testing.htmlRunner("dom/text.html");
8662
}

src/browser/dom/token_list.zig

Lines changed: 2 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -169,77 +169,7 @@ pub const Iterator = struct {
169169
}
170170
};
171171

172-
// Tests
173-
// -----
174-
175172
const testing = @import("../../testing.zig");
176-
test "Browser.DOM.TokenList" {
177-
var runner = try testing.jsRunner(testing.tracking_allocator, .{});
178-
defer runner.deinit();
179-
180-
try runner.testCases(&.{
181-
.{ "let gs = document.getElementById('para-empty')", "undefined" },
182-
.{ "let cl = gs.classList", "undefined" },
183-
.{ "gs.className", "ok empty" },
184-
.{ "cl.value", "ok empty" },
185-
.{ "cl.length", "2" },
186-
.{ "gs.className = 'foo bar baz'", "foo bar baz" },
187-
.{ "gs.className", "foo bar baz" },
188-
.{ "cl.length", "3" },
189-
.{ "gs.className = 'ok empty'", "ok empty" },
190-
.{ "cl.length", "2" },
191-
}, .{});
192-
193-
try runner.testCases(&.{
194-
.{ "let cl2 = gs.classList", "undefined" },
195-
.{ "cl2.length", "2" },
196-
.{ "cl2.item(0)", "ok" },
197-
.{ "cl2.item(1)", "empty" },
198-
.{ "cl2.contains('ok')", "true" },
199-
.{ "cl2.contains('nok')", "false" },
200-
.{ "cl2.add('foo', 'bar', 'baz')", "undefined" },
201-
.{ "cl2.length", "5" },
202-
.{ "cl2.remove('foo', 'bar', 'baz')", "undefined" },
203-
.{ "cl2.length", "2" },
204-
}, .{});
205-
206-
try runner.testCases(&.{
207-
.{ "let cl3 = gs.classList", "undefined" },
208-
.{ "cl3.toggle('ok')", "false" },
209-
.{ "cl3.toggle('ok')", "true" },
210-
.{ "cl3.length", "2" },
211-
}, .{});
212-
213-
try runner.testCases(&.{
214-
.{ "let cl4 = gs.classList", "undefined" },
215-
.{ "cl4.replace('ok', 'nok')", "true" },
216-
.{ "cl4.value", "empty nok" },
217-
.{ "cl4.replace('nok', 'ok')", "true" },
218-
.{ "cl4.value", "empty ok" },
219-
}, .{});
220-
221-
try runner.testCases(&.{
222-
.{ "let cl5 = gs.classList", "undefined" },
223-
.{ "let keys = [...cl5.keys()]", "undefined" },
224-
.{ "keys.length", "2" },
225-
.{ "keys[0]", "0" },
226-
.{ "keys[1]", "1" },
227-
228-
.{ "let values = [...cl5.values()]", "undefined" },
229-
.{ "values.length", "2" },
230-
.{ "values[0]", "empty" },
231-
.{ "values[1]", "ok" },
232-
233-
.{ "let entries = [...cl5.entries()]", "undefined" },
234-
.{ "entries.length", "2" },
235-
.{ "entries[0]", "0,empty" },
236-
.{ "entries[1]", "1,ok" },
237-
}, .{});
238-
239-
try runner.testCases(&.{
240-
.{ "let cl6 = gs.classList", "undefined" },
241-
.{ "cl6.value = 'a b ccc'", "a b ccc" },
242-
.{ "cl6.value", "a b ccc" },
243-
.{ "cl6.toString()", "a b ccc" },
244-
}, .{});
173+
test "Browser: DOM.TokenList" {
174+
try testing.htmlRunner("dom/token_list.html");
245175
}

src/runtime/js.zig

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -332,22 +332,22 @@ pub fn Env(comptime State: type, comptime WebApis: type) type {
332332
pub fn dumpMemoryStats(self: *Self) void {
333333
const stats = self.isolate.getHeapStatistics();
334334
std.debug.print(
335-
\\ Total Heap Size: {d}
336-
\\ Total Heap Size Executable: {d}
337-
\\ Total Physical Size: {d}
338-
\\ Total Available Size: {d}
339-
\\ Used Heap Size: {d}
340-
\\ Heap Size Limit: {d}
341-
\\ Malloced Memory: {d}
342-
\\ External Memory: {d}
343-
\\ Peak Malloced Memory: {d}
344-
\\ Number Of Native Contexts: {d}
345-
\\ Number Of Detached Contexts: {d}
346-
\\ Total Global Handles Size: {d}
347-
\\ Used Global Handles Size: {d}
348-
\\ Zap Garbage: {any}
349-
\\
350-
, .{stats.total_heap_size, stats.total_heap_size_executable, stats.total_physical_size, stats.total_available_size, stats.used_heap_size, stats.heap_size_limit, stats.malloced_memory, stats.external_memory, stats.peak_malloced_memory, stats.number_of_native_contexts, stats.number_of_detached_contexts, stats.total_global_handles_size, stats.used_global_handles_size, stats.does_zap_garbage});
335+
\\ Total Heap Size: {d}
336+
\\ Total Heap Size Executable: {d}
337+
\\ Total Physical Size: {d}
338+
\\ Total Available Size: {d}
339+
\\ Used Heap Size: {d}
340+
\\ Heap Size Limit: {d}
341+
\\ Malloced Memory: {d}
342+
\\ External Memory: {d}
343+
\\ Peak Malloced Memory: {d}
344+
\\ Number Of Native Contexts: {d}
345+
\\ Number Of Detached Contexts: {d}
346+
\\ Total Global Handles Size: {d}
347+
\\ Used Global Handles Size: {d}
348+
\\ Zap Garbage: {any}
349+
\\
350+
, .{ stats.total_heap_size, stats.total_heap_size_executable, stats.total_physical_size, stats.total_available_size, stats.used_heap_size, stats.heap_size_limit, stats.malloced_memory, stats.external_memory, stats.peak_malloced_memory, stats.number_of_native_contexts, stats.number_of_detached_contexts, stats.total_global_handles_size, stats.used_global_handles_size, stats.does_zap_garbage });
351351
}
352352

353353
fn promiseRejectCallback(v8_msg: v8.C_PromiseRejectMessage) callconv(.c) void {

src/tests/dom/performance.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<script src="../testing.js"></script>
2+
<script id=performance>
3+
let performance = window.performance;
4+
testing.expectEqual(true, performance instanceof Performance);
5+
6+
let mark1 = performance.mark("start");
7+
testing.expectEqual(true, mark1 instanceof PerformanceMark);
8+
testing.expectEqual('start', mark1.name);
9+
testing.expectEqual('mark', mark1.entryType);
10+
testing.expectEqual(0, mark1.duration);
11+
testing.expectEqual(null, mark1.detail);
12+
13+
let mark2 = performance.mark("start", {startTime: 32939393.9});
14+
testing.expectEqual(32939393.9, mark2.startTime);
15+
</script>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<script src="../testing.js"></script>
2+
<script id=performanceObserver>
3+
testing.expectEqual(0, PerformanceObserver.supportedEntryTypes.length);
4+
</script>

0 commit comments

Comments
 (0)