<!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: 4, dimension: "1d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 4, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},
        {width: 2, height: 2, depth: 1, mipLevelCount: 1, sampleCount: 4, dimension: "2d", format: "rgba8unorm", usage: 0, success: true},
        {width: 2, height: 2, depth: 1, mipLevelCount: 2, sampleCount: 4, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 4, 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: 4, dimension: "2d", format: "rgba8unorm", usage: 0, success: false},
        {width: 1, height: 1, depth: 1, 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},
        {width: 1, height: 1, depth: 1, mipLevelCount: 1, sampleCount: 4, dimension: "2d", format: "rgba8unorm", usage: GPUTextureUsage.STORAGE, success: false},
    ];
    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>
