Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/fast/canvas/canvas-direction.html |
| diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-direction.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-direction.html |
| index bf576b2c22c41326411202c2919ff88549516624..acf2acb0ed0321d7ef4c2d8be516f818bfead192 100644 |
| --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-direction.html |
| +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-direction.html |
| @@ -1,16 +1,7 @@ |
| <html> |
| <head> |
| -<style> |
| -.pass { |
| - color: green; |
| - font-weight: bold; |
| -} |
| - |
| -.fail { |
| - color: red; |
| - font-weight: bold; |
| -} |
| -</style> |
| +<script src="../../resources/testharness.js"></script> |
| +<script src="../../resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <span>Tests that canvas 2d context supports 'direction' attribute: <span id="supported"></span></span> |
| @@ -61,36 +52,16 @@ |
| <div id="results"> |
| </div> |
| <script> |
| -if (window.testRunner) |
| - testRunner.dumpAsText(); |
| - |
| -var newCanvasElement = document.createElement('canvas'); |
| -document.getElementById('supported').textContent = newCanvasElement.getContext('2d').direction ? 'PASS' : 'FAIL'; |
| -document.getElementById('supported').className = newCanvasElement.getContext('2d').direction ? 'pass' : 'fail'; |
| - |
| var fontSettings = "12px 'Arial'"; |
| -function appendResult(description, result) |
| -{ |
| - var descriptionElement = document.createElement('span'); |
| - var resultElement = document.createElement('span'); |
| - descriptionElement.innerHTML = description; |
| - resultElement.textContent = result; |
| - resultElement.className = (result === 'PASS') ? 'pass' : 'fail'; |
| - descriptionElement.appendChild(resultElement); |
| - document.getElementById("results").appendChild(descriptionElement); |
| - document.getElementById("results").appendChild(document.createElement('br')); |
| -} |
| - |
| -function verifyDrawText(canvasId, resultId, text, expectedDirection) |
| +function verifyDrawText(canvasId, text, expectedDirection) |
| { |
| + console.log(canvasId, text, expectedDirection); |
| var canvasElement = document.getElementById(canvasId); |
| - var resultElement = document.getElementById(resultId); |
| var ctx = canvasElement.getContext('2d'); |
| var width = canvasElement.width/2; |
| var height = canvasElement.height; |
| - resultElement.textContent = (ctx.direction == expectedDirection) ? 'PASS' : 'FAIL'; |
| - resultElement.className = (ctx.direction == expectedDirection) ? 'pass' : 'fail'; |
| + assert_equals(ctx.direction, expectedDirection); |
| ctx.moveTo(width, 0); |
| ctx.lineTo(width, height); |
| ctx.stroke(); |
| @@ -98,68 +69,63 @@ function verifyDrawText(canvasId, resultId, text, expectedDirection) |
| ctx.fillText(text, width, height/2); |
| } |
| -function verifyDrawTextWithSpecifiedDirection(canvasId, resultId, text, direction, expectedDirection) |
| +function verifyDrawTextWithSpecifiedDirection(testItem) |
| { |
| - var canvasElement = document.getElementById(canvasId); |
| - var resultElement = document.getElementById(resultId); |
| + console.log(testItem); |
| + var canvasElement = document.getElementById(testItem['canvasId']); |
| var ctx = canvasElement.getContext('2d'); |
| var width = canvasElement.width/2; |
| var height = canvasElement.height; |
| var currentDirection = ctx.direction; |
| - ctx.direction = direction; |
| - resultElement.textContent = (currentDirection && (ctx.direction == expectedDirection)) ? 'PASS' : 'FAIL'; |
| - resultElement.className = (currentDirection && (ctx.direction == expectedDirection)) ? 'pass' : 'fail'; |
| + ctx.direction = testItem['direction']; |
| + assert_not_equals(currentDirection, null); |
| + assert_equals(ctx.direction, testItem['expectedDirection']); |
| ctx.moveTo(width, 0); |
| ctx.lineTo(width, height); |
| ctx.stroke(); |
| ctx.font = fontSettings; |
| - ctx.fillText(text, width, height/2); |
| + ctx.fillText(testItem['text'], width, height/2); |
| } |
| -function verifyDirectionAfterReset(canvasId, text, direction, expectedDirection) |
| +function verifyDirectionAfterReset(testItem) |
| { |
| - var canvasElement = document.getElementById(canvasId); |
| + var canvasElement = document.getElementById(testItem['canvasId']); |
| var width = canvasElement.width/2; |
| var height = canvasElement.height; |
| var ctx = canvasElement.getContext('2d'); |
| - ctx.direction = direction; |
| + ctx.direction = testItem['direction']; |
| ctx.moveTo(width, 0); |
| ctx.lineTo(width, height); |
| ctx.stroke(); |
| ctx.font = fontSettings; |
| - ctx.fillText(text, width, height/2); |
| + ctx.fillText(testItem['text'], width, height/2); |
| canvasElement.width = canvasElement.width + 1; |
| - var description = 'Tests that context.reset() sets the context.direction to ' + expectedDirection + ': '; |
| - var result = (ctx.direction == expectedDirection) ? 'PASS' : 'FAIL'; |
| - appendResult(description, result); |
| + assert_equals(ctx.direction, testItem['expectedDirection']); |
| document.body.removeChild(canvasElement.parentElement); |
| } |
| -function verifyDirectionAfterAttributeChange(canvasId, resultId, text, newDirection, forParentElement) |
| +function verifyDirectionAfterAttributeChange(testItem) |
| { |
| - var canvasElement = document.getElementById(canvasId); |
| - var resultElement = document.getElementById(resultId); |
| + var canvasElement = document.getElementById(testItem['canvasId']); |
| var ctx = canvasElement.getContext('2d'); |
| var width = canvasElement.width/2; |
| var height = canvasElement.height; |
| - if (forParentElement) |
| - canvasElement.parentElement.dir = newDirection; |
| + if (testItem['forParentElement']) |
| + canvasElement.parentElement.dir = testItem['newDirection']; |
| else |
| - canvasElement.dir = newDirection; |
| - resultElement.textContent = ctx.direction == newDirection ? 'PASS' : 'FAIL'; |
| - resultElement.className = ctx.direction == newDirection ? 'pass' : 'fail'; |
| + canvasElement.dir = testItem['newDirection']; |
| + assert_equals(ctx.direction, testItem['newDirection']); |
| ctx.moveTo(width, 0); |
| ctx.lineTo(width, height); |
| ctx.stroke(); |
| ctx.font = fontSettings; |
| - ctx.fillText(text, width, height/2); |
| + ctx.fillText(testItem['text'], width, height/2); |
| } |
| -function verifyDirectionAcrossSaveRestores(canvasId, resultId, testVector) |
| +function verifyDirectionAcrossSaveRestores(canvasId, testVector) |
| { |
| var canvasElement = document.getElementById(canvasId); |
| - var resultElement = document.getElementById(resultId); |
| var ctx = canvasElement.getContext('2d'); |
| var width = canvasElement.width/2; |
| var height = 0; |
| @@ -182,8 +148,7 @@ function verifyDirectionAcrossSaveRestores(canvasId, resultId, testVector) |
| if (ctx.direction == testVector[i - 1].direction) |
| validDirectionCount++; |
| } |
| - resultElement.textContent = validDirectionCount == testVectorLength - 1 ? 'PASS' : 'FAIL'; |
| - resultElement.className = validDirectionCount == testVectorLength - 1 ? 'pass' : 'fail'; |
| + assert_equals(validDirectionCount, testVectorLength - 1); |
| } |
| function verifyInvalidDirection(direction) |
| @@ -191,35 +156,61 @@ function verifyInvalidDirection(direction) |
| var ctx = document.createElement('canvas').getContext('2d'); |
| var currentDirection = ctx.direction; |
| ctx.direction = direction; |
| - var description = 'Tests that invalid direction value ' + direction + ' has no effect on the context.direction: '; |
| - var result = (ctx.direction == currentDirection) ? 'PASS' : 'FAIL'; |
| - appendResult(description, result); |
| + assert_equals(ctx.direction, currentDirection); |
| } |
| -verifyDrawText('canvas1', 'result1', 'Left-to-Right text', 'ltr'); |
| -verifyDrawText('canvas2', 'result2', 'Right-to-Left text', 'rtl'); |
| - |
| -verifyDrawTextWithSpecifiedDirection('canvas3', 'result3', 'Right-to-Left text', 'rtl', 'rtl'); |
| -verifyDrawTextWithSpecifiedDirection('canvas4', 'result4', 'Left-to-Right text', 'ltr', 'ltr'); |
| -verifyDrawTextWithSpecifiedDirection('canvas5', 'result5', 'Left-to-Right text', 'inherit', 'ltr'); |
| -verifyDrawTextWithSpecifiedDirection('canvas6', 'result6', 'Right-to-Left text', 'inherit', 'rtl'); |
| - |
| -verifyDirectionAfterReset('canvas7', 'Right-to-Left', 'rtl', 'ltr'); |
| -verifyDirectionAfterReset('canvas8', 'Right-to-Left', 'ltr', 'rtl'); |
| - |
| -verifyDirectionAfterAttributeChange('canvas9', 'result9', 'Right-to-Left text', 'rtl', true); |
| -verifyDirectionAfterAttributeChange('canvas10', 'result10', 'Left-to-Right text', 'ltr', false); |
| - |
| -verifyDirectionAcrossSaveRestores('canvas11', |
| - 'result11', |
| - [{ text: 'Left-to-Right text', direction: 'ltr' }, |
| - { text: 'Right-to-Left text', direction: 'rtl' }, |
| - { text: 'Right-to-Left text', direction: 'rtl' }, |
| - { text: 'Left-to-Right text', direction: 'ltr' }, |
| - { text: 'Right-to-Left text', direction: 'rtl' }, |
| - { text: 'Right-to-Left text', direction: 'rtl' }]); |
| - |
| -verifyInvalidDirection('RTL'); |
| -verifyInvalidDirection('LTR'); |
| -verifyInvalidDirection('INHERIT'); |
| +test(function(t) { |
| + |
| + var newCanvasElement = document.createElement('canvas'); |
| + assert_not_equals(newCanvasElement.getContext('2d').direction, null); |
| + |
| + var drawTextTests = [ |
| + ['DrawTextTest1', 'canvas1', 'Left-to-Right text', 'ltr'], |
| + ['DrawTextTest2', 'canvas2', 'Right-to-Left text', 'rtl'], |
| + ]; |
| + generate_tests(verifyDrawText, drawTextTests); |
| + |
| + var drawTextWithSpecifiedDirectionTests = [ |
| + ['DrawTextWithSpecifiedDirectionTest1', |
|
Justin Novosad
2017/02/14 20:22:04
This form is excellent. Very readable, well organi
zakerinasab
2017/02/15 14:53:02
Acknowledged.
|
| + {canvasId: 'canvas3', text: 'Right-to-Left text', direction: 'rtl', expectedDirection: 'rtl'}], |
| + ['DrawTextWithSpecifiedDirectionTest2', |
| + {canvasId: 'canvas4', text: 'Left-to-Right text', direction: 'ltr', expectedDirection: 'ltr'}], |
| + ['DrawTextWithSpecifiedDirectionTest3', |
| + {canvasId: 'canvas5', text: 'Left-to-Right text', direction: 'inherit', expectedDirection: 'ltr'}], |
| + ['DrawTextWithSpecifiedDirectionTest4', |
| + {canvasId: 'canvas6', text: 'Right-to-Left text', direction: 'inherit', expectedDirection: 'rtl'}], |
| + ]; |
| + generate_tests(verifyDrawTextWithSpecifiedDirection, drawTextWithSpecifiedDirectionTests); |
| + |
| + var directionAfterResetTests = [ |
| + ['DirectionAfterResetTest1', |
| + {canvasId: 'canvas7', text: 'Right-to-Left', direction: 'rtl', expectedDirection: 'ltr'}], |
| + ['DirectionAfterResetTest2', |
| + {canvasId: 'canvas8', text: 'Right-to-Left', direction: 'ltr', expectedDirection: 'rtl'}], |
| + ]; |
| + generate_tests(verifyDirectionAfterReset, directionAfterResetTests); |
| + |
| + var directionAfterAttributeChangeTests = [ |
| + ['DirectionAfterResetTest1', |
| + {canvasId: 'canvas9', text: 'Right-to-Left text', newDirection: 'rtl', forParentElement: true}], |
| + ['DirectionAfterResetTest2', |
| + {canvasId: 'canvas10', text: 'Left-to-Right text', newDirection: 'ltr', forParentElement: false}], |
| + ]; |
| + generate_tests(verifyDirectionAfterAttributeChange, directionAfterAttributeChangeTests); |
| + |
| + verifyDirectionAcrossSaveRestores('canvas11', |
| + [{ text: 'Left-to-Right text', direction: 'ltr' }, |
| + { text: 'Right-to-Left text', direction: 'rtl' }, |
| + { text: 'Right-to-Left text', direction: 'rtl' }, |
| + { text: 'Left-to-Right text', direction: 'ltr' }, |
| + { text: 'Right-to-Left text', direction: 'rtl' }, |
| + { text: 'Right-to-Left text', direction: 'rtl' }]); |
| + var invalidDirectionTests = [ |
| + ['InvalidDirectionTestRTL', 'RTL'], |
| + ['InvalidDirectionTestLTR', 'LTR'], |
| + ['InvalidDirectionTestINHERIT', 'INHERIT'], |
| + ]; |
| + generate_tests(verifyInvalidDirection, invalidDirectionTests); |
| + |
| +}, "Verify that canvas 2d context supports 'direction' attribute."); |
| </script> |