@@ -57,28 +57,83 @@ pub fn testExecFn(
5757 _ : std.mem.Allocator ,
5858 js_env : * jsruntime.Env ,
5959) anyerror ! void {
60- var basic = [_ ]Case {
61- .{ .src = "let event = new Event('myEvent')" , .ex = "undefined" },
60+ var common = [_ ]Case {
6261 .{ .src = "let content = document.getElementById('content')" , .ex = "undefined" },
62+ .{ .src = "let para = document.getElementById('para')" , .ex = "undefined" },
6363 .{ .src =
64- \\var nb = 0;
65- \\var evt = undefined;
66- \\var phase = undefined;
67- \\var cur = undefined;
68- \\content.addEventListener('myEvent',
69- \\function(event) {
64+ \\var nb = 0; var evt; var phase; var cur;
65+ \\function cbk(event) {
7066 \\evt = event;
7167 \\phase = event.eventPhase;
7268 \\cur = event.currentTarget;
7369 \\nb ++;
74- \\})
70+ \\}
7571 , .ex = "undefined" },
76- .{ .src = "content.dispatchEvent(event)" , .ex = "true" },
72+ };
73+ try checkCases (js_env , & common );
74+
75+ var basic = [_ ]Case {
76+ .{ .src = "content.addEventListener('basic', cbk)" , .ex = "undefined" },
77+ .{ .src = "content.dispatchEvent(new Event('basic'))" , .ex = "true" },
7778 .{ .src = "nb" , .ex = "1" },
7879 .{ .src = "evt instanceof Event" , .ex = "true" },
79- .{ .src = "evt.type" , .ex = "myEvent " },
80+ .{ .src = "evt.type" , .ex = "basic " },
8081 .{ .src = "phase" , .ex = "2" },
81- .{ .src = "cur.localName " , .ex = "div " },
82+ .{ .src = "cur.getAttribute('id') " , .ex = "content " },
8283 };
8384 try checkCases (js_env , & basic );
85+
86+ var basic_child = [_ ]Case {
87+ .{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined" , .ex = "undefined" },
88+ .{ .src = "para.dispatchEvent(new Event('basic'))" , .ex = "true" },
89+ .{ .src = "nb" , .ex = "0" }, // handler is not called, no capture, not the target, no bubbling
90+ .{ .src = "evt === undefined" , .ex = "true" },
91+ };
92+ try checkCases (js_env , & basic_child );
93+
94+ var capture = [_ ]Case {
95+ .{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined" , .ex = "undefined" },
96+ .{ .src = "content.addEventListener('capture', cbk, true)" , .ex = "undefined" },
97+ .{ .src = "content.dispatchEvent(new Event('capture'))" , .ex = "true" },
98+ .{ .src = "nb" , .ex = "1" },
99+ .{ .src = "evt instanceof Event" , .ex = "true" },
100+ .{ .src = "evt.type" , .ex = "capture" },
101+ .{ .src = "phase" , .ex = "2" },
102+ .{ .src = "cur.getAttribute('id')" , .ex = "content" },
103+ };
104+ try checkCases (js_env , & capture );
105+
106+ var capture_child = [_ ]Case {
107+ .{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined" , .ex = "undefined" },
108+ .{ .src = "para.dispatchEvent(new Event('capture'))" , .ex = "true" },
109+ .{ .src = "nb" , .ex = "1" },
110+ .{ .src = "evt instanceof Event" , .ex = "true" },
111+ .{ .src = "evt.type" , .ex = "capture" },
112+ .{ .src = "phase" , .ex = "1" },
113+ .{ .src = "cur.getAttribute('id')" , .ex = "content" },
114+ };
115+ try checkCases (js_env , & capture_child );
116+
117+ var bubbles = [_ ]Case {
118+ .{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined" , .ex = "undefined" },
119+ .{ .src = "content.addEventListener('bubbles', cbk)" , .ex = "undefined" },
120+ .{ .src = "content.dispatchEvent(new Event('bubbles', {bubbles: true}))" , .ex = "true" },
121+ .{ .src = "nb" , .ex = "1" },
122+ .{ .src = "evt instanceof Event" , .ex = "true" },
123+ .{ .src = "evt.type" , .ex = "bubbles" },
124+ .{ .src = "phase" , .ex = "2" },
125+ .{ .src = "cur.getAttribute('id')" , .ex = "content" },
126+ };
127+ try checkCases (js_env , & bubbles );
128+
129+ var bubbles_child = [_ ]Case {
130+ .{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined" , .ex = "undefined" },
131+ .{ .src = "para.dispatchEvent(new Event('bubbles', {bubbles: true}))" , .ex = "true" },
132+ .{ .src = "nb" , .ex = "1" },
133+ .{ .src = "evt instanceof Event" , .ex = "true" },
134+ .{ .src = "evt.type" , .ex = "bubbles" },
135+ .{ .src = "phase" , .ex = "3" },
136+ .{ .src = "cur.getAttribute('id')" , .ex = "content" },
137+ };
138+ try checkCases (js_env , & bubbles_child );
84139}
0 commit comments