<!DOCTYPE html>
<html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<title>Length.</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 = {};
const epsilon = 0.0001;

whlslTests.vectorIndexAssign = async () => {
    const program = `
        float foo(float a, float b) {
            float2 x;
            x[0] = a;
            x[1] = b;
            return length(x);
        }
    `;

    const data = [
        [NaN, 10],
        [10, NaN],
        [20, 10],
        [0, 0],
    ];

    for (const [x, y] of data) {
        const result = await callFloatFunction(program,  "foo", [makeFloat(x), makeFloat(y)]);
        if (isNaN(x) || isNaN(y)) {
            if (!isNaN(result))
                throw new Error("Result should be NaN.");
        } else
            assert_approx_equals(result, Math.sqrt(x*x + y*y), epsilon);
    }
};

runTests(whlslTests);
</script>
</html>
