| OLD | NEW |
| 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | |
| 2 <html> | |
| 3 <head> | |
| 4 <link rel="help" href="http://www.w3.org/TR/2013/WD-2dcontext2-20130528/#dom-con
text-2d-setlinedash"> | 1 <link rel="help" href="http://www.w3.org/TR/2013/WD-2dcontext2-20130528/#dom-con
text-2d-setlinedash"> |
| 5 <script src="../../resources/js-test.js"></script> | 2 <script src="../../resources/testharness.js"></script> |
| 6 </head> | 3 <script src="../../resources/testharnessreport.js"></script> |
| 7 <body> | 4 <body> |
| 8 <script> | 5 <script> |
| 9 description("Test that setLineDash converts input argument into a Web IDL sequen
ce"); | 6 test(function(t) { |
| 10 | 7 |
| 11 var canvas = document.createElement('canvas'); | 8 var canvas = document.createElement('canvas'); |
| 12 document.body.appendChild(canvas); | 9 document.body.appendChild(canvas); |
| 13 canvas.setAttribute('width', '700'); | 10 canvas.setAttribute('width', '700'); |
| 14 canvas.setAttribute('height', '700'); | 11 canvas.setAttribute('height', '700'); |
| 15 var ctx = canvas.getContext('2d'); | 12 var ctx = canvas.getContext('2d'); |
| 16 | 13 |
| 17 var arrayValues = [5, 15, 25]; | 14 var arrayValues = [5, 15, 25]; |
| 18 | 15 |
| 19 function createTestArray(arrayType) { | 16 function createTestArray(arrayType) { |
| 20 var array; | 17 var array; |
| 21 if (arrayType == Object) { | 18 if (arrayType == Object) { |
| 22 // Test a "sequence" (Object with length property). | 19 // Test a "sequence" (Object with length property). |
| 23 array = {length: arrayValues.length}; | 20 array = {length: arrayValues.length}; |
| 24 } else { | 21 } else { |
| 25 array = new arrayType(arrayValues.length); | 22 array = new arrayType(arrayValues.length); |
| 26 } | 23 } |
| 27 | 24 |
| 28 for (var i = 0; i < arrayValues.length; ++i) | 25 for (var i = 0; i < arrayValues.length; ++i) |
| 29 array[i] = arrayValues[i] | 26 array[i] = arrayValues[i] |
| 30 return array; | 27 return array; |
| 31 } | |
| 32 | |
| 33 var lineDash; | |
| 34 var inputArray; | |
| 35 function checkLineDash(testArray, shouldFail) { | |
| 36 inputArray = testArray; | |
| 37 // Reset line dash. | |
| 38 ctx.setLineDash([]); | |
| 39 // Set line dash. | |
| 40 if (shouldFail) { | |
| 41 shouldThrow("ctx.setLineDash(inputArray)", "'TypeError: Failed to execut
e \\'setLineDash\\' on \\'CanvasRenderingContext2D\\': The 1st argument is neith
er an array, nor does it have indexed properties.'"); | |
| 42 } else { | |
| 43 ctx.setLineDash(inputArray); | |
| 44 lineDash = ctx.getLineDash(); | |
| 45 for (var i = 0; i < arrayValues.length; ++i) | |
| 46 shouldBe("lineDash[" + i + "]", "" + arrayValues[i]); | |
| 47 } | 28 } |
| 48 } | 29 |
| 49 | 30 var lineDash; |
| 50 var arrayTypes = [Array, Int8Array, Int16Array, Int32Array, Uint8Array, Uint16Ar
ray, Uint32Array, Float32Array, Float64Array, Uint8ClampedArray, Object]; | 31 var inputArray; |
| 51 | 32 function checkLineDash(testArray, shouldFail) { |
| 52 // Success cases. | 33 inputArray = testArray; |
| 53 for (var i = 0; i < arrayTypes.length; ++i) { | 34 // Reset line dash. |
| 54 debug("* Test passing a " + arrayTypes[i].name + " as input."); | 35 ctx.setLineDash([]); |
| 55 checkLineDash(createTestArray(arrayTypes[i]), false); | 36 // Set line dash. |
| 56 } | 37 if (shouldFail) { |
| 57 | 38 assert_throws(null, function() {ctx.setLineDash(inputArray);}, "'Typ
eError: Failed to execute \\'setLineDash\\' on \\'CanvasRenderingContext2D\\': T
he 1st argument is neither an array, nor does it have indexed properties.'"); |
| 58 // Failure cases. | 39 } else { |
| 59 debug("* Test passing a Date as input."); | 40 ctx.setLineDash(inputArray); |
| 60 checkLineDash(new Date(), true); | 41 lineDash = ctx.getLineDash(); |
| 61 debug("* Test passing a RegExp as input."); | 42 for (var i = 0; i < arrayValues.length; ++i) |
| 62 checkLineDash(new RegExp(), true); | 43 assert_equals(lineDash[i], arrayValues[i]); |
| 63 debug("* Test passing an Object without length as input."); | 44 } |
| 64 checkLineDash({test: 1}, true); | 45 } |
| 65 debug("* Test passing a Number as input."); | 46 |
| 66 checkLineDash(3, true); | 47 var arrayTypes = [Array, Int8Array, Int16Array, Int32Array, Uint8Array, Uint
16Array, Uint32Array, Float32Array, Float64Array, Uint8ClampedArray, Object]; |
| 67 debug("* Test passing a String as input."); | 48 |
| 68 checkLineDash("Test", true); | 49 // Success cases. |
| 69 debug("* Test passing a Boolean as input."); | 50 for (var i = 0; i < arrayTypes.length; ++i) { |
| 70 checkLineDash(true, true); | 51 // Test passing a valid array time as input. |
| 71 debug("* Test passing null as input."); | 52 checkLineDash(createTestArray(arrayTypes[i]), false); |
| 72 checkLineDash(null, true); | 53 } |
| 73 debug("* Test passing undefined as input."); | 54 |
| 74 checkLineDash(undefined, true); | 55 // Failure cases. |
| 56 // Test passing a Date as input. |
| 57 checkLineDash(new Date(), true); |
| 58 // Test passing a RegExp as input. |
| 59 checkLineDash(new RegExp(), true); |
| 60 // Test passing an Object without length as input. |
| 61 checkLineDash({test: 1}, true); |
| 62 // Test passing a Number as input. |
| 63 checkLineDash(3, true); |
| 64 // Test passing a String as input. |
| 65 checkLineDash("Test", true); |
| 66 // Test passing a Boolean as input. |
| 67 checkLineDash(true, true); |
| 68 // Test passing null as input. |
| 69 checkLineDash(null, true); |
| 70 // Test passing undefined as input. |
| 71 checkLineDash(undefined, true); |
| 72 |
| 73 }, 'Test that setLineDash converts input argument into a Web IDL sequence'); |
| 75 </script> | 74 </script> |
| 76 </body> | 75 </body> |
| 77 </html> | |
| OLD | NEW |