| <!DOCTYPE html> |
| <html> |
| <meta charset=utf-8> |
| <meta name="timeout" content="long"> |
| <title>Enums.</title> |
| <script src="js/test-harness.js"></script> |
| <script src="../js/webgpu-functions.js"></script> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| const whlslTests = {}; |
| |
| whlslTests.simpleEnumFromInt = async () => { |
| let program = ` |
| enum Foo { |
| A, |
| B, |
| C |
| } |
| |
| int foo(int x) { |
| return int(Foo(x)); |
| } |
| `; |
| |
| assert_equals(await callIntFunction(program, "foo", [makeInt(42)]), 0); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(0)]), 0); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(1)]), 1); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(2)]), 2); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(-1)]), 0); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(2147483647)]), 0); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(-2147483648)]), 0); |
| }; |
| |
| whlslTests.simpleEnumFromUint = async () => { |
| let program = ` |
| enum Foo : uint { |
| A, |
| B, |
| C |
| } |
| |
| uint foo(uint x) { |
| return uint(Foo(x)); |
| } |
| `; |
| |
| assert_equals(await callUintFunction(program, "foo", [makeUint(0)]), 0); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(1)]), 1); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(2)]), 2); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(42)]), 0); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(1000000)]), 0); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(4294967295)]), 0); |
| }; |
| |
| whlslTests.weirdEnumFromInt = async () => { |
| let program = ` |
| enum Foo : int { |
| A = 42, |
| B = -1000, |
| C = 101010, |
| D = 0 |
| } |
| |
| int foo(int x) { |
| return int(Foo(x)); |
| } |
| `; |
| |
| assert_equals(await callIntFunction(program, "foo", [makeInt(0)]), 0); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(42)]), 42); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(-1000)]), -1000); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(101010)]), 101010); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(-1)]), 0); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(2147483647)]), 0); |
| assert_equals(await callIntFunction(program, "foo", [makeInt(-2147483648)]), 0); |
| }; |
| |
| whlslTests.weirdEnumFromUint = async () => { |
| let program = ` |
| enum Foo : uint { |
| A = 42, |
| C = 101010, |
| D = 0 |
| } |
| |
| uint foo(uint x) { |
| return uint(Foo(x)); |
| } |
| `; |
| |
| assert_equals(await callUintFunction(program, "foo", [makeUint(0)]), 0); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(42)]), 42); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(101010)]), 101010); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(4294967295)]), 0); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(1)]), 0); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(41)]), 0); |
| assert_equals(await callUintFunction(program, "foo", [makeUint(101011)]), 0); |
| }; |
| |
| runTests(whlslTests); |
| </script> |
| </html> |