<!DOCTYPE html>
<html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<title>Test structs.</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.vectorTypeSyntax = async () =>
{
    let program = `
        int foo2()
        {
            int2 x;
            vector<int, 2> z = int2(3, 4);
            x = z;
            return x.y;
        }

        int foo3()
        {
            int3 x;
            vector<int, 3> z = int3(3, 4, 5);
            x = z;
            return x.z;
        }

        int foo4()
        {
            int4 x;
            vector<int,4> z = int4(3, 4, 5, 6);
            x = z;
            return x.w;
        }`;

    assert_equals(await callIntFunction(program, "foo2", []), 4);
    assert_equals(await callIntFunction(program, "foo3", []), 5);
    assert_equals(await callIntFunction(program, "foo4", []), 6);

    program = `
        typedef i = int;
        int foo2()
        {
            int2 x;
            vector<i, 2> z = int2(3, 4);
            x = z;
            return x.y;
        }`;

    assert_equals(await callIntFunction(program, "foo2", []), 4);
}
runTests(whlslTests);
</script>
</html>
