mediasource-duration-boundaryconditions.html (3668B)
1 <!DOCTYPE html> 2 <!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> 3 <html> 4 <head> 5 <title>MediaSource.duration boundary condition test cases.</title> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="mediasource-util.js"></script> 9 </head> 10 <body> 11 <div id="log"></div> 12 <script> 13 function DurationBoundaryConditionTest(testDurationValue, expectedError, description) 14 { 15 return mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) 16 { 17 // Append initialization segment. 18 test.expectEvent(sourceBuffer, "updateend", "sourceBuffer"); 19 test.expectEvent(mediaElement, "loadedmetadata", "mediaElement"); 20 sourceBuffer.appendBuffer(MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init)); 21 test.waitForExpectedEvents(function() 22 { 23 if (expectedError) { 24 assert_throws_js(expectedError, 25 function() { mediaSource.duration = testDurationValue; }, 26 "mediaSource.duration assignment throws an exception for " + testDurationValue); 27 test.done(); 28 return; 29 } 30 31 mediaSource.duration = testDurationValue; 32 33 assert_equals(mediaSource.duration, testDurationValue, "mediaSource.duration"); 34 assert_equals(mediaElement.duration, testDurationValue, "mediaElement.duration"); 35 36 test.expectEvent(mediaElement, "durationchange", "mediaElement"); 37 test.waitForExpectedEvents(function() 38 { 39 assert_equals(mediaSource.duration, testDurationValue, "mediaSource.duration"); 40 assert_equals(mediaElement.duration, testDurationValue, "mediaElement.duration"); 41 test.done(); 42 }); 43 }); 44 45 }, description); 46 } 47 48 DurationBoundaryConditionTest(Math.pow(2, 31) - 1, null, "Set duration to 2^31 - 1"); 49 DurationBoundaryConditionTest(1, null, "Set duration to 1"); 50 DurationBoundaryConditionTest(Number.MAX_VALUE, null, "Set duration to Number.MAX_VALUE"); 51 DurationBoundaryConditionTest(Number.MIN_VALUE, null, "Set duration to Number.MIN_VALUE"); 52 DurationBoundaryConditionTest(Number.MAX_VALUE - 1, null, "Set duration to Number.MAX_VALUE - 1"); 53 DurationBoundaryConditionTest(Number.MIN_VALUE - 1, TypeError, "Set duration to Number.MIN_VALUE - 1"); 54 DurationBoundaryConditionTest(Number.POSITIVE_INFINITY, null, "Set duration to Number.POSITIVE_INFINITY"); 55 DurationBoundaryConditionTest(Number.NEGATIVE_INFINITY, TypeError, "Set duration to Number.NEGATIVE_INFINITY"); 56 DurationBoundaryConditionTest(-1 * Number.MAX_VALUE, TypeError, "Set duration to lowest value."); 57 DurationBoundaryConditionTest(-101.9, TypeError, "Set duration to a negative double."); 58 DurationBoundaryConditionTest(101.9, null, "Set duration to a positive double."); 59 DurationBoundaryConditionTest(0, null, "Set duration to zero"); 60 DurationBoundaryConditionTest(NaN, TypeError, "Set duration to NaN"); 61 </script> 62 </body> 63 </html>