<!DOCTYPE html>
<html>
    <head>
        <script src="../../resources/js-test-pre.js"></script>
        <script src="resources/apply-constraints-utils.js"></script>
        <script>

            let tests = [
                {
                    message: "setup width and height.",
                    constraint: { width: 640, height: 480 }, 
                    expected: { width: 640, height: 480 }, 
                },
                {
                    message: "advanced width and height are not supported, minimums are less than current, nothing is changed.",
                    constraint: {
                                    width: { min: 320 },
                                    height: { min: 240 },
                                    advanced: [
                                        { width: 1920, height: 1280 },
                                    ]
                                },
                    expected: { width: 640, height: 480 }, 
                },
                {
                    message: "first width and height in advanced are too big, second is used.",
                    constraint: {
                                    width: { min: 640 },
                                    height: { min: 480 },
                                    advanced: [
                                        { width: 6000, height: 6000 },
                                        { width: 1280, height: 720 },
                                    ]
                                 },
                    expected: { width: 1280, height: 720 }, 
                },
                {
                    message: "reset width and height.",
                    constraint: { width: 320, height: 240 }, 
                    expected: { width: 320, height: 240 }, 
                },
                {
                    message: "advanced width and height are too big, fall back to required minimums.",
                    constraint: {
                                    width: { min: 640 },
                                    height: {  min: 480 },
                                    advanced: [
                                        { width: 7680, height: 4320 },
                                    ]
                                },
                    expected: { width: 640, height: 480 }, 
                },
                {
                    message: "reset width and height.",
                    constraint: { width: 320, height: 240 }, 
                    expected: { width: 320, height: 240 }, 
                },
                {
                    message: "no required constraints, advanced constraints are ignored.",
                    constraint: {
                                    advanced: [
                                        { facingMode: "left" },
                                        { facingMode: "right" },
                                        { facingMode: "environment" },
                                        { facingMode: "user" },
                                    ]
                                },
                    expected: { facingMode: "user" }, 
                },
            ];

            let tester = new ConstraintsTest({ video: true }, tests, "Tests applyConstraints on a video stream track.")
                .onStreamReady((s) => {
                    stream = s;
                    shouldBe('stream.getVideoTracks().length', '1');
                    shouldBe('stream.getAudioTracks().length', '0');
                    tester.setStreamTrack(stream.getVideoTracks()[0]);
                })
                .onVideoReady((v) => {
                    video = v;
                    shouldBe('video.videoTracks.length', '1');
                    shouldBe('video.audioTracks.length', '0');
                })
                .start();

        </script>
        <script src="../../resources/js-test-post.js"></script>
    </head>
    <body>
        <video controls id="video"</video>
        <br>
        <div id="div"></div>

    </body>
</html>

