| OLD | NEW | 
| (Empty) |  | 
 |   1 <!DOCTYPE html> | 
 |   2 <script src="../../resources/js-test.js"></script> | 
 |   3 <div id="description"></div> | 
 |   4 <div id="console"></div> | 
 |   5 <script> | 
 |   6 // http://heycam.github.io/webidl/#es-operations | 
 |   7 description('Operations that return a Promise type should handle exceptions ' + | 
 |   8             'by returning a rejected Promise with the exception.') | 
 |   9  | 
 |  10 window.jsTestIsAsync = true; | 
 |  11  | 
 |  12 var reason; | 
 |  13  | 
 |  14 function shouldBeRejected(promise, message) { | 
 |  15     return promise.then(function() { | 
 |  16         testFailed('Resolved unexpectedly: ' + message); | 
 |  17     }, function(e) { | 
 |  18         reason = e; | 
 |  19         testPassed('Rejected as expected: ' + message); | 
 |  20         shouldBeTrue('reason instanceof Error'); | 
 |  21         debug(e); | 
 |  22     }); | 
 |  23 } | 
 |  24  | 
 |  25 function shouldBeResolved(promise, message) { | 
 |  26     return promise.then(function() { | 
 |  27         testPassed('Resolved as expected: ' + message); | 
 |  28     }, function(e) { | 
 |  29         testFailed('Rejected unexpectedly: ' + message); | 
 |  30         reason = e; | 
 |  31         shouldBeTrue('reason instanceof Error'); | 
 |  32         debug(e); | 
 |  33     }); | 
 |  34 } | 
 |  35  | 
 |  36 var check = internals.promiseCheck.bind(internals); | 
 |  37 var check2 = internals.promiseCheckWithoutExceptionState.bind(internals); | 
 |  38 var check3 = internals.promiseCheckRange.bind(internals); | 
 |  39  | 
 |  40 Promise.resolve().then(function() { | 
 |  41     return shouldBeRejected(check(), 'no arguments'); | 
 |  42 }).then(function() { | 
 |  43     return shouldBeResolved(check(3, true, {}, '', ['']), 'valid arguments'); | 
 |  44 }).then(function() { | 
 |  45     return shouldBeResolved(check(null, true, {}, '', []), 'convert(long)'); | 
 |  46 }).then(function() { | 
 |  47     return shouldBeResolved(check(3, {}, {}, '', []), 'convert(boolean)'); | 
 |  48 }).then(function() { | 
 |  49     return shouldBeRejected(check(3, true, 3, '', []), 'type error(Dictionary)')
    ; | 
 |  50 }).then(function() { | 
 |  51     return shouldBeResolved(check(3, true, {}, {}, []), 'convert(String)'); | 
 |  52 }).then(function() { | 
 |  53     var x = { | 
 |  54         toString: function() { | 
 |  55             throw Error('Thrown from toString'); | 
 |  56         } | 
 |  57     }; | 
 |  58     return shouldBeRejected(check(3, true, {}, x, []), 'conversion error(toStrin
    g)'); | 
 |  59 }).then(function() { | 
 |  60     var x = { | 
 |  61         toString: function() { | 
 |  62             throw Error('Thrown from toString'); | 
 |  63         } | 
 |  64     }; | 
 |  65     return shouldBeRejected(check(3, true, {}, '', [x]), 'conversion error([Stri
    ng])'); | 
 |  66 }).then(function() { | 
 |  67     return shouldBeRejected(check(3, false, {}, '', []), 'rejected by the impl')
    ; | 
 |  68 }).then(function() { | 
 |  69     return shouldBeRejected(check2(), 'no arguments'); | 
 |  70 }).then(function() { | 
 |  71     return shouldBeResolved(check2({}, '', '', ''), 'valid arguments'); | 
 |  72 }).then(function() { | 
 |  73     return shouldBeResolved(check2({}, ''), 'valid arguments'); | 
 |  74 }).then(function() { | 
 |  75     return shouldBeRejected(check2(3, ''), 'type error(Dictionary)'); | 
 |  76 }).then(function() { | 
 |  77     return shouldBeResolved(check2({}, '', {}, 3), 'convert(String...)'); | 
 |  78 }).then(function() { | 
 |  79     var x = { | 
 |  80         toString: function() { | 
 |  81             throw Error('Thrown from toString'); | 
 |  82         } | 
 |  83     }; | 
 |  84     return shouldBeRejected(check2({}, '', '', x), 'conversion error(String...)'
    ); | 
 |  85 }).then(function() { | 
 |  86     return shouldBeRejected(check3(-1), 'range error(octet)'); | 
 |  87 }).then(undefined, function(e) { | 
 |  88     testFailed('An exception is thrown from a method'); | 
 |  89     debug(e); | 
 |  90 }).then(finishJSTest, finishJSTest); | 
 |  91 </script> | 
| OLD | NEW |