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

            let tests = [
                {
                    message: "set volume to a valid value.",
                    constraint: { volume: .5 }, 
                    expected: { volume: .5, echoCancellation: false }, 
                },
                {
                    message: "the 'exact' constraint it too big, promise should reject and no settings should change.",
                    constraint: { volume: { exact: 2.1 } }, 
                    expected: { volume: .5, echoCancellation: false }, 
                    error: "volume",
                },
                {
                    message: "the 'exact' constraint it too small, promise should reject and no settings should change.",
                    constraint: { volume: { exact: -1 } }, 
                    expected: { volume: .5, echoCancellation: false }, 
                    error: "volume",
                },
                {
                    message: "set echoCancellation to a valid value.",
                    constraint: { echoCancellation: true }, 
                    expected: { volume: .5, echoCancellation: true }, 
                },
                {
                    message: "constraint not supported by an audio track should be ignored.",
                    constraint: { facingMode: "environment", frameRate: 30, volume: 1.0 }, 
                    expected: { volume: 1.0, echoCancellation: true }, 
                },
                
            ];

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

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

    </body>
</html>

