Index: LayoutTests/svg/text/svgtextcontentelement-glyphqueries-rtl.html |
diff --git a/LayoutTests/svg/text/svgtextcontentelement-glyphqueries-rtl.html b/LayoutTests/svg/text/svgtextcontentelement-glyphqueries-rtl.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..28dd923e7adfe4d86885a88f7cd5b66334f269ff |
--- /dev/null |
+++ b/LayoutTests/svg/text/svgtextcontentelement-glyphqueries-rtl.html |
@@ -0,0 +1,96 @@ |
+<!DOCTYPE html> |
+<meta charset="UTF-8"> |
+<title>SVGTextContentElement query interface RTL</title> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<svg width="50px" height="60px" font-family="Arial" font-size="30px"> |
+ <text x="0" y="50">הפוך</text> |
+</svg> |
+<script> |
+setup(function() { |
+ window.textElement = document.querySelector("text"); |
+ window.totalExtent = textElement.getComputedTextLength(); |
+}); |
+ |
+test(function() { |
+ assert_equals(textElement.textContent.length, 4); |
+ var positions = []; |
+ for (var i = 0; i < 4; ++i) |
+ positions.push(textElement.getStartPositionOfChar(i).x); |
+ |
+ assert_approx_equals(positions[0], totalExtent, 0.5); |
+ assert_less_than(positions[1], positions[0]); |
+ assert_less_than(positions[2], positions[1]); |
+ assert_less_than(positions[3], positions[2]); |
+ assert_greater_than(positions[3], 0); |
+}, document.title+', getStartPositionOfChar().'); |
+ |
+test(function() { |
+ assert_equals(textElement.textContent.length, 4); |
+ var positions = []; |
+ for (var i = 0; i < 4; ++i) |
+ positions.push(textElement.getEndPositionOfChar(i).x); |
+ |
+ assert_less_than(positions[0], totalExtent); |
+ assert_less_than(positions[1], positions[0]); |
+ assert_less_than(positions[2], positions[1]); |
+ assert_less_than(positions[3], positions[2]); |
+ assert_approx_equals(positions[3], 0, 0.5); |
+}, document.title+', getEndPositionOfChar().'); |
+ |
+test(function() { |
+ assert_equals(textElement.textContent.length, 4); |
+ var bounds = []; |
+ for (var i = 0; i < 4; ++i) |
+ bounds.push(textElement.getExtentOfChar(i)); |
+ |
+ function right(r) { |
+ return r.x + r.width; |
+ } |
+ |
+ // Verify right sides descending. |
+ assert_approx_equals(right(bounds[0]), totalExtent, 0.5); |
+ assert_less_than(right(bounds[1]), right(bounds[0])); |
+ assert_less_than(right(bounds[2]), right(bounds[1])); |
+ assert_less_than(right(bounds[3]), right(bounds[2])); |
+ assert_greater_than(right(bounds[3]), 0); |
+ |
+ // Verify left sides descending. |
+ assert_less_than(bounds[0].x, totalExtent); |
+ assert_less_than(bounds[1].x, bounds[0].x); |
+ assert_less_than(bounds[2].x, bounds[1].x); |
+ assert_less_than(bounds[3].x, bounds[2].x); |
+ assert_approx_equals(bounds[3].x, 0, 0.5); |
+ |
+ // Verify approx. adjacent. |
+ assert_approx_equals(bounds[0].x, right(bounds[1]), 0.5); |
+ assert_approx_equals(bounds[1].x, right(bounds[2]), 0.5); |
+ assert_approx_equals(bounds[2].x, right(bounds[3]), 0.5); |
+}, document.title+', getExtentOfChar().'); |
+ |
+test(function() { |
+ assert_equals(textElement.textContent.length, 4); |
+ |
+ var prevOffset = 3; |
+ var queryPoint = document.querySelector('svg').createSVGPoint(); |
+ queryPoint.y = 40; |
+ |
+ // Sample left-to-right, expecting a decreasing character number. |
+ for (var queryX = 0.5; queryX < totalExtent - 0.5; queryX += 0.5) { |
+ queryPoint.x = queryX; |
+ var offset = textElement.getCharNumAtPosition(queryPoint); |
+ assert_less_than_equal(offset, prevOffset); |
+ prevOffset = offset; |
+ } |
+ assert_equals(prevOffset, 0); |
+ |
+ // Sample right-to-left, expecting an increasing character number. |
+ for (var queryX = totalExtent - 0.5; queryX >= 0.5; queryX -= 0.5) { |
+ queryPoint.x = queryX; |
+ var offset = textElement.getCharNumAtPosition(queryPoint); |
+ assert_greater_than_equal(offset, prevOffset); |
+ prevOffset = offset; |
+ } |
+ assert_equals(prevOffset, 3); |
+}, document.title+', getCharNumAtPosition().'); |
+</script> |