OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="/w3c/resources/testharness.js"></script> | 4 <script src="/w3c/resources/testharness.js"></script> |
5 <script src="/w3c/resources/testharnessreport.js"></script> | 5 <script src="/w3c/resources/testharnessreport.js"></script> |
6 | 6 |
7 <link rel='stylesheet' href='/w3c/resources/testharness.css'> | 7 <link rel='stylesheet' href='/w3c/resources/testharness.css'> |
8 </head> | 8 </head> |
9 <body> | 9 <body> |
10 <div id="log"></div> | 10 <div id="log"></div> |
11 <script> | 11 <script> |
12 function checkConstructionSucceeds(type, language, label, kinds, byt
eStreamTrackID) | 12 function checkConstructionSucceeds(type, language, label, kinds, byt
eStreamTrackID) |
13 { | 13 { |
14 var trackDefault = new TrackDefault(type, language, label, kinds
, byteStreamTrackID); | 14 var trackDefault = new TrackDefault(type, language, label, kinds
, byteStreamTrackID); |
15 assert_equals(trackDefault.type, type, "type"); | 15 assert_equals(trackDefault.type, type, "type"); |
16 assert_equals(trackDefault.language, language, "language"); | 16 assert_equals(trackDefault.language, language, "language"); |
17 assert_equals(trackDefault.label, label, "label"); | 17 assert_equals(trackDefault.label, label, "label"); |
18 assert_equals(trackDefault.byteStreamTrackID, byteStreamTrackID,
"byteStreamTrackID"); | 18 assert_equals(trackDefault.byteStreamTrackID, byteStreamTrackID,
"byteStreamTrackID"); |
19 assert_array_equals(trackDefault.kinds, kinds, "kinds"); | 19 assert_array_equals(trackDefault.kinds, kinds, "kinds"); |
20 } | 20 } |
21 | 21 |
22 function checkConstructionFails(type, language, label, kinds, byteSt
reamTrackID) | 22 function checkConstructionFails(type, language, label, kinds, byteSt
reamTrackID, expectedException) |
23 { | 23 { |
24 assert_throws(new TypeError(), | 24 assert_throws(expectedException, |
25 function() { new TrackDefault(type, language, label, kinds,
byteStreamTrackID); }, | 25 function() { new TrackDefault(type, language, label, kinds,
byteStreamTrackID); }, |
26 "TrackDefault construction threw an exception"); | 26 "TrackDefault construction threw an exception"); |
27 } | 27 } |
28 | 28 |
29 function trackDefaultConstructionTest(type, language, label, kinds,
byteStreamTrackID, expectation, description) | 29 function trackDefaultConstructionTest(type, language, label, kinds,
byteStreamTrackID, expectation, description) |
30 { | 30 { |
31 test(function() | 31 test(function() |
32 { | 32 { |
33 if (expectation) | 33 if (expectation) |
34 checkConstructionSucceeds(type, language, label, kinds,
byteStreamTrackID); | 34 checkConstructionSucceeds(type, language, label, kinds,
byteStreamTrackID); |
35 else | 35 else |
36 checkConstructionFails(type, language, label, kinds, byt
eStreamTrackID); | 36 checkConstructionFails(type, language, label, kinds, byt
eStreamTrackID, new TypeError()); |
37 }, description + ": type '" + type + "', language '" + language
+ "', label '" + label + "', multiple kinds, byteStreamTrackID '" + byteStreamTr
ackID + "'"); | 37 }, description + ": type '" + type + "', language '" + language
+ "', label '" + label + "', multiple kinds, byteStreamTrackID '" + byteStreamTr
ackID + "'"); |
38 | 38 |
39 // If all of |kinds| are expected to succeed, also test each kin
d individually. | 39 // If all of |kinds| are expected to succeed, also test each kin
d individually. |
40 if (!expectation || kinds.length <= 1) | 40 if (!expectation || kinds.length <= 1) |
41 return; | 41 return; |
42 for (var i = 0; i < kinds.length; ++i) { | 42 for (var i = 0; i < kinds.length; ++i) { |
43 test(function() | 43 test(function() |
44 { | 44 { |
45 checkConstructionSucceeds(type, language, label, new Arr
ay(kinds[i]), byteStreamTrackID); | 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 + "'"); | 46 }, description + ": type '" + type + "', language '" + langu
age + "', label '" + label + "', kind '" + kinds[i] + "', byteStreamTrackID '" +
byteStreamTrackID + "'"); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 trackDefaultConstructionTest("audio", "en-US", "audio label", VALID_
VIDEO_TRACK_KINDS, "1", false, "Test mixed valid and invalid audio kinds"); | 84 trackDefaultConstructionTest("audio", "en-US", "audio label", VALID_
VIDEO_TRACK_KINDS, "1", false, "Test mixed valid and invalid audio kinds"); |
85 | 85 |
86 trackDefaultConstructionTest("video", "en-US", "video label", VALID_
AUDIO_TRACK_KINDS, "1", false, "Test mixed valid and invalid video kinds"); | 86 trackDefaultConstructionTest("video", "en-US", "video label", VALID_
AUDIO_TRACK_KINDS, "1", false, "Test mixed valid and invalid video kinds"); |
87 | 87 |
88 trackDefaultConstructionTest("text", "en-US", "text label", VALID_VI
DEO_TRACK_KINDS, "1", false, "Test mixed valid and invalid text kinds"); | 88 trackDefaultConstructionTest("text", "en-US", "text label", VALID_VI
DEO_TRACK_KINDS, "1", false, "Test mixed valid and invalid text kinds"); |
89 | 89 |
90 trackDefaultConstructionTest("invalid type", "en-US", "label", VALID
_AUDIO_TRACK_KINDS, "1", false, "Test invalid 'type' parameter type passed to Tr
ackDefault constructor"); | 90 trackDefaultConstructionTest("invalid type", "en-US", "label", VALID
_AUDIO_TRACK_KINDS, "1", false, "Test invalid 'type' parameter type passed to Tr
ackDefault constructor"); |
91 | 91 |
92 test(function() | 92 test(function() |
93 { | 93 { |
94 checkConstructionFails("audio", "en-US", "label", "this is not a
valid sequence", "1"); | 94 checkConstructionFails("audio", "invalid language", "audio label
", VALID_AUDIO_TRACK_KINDS, "1", 'InvalidAccessError'); |
| 95 |
| 96 }, "Test invalid 'language' parameter syntax passed to TrackDefault
constructor"); |
| 97 |
| 98 test(function() |
| 99 { |
| 100 checkConstructionFails("audio", "en-US", "label", "this is not a
valid sequence", "1", new TypeError()); |
95 }, "Test invalid 'kinds' parameter type passed to TrackDefault const
ructor"); | 101 }, "Test invalid 'kinds' parameter type passed to TrackDefault const
ructor"); |
96 | 102 |
97 test(function() | 103 test(function() |
98 { | 104 { |
99 var trackDefault = new TrackDefault("audio", "en-US", "label", V
ALID_AUDIO_TRACK_KINDS, "1"); | 105 var trackDefault = new TrackDefault("audio", "en-US", "label", V
ALID_AUDIO_TRACK_KINDS, "1"); |
100 var kinds = trackDefault.kinds; | 106 var kinds = trackDefault.kinds; |
101 kinds[0] = "invalid kind"; | 107 kinds[0] = "invalid kind"; |
102 assert_equals(kinds[0], "invalid kind", "local kinds is updated"
); | 108 assert_equals(kinds[0], "invalid kind", "local kinds is updated"
); |
103 assert_equals(VALID_AUDIO_TRACK_KINDS[0], "alternative", "local
original kinds unchanged"); | 109 assert_equals(VALID_AUDIO_TRACK_KINDS[0], "alternative", "local
original kinds unchanged"); |
104 assert_array_equals(trackDefault.kinds, VALID_AUDIO_TRACK_KINDS,
"trackDefault kinds unchanged"); | 110 assert_array_equals(trackDefault.kinds, VALID_AUDIO_TRACK_KINDS,
"trackDefault kinds unchanged"); |
105 }, "Test updating the retval of TrackDefault.kinds does not modify T
rackDefault.kinds"); | 111 }, "Test updating the retval of TrackDefault.kinds does not modify T
rackDefault.kinds"); |
106 | 112 |
107 </script> | 113 </script> |
108 </body> | 114 </body> |
109 </html> | 115 </html> |
OLD | NEW |