<!DOCTYPE html>
<meta charset=utf-8>
<title>Tests for creating texture views.</title>
<meta name="timeout" content="long">
<body>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="js/webgpu-functions.js"></script>
<script>
async function runTests() {
    let tests = [
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "1d", format: "rgba8unorm", usage: 0, success: true},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "3d", format: "rgba8unorm", usage: 0, success: true},

        // Test negative values
        {width: -1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: -1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: -1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: -1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: -1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: -1, success: false},

        // Test zero values
        {width: 0, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 0, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 0, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 0, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 0, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},

        // Test maximum sizes
        {width: 10000, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "1d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 3000, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "1d", format: "rgba8unorm", usage: 0, success: false},
        {width: 10000, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 10000, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 3000, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 3000, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "3d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 3000, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "3d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 3000, mipLevelCount: 1, sampleCount: 1, dimension: "3d", format: "rgba8unorm", usage: 0, success: false},

        // Test mipmapped textures
        {width: 2, height: 1, depth: 1, mipLevelCount: 2, sampleCount: 1, dimension: "1d", format: "rgba8unorm", usage: 0, success: false},
        {width: 2, height: 2, depth: 1, mipLevelCount: 2, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},
        {width: 2, height: 1, depth: 1, mipLevelCount: 2, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},
        {width: 2, height: 2, depth: 2, mipLevelCount: 2, sampleCount: 1, dimension: "3d", format: "rgba8unorm", usage: 0, success: true},
        {width: 2, height: 2, depth: 1, mipLevelCount: 3, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 2, height: 2, depth: 2, mipLevelCount: 3, sampleCount: 1, dimension: "3d", format: "rgba8unorm", usage: 0, success: false},

        // Test multisampling
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 2, dimension: "1d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 2, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},
        {width: 2, height: 2, depth: 1, mipLevelCount: 1, sampleCount: 2, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},
        {width: 2, height: 2, depth: 1, mipLevelCount: 2, sampleCount: 2, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 2, dimension: "3d", format: "rgba8unorm", usage: 0, success: false},
        {width: 2, height: 2, depth: 1, mipLevelCount: 1, sampleCount: 3, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 2, height: 2, depth: 1, mipLevelCount: 1, sampleCount: 300, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 2, height: 2, depth: 2, mipLevelCount: 1, sampleCount: 2, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},

        // Test dimension
        {width: 2, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "1d", format: "rgba8unorm", usage: 0, success: true},
        {width: 1, height: 2, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "1d", format: "rgba8unorm", usage: 0, success: true},
        {width: 1, height: 1, depth: 2, mipLevelCount: 1, sampleCount: 1, dimension: "1d", format: "rgba8unorm", usage: 0, success: false},
        {width: 2, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},
        {width: 1, height: 2, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},
        {width: 1, height: 1, depth: 2, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},

        // Test depth textures
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "1d", format: "depth32float-stencil8", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "depth32float-stencil8", usage: 0, success: true},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 2, dimension: "2d", format: "depth32float-stencil8", usage: 0, success: false},

        // Test enums
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "garbage", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "garbage", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8uint", usage: 0, success: true},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "bgra8unorm", usage: 0, success: true},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "bgra8unorm-srgb", usage: 0, success: true},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba16float", usage: 0, success: true},

        // Test usage
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: 1000, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 1, dimension: "2d", format: "rgba8unorm", usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST | GPUTextureUsage.SAMPLED | GPUTextureUsage.STORAGE | GPUTextureUsage.OUTPUT_ATTACHMENT, success: true},
    ];
    for (let test of tests) {
        promise_test(() => {
        return getBasicDevice().then(async function(device) {
            let caught = false;
            device.pushErrorScope("validation");
            try {
                let texture = device.createTexture({size: {width: test.width, height: test.height, depth: test.depth}, mipLevelCount: test.mipLevelCount, sampleCount: test.sampleCount, dimension: test.dimension, format: test.format, usage: test.usage});
                assert_true(texture instanceof GPUTexture, "Cannot create texture.");
            } catch {
                assert_true(!test.success, "Creating texture should " + (test.success ? "not " : "") + "fail.");
                caught = true;
            }
            await device.popErrorScope().then(function(error) {
                if (test.success) {
                    let message = "Could not create texture: ";
                    if (error && error.message)
                        message += error.message;
                    assert_equals(error, null, "Could not create texture: " + message);
                } else if (!caught) {
                    let message = "Created texture: ";
                    if (error && error.message)
                        message += error.message;
                    assert_true(!!(caught || error), "Created texture when shouldn't have: " + message);
                }
            }, function() {
                assert_true(false, "device lost");
            });
        }, function(e) {
        });
    }, `Creating a texture of width ${test.width} height ${test.height} depth ${test.depth} mipLevelCount ${test.mipLevelCount} sampleCount ${test.sampleCount} dimension ${test.dimension} format ${test.format} usage ${test.usage}.`);
    }
}

runTests();
</script>
</body>
