<!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: 3000, height: 2000 },
                                    ]
                                },
                    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>

