blob: c42648cd5dc13a30235aa2dd95dc5bc9f8561f4d [file] [log] [blame]
<!DOCTYPE html>
<html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<title>Test int bit math.</title>
<script src="js/whlsl-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.ifStatement = async () =>
{
let program = `
int foo(int x)
{
int y = 6;
if (x == 7) {
y = 8;
}
return y;
}
`;
assert_equals(await callIntFunction(program, "foo", [makeInt(3)]), 6);
assert_equals(await callIntFunction(program, "foo", [makeInt(4)]), 6);
assert_equals(await callIntFunction(program, "foo", [makeInt(5)]), 6);
assert_equals(await callIntFunction(program, "foo", [makeInt(6)]), 6);
assert_equals(await callIntFunction(program, "foo", [makeInt(7)]), 8);
assert_equals(await callIntFunction(program, "foo", [makeInt(8)]), 6);
assert_equals(await callIntFunction(program, "foo", [makeInt(9)]), 6);
}
whlslTests.ifElseStatement = async () =>
{
let program = `
int foo(int x)
{
int y = 6;
if (x == 7) {
y = 8;
} else {
y = 9;
}
return y;
}
`;
assert_equals(await callIntFunction(program, "foo", [makeInt(3)]), 9);
assert_equals(await callIntFunction(program, "foo", [makeInt(4)]), 9);
assert_equals(await callIntFunction(program, "foo", [makeInt(5)]), 9);
assert_equals(await callIntFunction(program, "foo", [makeInt(6)]), 9);
assert_equals(await callIntFunction(program, "foo", [makeInt(7)]), 8);
assert_equals(await callIntFunction(program, "foo", [makeInt(8)]), 9);
assert_equals(await callIntFunction(program, "foo", [makeInt(9)]), 9);
}
whlslTests.ifElseIfStatement = async () =>
{
let program = `
int foo(int x)
{
int y = 6;
if (x == 7) {
y = 8;
} else if (x == 8) {
y = 9;
}
return y;
}
`;
assert_equals(await callIntFunction(program, "foo", [makeInt(3)]), 6);
assert_equals(await callIntFunction(program, "foo", [makeInt(4)]), 6);
assert_equals(await callIntFunction(program, "foo", [makeInt(5)]), 6);
assert_equals(await callIntFunction(program, "foo", [makeInt(6)]), 6);
assert_equals(await callIntFunction(program, "foo", [makeInt(7)]), 8);
assert_equals(await callIntFunction(program, "foo", [makeInt(8)]), 9);
assert_equals(await callIntFunction(program, "foo", [makeInt(9)]), 6);
}
whlslTests.ifElseIfElseStatement = async () =>
{
let program = `
int foo(int x)
{
int y = 6;
if (x == 7) {
y = 8;
} else if (x == 8) {
y = 9;
} else {
y = 10;
}
return y;
}
`;
assert_equals(await callIntFunction(program, "foo", [makeInt(3)]), 10);
assert_equals(await callIntFunction(program, "foo", [makeInt(4)]), 10);
assert_equals(await callIntFunction(program, "foo", [makeInt(5)]), 10);
assert_equals(await callIntFunction(program, "foo", [makeInt(6)]), 10);
assert_equals(await callIntFunction(program, "foo", [makeInt(7)]), 8);
assert_equals(await callIntFunction(program, "foo", [makeInt(8)]), 9);
assert_equals(await callIntFunction(program, "foo", [makeInt(9)]), 10);
}
runTests(whlslTests);
</script>
</html>