| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script> |
| var callbackFunctionTest = internals.callbackFunctionTest(); |
| |
| test(function() { |
| var callback1 = function(msg1, msg2) { |
| return msg1 + ', ' + msg2; |
| }; |
| assert_equals(callbackFunctionTest.testCallback(callback1, 'hello', 'world'), 'SUCCESS: hello, world'); |
| |
| var callback2 = function(msg1, msg2) { |
| return msg1 + msg1 + ' ' + msg2 + msg2; |
| }; |
| assert_equals(callbackFunctionTest.testCallback(callback2, 'hello', 'world'), 'SUCCESS: hellohello worldworld'); |
| }, 'Callback function which takes two strings'); |
| |
| test(function() { |
| var divElement = document.createElement('div'); |
| var addInnerHTML = function(d) { |
| d.innerHTML = 'hello'; |
| }; |
| callbackFunctionTest.testInterfaceCallback(addInnerHTML, divElement); |
| assert_equals(divElement.innerHTML, 'hello'); |
| }, 'Callback function which takes a interface'); |
| |
| test(function() { |
| var callback = function() { |
| assert_equals(this, callbackFunctionTest); |
| }; |
| callbackFunctionTest.testReceiverObjectCallback(callback); |
| }, 'Callback function which takes receiver object'); |
| |
| test(function() { |
| var squareStringNumbers = function(numbers) { |
| return numbers.map(n => (n * n).toString()); |
| }; |
| var results = callbackFunctionTest.testSequenceCallback(squareStringNumbers, [1, 2, 3]); |
| assert_equals(3, results.length); |
| assert_equals('1', results[0]); |
| assert_equals('4', results[1]); |
| assert_equals('9', results[2]); |
| }, 'Callback function which takes a number sequence'); |
| |
| test(function() { |
| var callback = function(enum_value) { |
| assert_equals(enum_value, 'foo'); |
| }; |
| callbackFunctionTest.testEnumCallback(callback, 'foo'); |
| }, 'Callback function which takes an enum value'); |
| |
| test(function() { |
| assert_throws(new TypeError(), function() { |
| callbackFunctionTest.testCallback(null, 'hello', 'world'); |
| }); |
| assert_throws(new TypeError(), function() { |
| callbackFunctionTest.testCallback({}, 'hello', 'world'); |
| }); |
| assert_throws(new TypeError(), function() { |
| callbackFunctionTest.testCallback(1, 'hello', 'world'); |
| }); |
| }, 'Passing non-callable values should throw a TypeError'); |
| |
| test(function() { |
| assert_equals(callbackFunctionTest.testNullableCallback(null, 'hello', 'world'), 'Empty callback'); |
| }, 'Passing null to nullable callback argument'); |
| </script> |