| OLD | NEW | 
| (Empty) |  | 
 |    1 <!DOCTYPE html> | 
 |    2 <html> | 
 |    3     <head> | 
 |    4         <script src="/w3c/resources/testharness.js"></script> | 
 |    5         <script src="/w3c/resources/testharnessreport.js"></script> | 
 |    6  | 
 |    7         <link rel='stylesheet' href='/w3c/resources/testharness.css'> | 
 |    8     </head> | 
 |    9     <body> | 
 |   10         <div id="log"></div> | 
 |   11         <script> | 
 |   12             function checkConstructionSucceeds(type, language, label, kinds, byt
     eStreamTrackID) | 
 |   13             { | 
 |   14                 var trackDefault = new TrackDefault(type, language, label, kinds
     , byteStreamTrackID); | 
 |   15                 assert_equals(trackDefault.type, type, "type"); | 
 |   16                 assert_equals(trackDefault.language, language, "language"); | 
 |   17                 assert_equals(trackDefault.label, label, "label"); | 
 |   18                 assert_equals(trackDefault.byteStreamTrackID, byteStreamTrackID,
      "byteStreamTrackID"); | 
 |   19                 assert_array_equals(trackDefault.kinds, kinds, "kinds"); | 
 |   20             } | 
 |   21  | 
 |   22             function checkConstructionFails(type, language, label, kinds, byteSt
     reamTrackID) | 
 |   23             { | 
 |   24                 assert_throws("InvalidAccessError", | 
 |   25                     function() { new TrackDefault(type, language, label, kinds, 
     byteStreamTrackID); }, | 
 |   26                     "TrackDefault construction threw an exception"); | 
 |   27             } | 
 |   28  | 
 |   29             function trackDefaultConstructionTest(type, language, label, kinds, 
     byteStreamTrackID, expectation, description) | 
 |   30             { | 
 |   31                 test(function() | 
 |   32                 { | 
 |   33                     if (expectation) | 
 |   34                         checkConstructionSucceeds(type, language, label, kinds, 
     byteStreamTrackID); | 
 |   35                     else | 
 |   36                         checkConstructionFails(type, language, label, kinds, byt
     eStreamTrackID); | 
 |   37                 }, description + ": type '" + type + "', language '" + language 
     + "', label '" + label + "', multiple kinds, byteStreamTrackID '" + byteStreamTr
     ackID + "'"); | 
 |   38  | 
 |   39                 // If all of |kinds| are expected to succeed, also test each kin
     d individually. | 
 |   40                 if (!expectation || kinds.length <= 1) | 
 |   41                     return; | 
 |   42                 for (var i = 0; i < kinds.length; ++i) { | 
 |   43                     test(function() | 
 |   44                     { | 
 |   45                         checkConstructionSucceeds(type, language, label, new Arr
     ay(kinds[i]), byteStreamTrackID); | 
 |   46                     }, description + ": type '" + type + "', language '" + langu
     age + "', label '" + label + "', kind '" + kinds[i] + "', byteStreamTrackID '" +
      byteStreamTrackID + "'"); | 
 |   47                 } | 
 |   48             } | 
 |   49  | 
 |   50             var VALID_AUDIO_TRACK_KINDS = [ | 
 |   51                 "alternative", | 
 |   52                 "descriptions", | 
 |   53                 "main", | 
 |   54                 "main-desc", | 
 |   55                 "translation", | 
 |   56                 "commentary", | 
 |   57                 "", | 
 |   58             ]; | 
 |   59  | 
 |   60             var VALID_VIDEO_TRACK_KINDS = [ | 
 |   61                 "alternative", | 
 |   62                 "captions", | 
 |   63                 "main", | 
 |   64                 "sign", | 
 |   65                 "subtitles", | 
 |   66                 "commentary", | 
 |   67                 "", | 
 |   68             ]; | 
 |   69  | 
 |   70             var VALID_TEXT_TRACK_KINDS = [ | 
 |   71                 "subtitles", | 
 |   72                 "captions", | 
 |   73                 "descriptions", | 
 |   74                 "chapters", | 
 |   75                 "metadata", | 
 |   76             ]; | 
 |   77  | 
 |   78             trackDefaultConstructionTest("audio", "en-US", "audio label", VALID_
     AUDIO_TRACK_KINDS, "1", true, "Test valid audio kinds"); | 
 |   79  | 
 |   80             trackDefaultConstructionTest("video", "en-US", "video label", VALID_
     VIDEO_TRACK_KINDS, "1", true, "Test valid video kinds"); | 
 |   81  | 
 |   82             trackDefaultConstructionTest("text", "en-US", "text label", VALID_TE
     XT_TRACK_KINDS, "1", true, "Test valid text kinds"); | 
 |   83  | 
 |   84             trackDefaultConstructionTest("audio", "en-US", "audio label", VALID_
     VIDEO_TRACK_KINDS, "1", false, "Test mixed valid and invalid audio kinds"); | 
 |   85  | 
 |   86             trackDefaultConstructionTest("video", "en-US", "video label", VALID_
     AUDIO_TRACK_KINDS, "1", false, "Test mixed valid and invalid video kinds"); | 
 |   87  | 
 |   88             trackDefaultConstructionTest("text", "en-US", "text label", VALID_VI
     DEO_TRACK_KINDS, "1", false, "Test mixed valid and invalid text kinds"); | 
 |   89  | 
 |   90             test(function() | 
 |   91             { | 
 |   92                 assert_throws(new TypeError(), | 
 |   93                     function() { new TrackDefault("invalid type", "en-US", "labe
     l", VALID_AUDIO_TRACK_KINDS, "1"); }, | 
 |   94                     "TrackDefault construction threw an exception"); | 
 |   95             }, "Test invalid 'type' parameter type passed to TrackDefault constr
     uctor"); | 
 |   96  | 
 |   97             test(function() | 
 |   98             { | 
 |   99                 assert_throws(new TypeError(), | 
 |  100                     function() { new TrackDefault("audio", "en-US", "label", "th
     is is not a valid sequence", "1"); }, | 
 |  101                     "TrackDefault construction threw an exception"); | 
 |  102             }, "Test invalid 'kinds' parameter type passed to TrackDefault const
     ructor"); | 
 |  103  | 
 |  104             test(function() | 
 |  105             { | 
 |  106                 var trackDefault = new TrackDefault("audio", "en-US", "label", V
     ALID_AUDIO_TRACK_KINDS, "1"); | 
 |  107                 var kinds = trackDefault.kinds; | 
 |  108                 kinds[0] = "invalid kind"; | 
 |  109                 assert_equals(kinds[0], "invalid kind", "local kinds is updated"
     ); | 
 |  110                 assert_equals(VALID_AUDIO_TRACK_KINDS[0], "alternative", "local 
     original kinds unchanged"); | 
 |  111                 assert_array_equals(trackDefault.kinds, VALID_AUDIO_TRACK_KINDS,
      "trackDefault kinds unchanged"); | 
 |  112             }, "Test updating the retval of TrackDefault.kinds does not modify T
     rackDefault.kinds"); | 
 |  113  | 
 |  114         </script> | 
 |  115     </body> | 
 |  116 </html> | 
| OLD | NEW |