<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

        <script src=../media-file.js></script>
        <script src=../video-test.js></script>
        <script>            

            numberOfTrackTests = 2;
            
            function trackLoaded()
            {
                numberOfTracksLoaded++;
                if (numberOfTracksLoaded == numberOfTrackTests) {
                    testTrack0();
                    testTrack1();
                }
            }
            
            
            function testTrack0()
            {
                findMediaElement();
                var expected = 
                {
                    length : 3,
                    tests:
                    [
                        {
                            property : "id",
                            values : ["", "", ""],
                        },
                        {
                            property : "startTime",
                            values : [0.0, 31.0, 61.0],
                        },
                        {
                            property : "endTime",
                            values : [30.5, 60.5, 1200.5],
                        },
                        {
                            property : "text",
                            values : ["Bear is Coming!!!!!", "I said Bear is coming!!!!", "I said Bear is coming now!!!!"],
                        },
                    ],
                };
                testCues(0, expected);

                allTestsEnded();
            }

            function testTrack1()
            {
                findMediaElement();
                var expected = 
                {
                    length : 3,
                    tests:
                    [
                        {
                            property : "id",
                            values : ["", "", ""],
                        },
                        {
                            property : "startTime",
                            values : [0.0, 31.0, 61.0],
                        },
                        {
                            property : "endTime",
                            values : [30.5, 60.5, 1200.5],
                        },
                        {
                            property : "text",
                            values : ["Bear is Coming!!!!!", "I said Bear is coming!!!!", "I said Bear is coming now!!!!"],
                        },
                    ],
                };
                testCues(1, expected);

                allTestsEnded();
            }
        </script>
    </head>
    <body onload="enableAllTextTracks()">
        <p>Tests empty cue identifiers (they are optional), including cues with "-->", which are treated as empty.</p>
        <video>
            <track src="captions-webvtt/tc007-cue-no-id.vtt" onload="trackLoaded()">
            <track src="captions-webvtt/tc007-cue-no-id-error.vtt" onload="trackLoaded()">
        </video>
    </body>
</html>