[WHLSL] Move WHLSL tests to their own folder
[WebKit-https.git] / LayoutTests / webgpu / whlsl / ternary-spec-test.html
1 <!DOCTYPE html>
2 <html>
3 <meta charset=utf-8>
4 <meta name="timeout" content="long">
5 <title>Test int bit math.</title>
6 <script src="js/test-harness.js"></script>
7 <script src="../js/webgpu-functions.js"></script>
8 <script src="../../resources/testharness.js"></script>
9 <script src="../../resources/testharnessreport.js"></script>
10 <script>
11 const whlslTests = {};
12
13 whlslTests.ternaryExpression = async () => {
14     let program = `
15         int foo(int x)
16         {
17             return x < 3 ? 4 : 5;
18         }
19         int bar(int x)
20         {
21             return x < 10 ? 11 : x < 12 ? 14 : 15;
22         }
23         int baz(int x)
24         {
25             return 3 < 4 ? x : 5;
26         }
27     `;
28     assert_equals(await callIntFunction(program, "foo", [makeInt(767)]), 5);
29     assert_equals(await callIntFunction(program, "foo", [makeInt(2)]), 4);
30     assert_equals(await callIntFunction(program, "bar", [makeInt(8)]), 11);
31     assert_equals(await callIntFunction(program, "bar", [makeInt(9)]), 11);
32     assert_equals(await callIntFunction(program, "bar", [makeInt(10)]), 14);
33     assert_equals(await callIntFunction(program, "bar", [makeInt(11)]), 14);
34     assert_equals(await callIntFunction(program, "bar", [makeInt(12)]), 15);
35     assert_equals(await callIntFunction(program, "bar", [makeInt(13)]), 15);
36     assert_equals(await callIntFunction(program, "baz", [makeInt(14)]), 14);
37     await checkFail(
38         `
39             int foo()
40             {
41                 int x;
42                 (4 < 5 ? x : 7) = 8;
43             }
44         `);
45     await checkFail(
46         `
47             int foo()
48             {
49                 int x;
50                 int y;
51                 (0 < 1 ? x : y) = 42;
52                 return x;
53             }
54         `);
55     await checkFail(
56         `
57             int foo()
58             {
59                 int x;
60                 int y;
61                 thread int* z = &(0 < 1 ? x : y);
62                 return *z;
63             }
64         `);
65     await checkFail(
66         `
67             int foo()
68             {
69                 int x;
70                 int y;
71                 thread int[] z = @(0 < 1 ? x : y);
72                 return *z;
73             }
74         `);
75     await checkFail(
76         `
77             int foo()
78             {
79                 int x;
80                 float y;
81                 return 4 < 5 ? x : y;
82             }
83         `);
84     await checkFail(
85         `
86             int foo()
87             {
88                 return 4 < 5 ? 6 : 7.0;
89             }
90         `);
91 }
92
93 runTests(whlslTests);
94 </script>
95 </html>