Replace multiscripts-positions.html reftest with script tests
authorfred.wang@free.fr <fred.wang@free.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Jul 2016 14:26:08 +0000 (14:26 +0000)
committerfred.wang@free.fr <fred.wang@free.fr@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 7 Jul 2016 14:26:08 +0000 (14:26 +0000)
https://bugs.webkit.org/show_bug.cgi?id=159418

We import more tests from the MathML in HTML5 test suite to replace
and extend the reftest testing metrics in the mmultiscripts element.
This allows to make such tests work on OS X and iOS.

Patch by Frederic Wang <fwang@igalia.com> on 2016-07-07
Reviewed by Martin Robinson.

* imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2-expected.txt: Added.
* imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2.html: Added.
* imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3-expected.txt: Added.
* imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3.html: Added.
* mathml/presentation/multiscripts-positions.html: Removed.
* platform/ios-simulator/TestExpectations: Remove failure for multiscripts-positions.
* platform/mac/TestExpectations: Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202906 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2-expected.txt [new file with mode: 0644]
LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2.html [new file with mode: 0644]
LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3-expected.txt [new file with mode: 0644]
LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3.html [new file with mode: 0644]
LayoutTests/mathml/presentation/multiscripts-positions.html [deleted file]
LayoutTests/platform/ios-simulator/TestExpectations
LayoutTests/platform/mac/TestExpectations

index 48105ad..50ef635 100644 (file)
@@ -1,3 +1,22 @@
+2016-07-07  Frederic Wang  <fwang@igalia.com>
+
+        Replace multiscripts-positions.html reftest with script tests
+        https://bugs.webkit.org/show_bug.cgi?id=159418
+
+        We import more tests from the MathML in HTML5 test suite to replace
+        and extend the reftest testing metrics in the mmultiscripts element.
+        This allows to make such tests work on OS X and iOS.
+
+        Reviewed by Martin Robinson.
+
+        * imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2-expected.txt: Added.
+        * imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2.html: Added.
+        * imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3-expected.txt: Added.
+        * imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3.html: Added.
+        * mathml/presentation/multiscripts-positions.html: Removed.
+        * platform/ios-simulator/TestExpectations: Remove failure for multiscripts-positions.
+        * platform/mac/TestExpectations: Ditto.
+
 2016-07-07  Eric Carlson  <eric.carlson@apple.com>
 
         Add a test for media control dropoff
diff --git a/LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2-expected.txt b/LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2-expected.txt
new file mode 100644 (file)
index 0000000..f424a5e
--- /dev/null
@@ -0,0 +1,8 @@
+
+PASS Respective horizontal positions 
+PASS Alignment of the base on the baseline 
+PASS Vertical position of scripts 
+PASS Width of scripted elements 
+PASS Height of scripted elements 
+PASS Size of empty elements 
+
diff --git a/LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2.html b/LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-2.html
new file mode 100644 (file)
index 0000000..7367906
--- /dev/null
@@ -0,0 +1,163 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Subscripts and Superscripts metrics</title>
+<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS4">
+<meta name="assert" content="Basic metrics for the mmultiscript element.">
+<script src="../../../../../resources/testharness.js"></script>
+<script src="../../../../../resources/testharnessreport.js"></script>
+<style>
+  math, mspace {
+    font-size: 10px;
+  }
+</style>
+<script>
+  /* This test does not use any specific fonts and so the exact rules are not
+  specified precisely. We assume reasonable values for script shifts and
+  spacing. */
+
+  function getBox(aId) {
+    var box = document.getElementById(aId).getBoundingClientRect();
+    box.middle = (box.bottom + box.top) / 2;
+    return box;
+  }
+
+  setup({ explicit_done: true });
+  window.addEventListener("load", runTests);
+
+  function runTests() {
+    test(function() {
+      var e = 1;
+      assert_less_than_equal(getBox("msubBase").right, getBox("msubSub").left, e, "subscript is after base");
+      assert_less_than_equal(getBox("msupBase").right, getBox("msupSup").left, e, "superscript is after base");
+      assert_less_than_equal(getBox("msubsupBase").right, getBox("msubsupSub").left, e, "subscript is after base");
+      assert_less_than_equal(getBox("msubsupBase").right, getBox("msubsupSup").left, e, "superscript is after base");
+
+     assert_greater_than_equal(getBox("premsubBase").right, getBox("premsubSub").left, e, "subscript is before base");
+      assert_greater_than_equal(getBox("premsupBase").right, getBox("premsupSup").left, e, "superscript is before base");
+      assert_greater_than_equal(getBox("premsubsupBase").right, getBox("premsubsupSub").left, e, "subscript is before base");
+      assert_greater_than_equal(getBox("premsubsupBase").right, getBox("premsubsupSup").left, e, "superscript is before base");
+
+      e = 3;
+      assert_approx_equals(getBox("msubBase").right, getBox("msubSub").left, e, "msub: space between base and subscript is small");
+      assert_approx_equals(getBox("msubBase").right, getBox("msubSub").left, e, "msub: subscript is after base");
+      assert_approx_equals(getBox("msupBase").right, getBox("msupSup").left, e, "msup: superscript is after base");
+      assert_approx_equals(getBox("msubsupBase").right, getBox("msubsupSub").left, e, "msubsup: subscript is after base");
+      assert_approx_equals(getBox("msubsupBase").right, getBox("msubsupSup").left, e, "msubsup: superscript is after base");
+
+      assert_approx_equals(getBox("premsubBase").left, getBox("premsubSub").right, e, "msub: space between base and subscript is small");
+      assert_approx_equals(getBox("premsubBase").left, getBox("premsubSub").right, e, "msub: subscript is after base");
+      assert_approx_equals(getBox("premsupBase").left, getBox("premsupSup").right, e, "msup: superscript is after base");
+      assert_approx_equals(getBox("premsubsupBase").left, getBox("premsubsupSub").right, e, "msubsup: subscript is after base");
+      assert_approx_equals(getBox("premsubsupBase").left, getBox("premsubsupSup").right, e, "msubsup: superscript is after base");
+    }, "Respective horizontal positions");
+
+    test(function() {
+      var e = 1;
+      assert_approx_equals(getBox("msubBase").middle, getBox("baseline").bottom, e, "base is placed on the baseline");
+      assert_approx_equals(getBox("msupBase").middle, getBox("baseline").bottom, e, "base is placed on the baseline");
+      assert_approx_equals(getBox("msubsupBase").middle, getBox("baseline").bottom, e, "base is placed on the baseline");
+      assert_approx_equals(getBox("premsubBase").middle, getBox("baseline").bottom, e, "base is placed on the baseline");
+      assert_approx_equals(getBox("premsupBase").middle, getBox("baseline").bottom, e, "base is placed on the baseline");
+      assert_approx_equals(getBox("premsubsupBase").middle, getBox("baseline").bottom, e, "base is placed on the baseline");
+    }, "Alignment of the base on the baseline");
+
+    test(function() {
+      var e = 3;
+      assert_approx_equals(getBox("msubSub").middle, getBox("msubBase").bottom, e, "script is placed at the bottom of the base");
+      assert_approx_equals(getBox("msupSup").middle, getBox("msupBase").top, e, "script is placed at the top of the base");
+      assert_approx_equals(getBox("msubsupSub").middle, getBox("msubsupBase").bottom, e, "script is placed at the bottom of the base");
+      assert_approx_equals(getBox("msubsupSup").middle, getBox("msubsupBase").top, e, "script is placed at the top of the base");
+
+      assert_approx_equals(getBox("premsubSub").middle, getBox("premsubBase").bottom, e, "script is placed at the bottom of the base");
+      assert_approx_equals(getBox("premsupSup").middle, getBox("premsupBase").top, e, "script is placed at the top of the base");
+      assert_approx_equals(getBox("premsubsupSub").middle, getBox("premsubsupBase").bottom, e, "script is placed at the bottom of the base");
+      assert_approx_equals(getBox("premsubsupSup").middle, getBox("premsubsupBase").top, e, "script is placed at the top of the base");
+    }, "Vertical position of scripts");
+
+    test(function() {
+      var e = 3;
+      assert_approx_equals(getBox("msub").width, getBox("msubSub").right - getBox("msubBase").left, e, "width is determined by the left/right sides of base/script (+ some space after script)");
+      assert_approx_equals(getBox("msup").width, getBox("msupSup").right - getBox("msupBase").left, e, "width is determined by the left/right sides of base/script (+ some space after script)");
+      assert_approx_equals(getBox("msubsup").width, Math.max(getBox("msubsupSub").right, getBox("msubsupSup").right) - getBox("msubsupBase").left, e, "width is determined by the left/right sides of base/scripts (+ some space after script)");
+
+      assert_approx_equals(getBox("premsub").width, getBox("premsubBase").right - getBox("premsubSub").left, e, "width is determined by the right/left sides of base/script (+ some space after script)");
+      assert_approx_equals(getBox("premsup").width, getBox("premsupBase").right - getBox("premsupSup").left, e, "width is determined by the right/left sides of base/script (+ some space after script)");
+      assert_approx_equals(getBox("premsubsup").width, getBox("premsubsupBase").right - Math.min(getBox("premsubsupSub").left, getBox("premsubsupSup").left), e, "width is determined by the right/left sides of base/scripts (+ some space after script)");
+    }, "Width of scripted elements");
+
+    test(function() {
+      var e = 1;
+      assert_greater_than_equal(getBox("msub").height, getBox("msubBase").height, e, "height is at least the one of the base");
+      assert_greater_than_equal(getBox("msup").height, getBox("msupBase").height, e, "height is at least the one of the base");
+      assert_greater_than_equal(getBox("msubsup").height, getBox("msubsupBase").height, e, "height is at least the one of the base");
+      assert_greater_than_equal(getBox("premsub").height, getBox("premsubBase").height, e, "height is at least the one of the base");
+      assert_greater_than_equal(getBox("premsup").height, getBox("premsupBase").height, e, "height is at least the one of the base");
+  assert_greater_than_equal(getBox("premsubsup").height, getBox("premsubsupBase").height, e, "height is at least the one of the base");
+  
+      e = 3;
+      assert_approx_equals(getBox("msub").height, Math.max(getBox("msubSub").bottom, getBox("msubBase").bottom) - getBox("msubBase").top, e, "msub height is determined by the top/bottom sides of base/scripts");
+      assert_approx_equals(getBox("msup").height, getBox("msupBase").bottom - Math.min(getBox("msupSup").top, getBox("msupBase").top), e, "msup height is determined by the top/bottom sides of base/scripts");
+      assert_approx_equals(getBox("msubsup").height, Math.max(getBox("msubSub").bottom, getBox("msubBase").bottom) - Math.min(getBox("msupSup").top, getBox("msupBase").top), e, "msubsup height is determined by the top/bottom sides of base/scripts");
+      assert_approx_equals(getBox("premsub").height, Math.max(getBox("premsubSub").bottom, getBox("premsubBase").bottom) - getBox("premsubBase").top, e, "msub height is determined by the top/bottom sides of base/scripts");
+      assert_approx_equals(getBox("premsup").height, getBox("premsupBase").bottom - Math.min(getBox("premsupSup").top, getBox("premsupBase").top), e, "msup height is determined by the top/bottom sides of base/scripts");
+      assert_approx_equals(getBox("premsubsup").height, Math.max(getBox("premsubSub").bottom, getBox("premsubBase").bottom) - Math.min(getBox("premsupSup").top, getBox("premsupBase").top), e, "msubsup height is determined by the top/bottom sides of base/scripts");
+    }, "Height of scripted elements");
+
+    test(function() {
+      ["none", "mprescripts"].forEach(function(name) {
+        var elements = document.getElementsByTagName(name);
+        for (var i = 0; i < elements.length; i++) {
+          var box = elements[i].getBoundingClientRect();
+          assert_equals(box.height * box.width, 0, "<" + name + "> " + i + " has zero is empty");
+        }
+      });
+    }, "Size of empty elements");
+
+    done();
+  }
+</script>
+</head>
+<body>
+  <p>
+    <math>
+      <mspace id="baseline" width="30px" height="2px" depth="0px" mathbackground="blue"/>
+      <mmultiscripts id="msub" mathbackground="green">
+        <mspace id="msubBase" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mspace id="msubSub" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <none/>
+      </mmultiscripts>
+      <mmultiscripts id="msup" mathbackground="green">
+        <mspace id="msupBase" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <none/>
+        <mspace id="msupSup" width="10px" height="5px" depth="5px" mathbackground="black"/>
+      </mmultiscripts>
+      <mmultiscripts id="msubsup" mathbackground="green">
+        <mspace id="msubsupBase" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mspace id="msubsupSub" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="msubsupSup" width="10px" height="5px" depth="5px" mathbackground="black"/>
+      </mmultiscripts>
+      <mmultiscripts id="premsub" mathbackground="green">
+        <mspace id="premsubBase" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mprescripts/>
+        <mspace id="premsubSub" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <none/>
+      </mmultiscripts>
+      <mmultiscripts id="premsup" mathbackground="green">
+        <mspace id="premsupBase" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mprescripts/>
+        <none/>
+        <mspace id="premsupSup" width="10px" height="5px" depth="5px" mathbackground="black"/>
+      </mmultiscripts>
+      <mmultiscripts id="premsubsup" mathbackground="green">
+        <mspace id="premsubsupBase" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mprescripts/>
+        <mspace id="premsubsupSub" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="premsubsupSup" width="10px" height="5px" depth="5px" mathbackground="black"/>
+      </mmultiscripts>
+    </math>
+  </p>
+  <hr/>
+</body>
+</html>
diff --git a/LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3-expected.txt b/LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3-expected.txt
new file mode 100644 (file)
index 0000000..e4a26a4
--- /dev/null
@@ -0,0 +1,7 @@
+
+PASS Alignment of the base on the baseline 
+PASS Dimensions of the scripted elements 
+PASS Vertical positions of scripts 
+PASS Horizontal alignment of scripts 
+PASS Horizontal positions of scripts 
+
diff --git a/LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3.html b/LayoutTests/imported/mathml-in-html5/mathml/presentation-markup/scripts/subsup-3.html
new file mode 100644 (file)
index 0000000..f2e2823
--- /dev/null
@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Subscripts and Superscripts metrics</title>
+<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS4">
+<meta name="assert" content="Basic metrics for the mmultiscript element with many scripts.">
+<script src="../../../../../resources/testharness.js"></script>
+<script src="../../../../../resources/testharnessreport.js"></script>
+<style>
+  math, mspace {
+    font-size: 10px;
+  }
+</style>
+<script>
+  /* This test does not use any specific fonts and so the exact rules are not
+  specified precisely. We assume reasonable values for script shifts and
+  spacing. */
+
+  function getBox(aId) {
+    var box = document.getElementById(aId).getBoundingClientRect();
+    box.middle = (box.bottom + box.top) / 2;
+    return box;
+  }
+
+  setup({ explicit_done: true });
+  window.addEventListener("load", runTests);
+
+  function runTests() {
+    test(function() {
+      var e = 1;
+      for (var i = 0; i < 5; i++)
+        assert_approx_equals(getBox("multi" + i + "base").middle, getBox("baseline").bottom, e, "base " + i + "is placed on the baseline");
+    }, "Alignment of the base on the baseline");
+
+    test(function() {
+      var e = 5;
+      assert_approx_equals(getBox("multi0").width, 30, e, "width of multi0");
+      assert_approx_equals(getBox("multi0").height, 30, e, "height of multi0");
+      assert_approx_equals(getBox("multi1").width, 30, e, "width of multi1");
+      assert_approx_equals(getBox("multi1").height, 30, e, "height of multi1");
+      for (i = 2; i <= 4; i++) {
+        var scriptedBox = getBox("multi" + i);
+        var lastPostScript = getBox("multi" + i + "postsup" + (i - 1));
+        var firstPreScript = getBox("multi" + i + "presub1");
+        assert_approx_equals(scriptedBox.height, firstPreScript.bottom - lastPostScript.top, e, "height of multiscript" + i);
+        assert_approx_equals(scriptedBox.width, lastPostScript.right - firstPreScript.left, e, "width of multiscript" + i);
+      }
+    }, "Dimensions of the scripted elements");
+
+    test(function() {
+      var e = 3;
+      for (var i = 2; i <= 4; i++) {
+        var base = getBox("multi" + i + "base");
+        for (var j = 1; j < i; j++) {
+          var presup = getBox("multi" + i + "presup" + j);
+          var postsup = getBox("multi" + i + "postsup" + j);
+          var presub = getBox("multi" + i + "presub" + j);
+          var postsub = getBox("multi" + i + "postsub" + j);
+          assert_approx_equals(base.top, presup.middle, e, "multi" + i + " " + j + " presup script");
+          assert_approx_equals(base.top, postsup.middle, e, "multi" + i + " " + j + " postsup script");
+          assert_approx_equals(base.bottom, presub.middle, e, "multi" + i + " " + j + " presub script");
+          assert_approx_equals(base.bottom, postsub.middle, e, "multi" + i + " " + j + " postsub script");
+        }
+      }
+    }, "Vertical positions of scripts");
+
+    test(function() {
+      var e = 1;
+      for (var i = 2; i <= 4; i++) {
+        var base = getBox("multi" + i + "base");
+        for (var j = 1; j < i; j++) {
+          var presup = getBox("multi" + i + "presup" + j);
+          var postsup = getBox("multi" + i + "postsup" + j);
+          var presub = getBox("multi" + i + "presub" + j);
+          var postsub = getBox("multi" + i + "postsub" + j);
+          assert_approx_equals(presup.right, presub.right, e, "multi" + i + "pre");
+          assert_approx_equals(postsup.left, postsub.left, e, "multi" + i + "post");
+        }
+      }
+    }, "Horizontal alignment of scripts");
+
+    test(function() {
+      for (var i = 2; i <= 4; i++) {
+        var base = getBox("multi" + i + "base");
+        var firstPostScript = getBox("multi" + i + "postsub1");
+        var lastPreScript = getBox("multi" + i + "presup" + (i - 1));
+        assert_less_than_equal(base.right, firstPostScript.left, 1, "postcripts are after base");
+        assert_less_than_equal(lastPreScript.right, base.left, 1, "prescripts are before base");
+        assert_approx_equals(base.right, firstPostScript.left, 5, "spacing after base is not too large");
+        assert_approx_equals(lastPreScript.right, base.left, 5, "spacing before base is not too large");
+        for (var j = 1; j < i - 1; j++) {
+          var post = getBox("multi" + i + "postsub" + j);
+          var postNext = getBox("multi" + i + "postsub" + (j + 1));
+          var pre = getBox("multi" + i + "presup" + j);
+          var preNext = getBox("multi" + i + "presup" + (j + 1));
+          assert_less_than_equal(post.right, postNext.left, 1, "multi" + i + "order post" + j + " is before its successor");
+          assert_less_than_equal(pre.right, preNext.left, 1, "multi" + i + "order pre" + j + " is before its successor");
+          assert_approx_equals(post.right, postNext.left, 5, "multi" + i + "space after post" + j + " is not too large");
+          assert_approx_equals(pre.right, preNext.left, 5, "multi" + i + "space after pre" + j + " is not too large");
+        }
+      }
+    }, "Horizontal positions of scripts");
+
+    done();
+  }
+</script>
+</head>
+<body>
+  <p>
+    <math>
+      <mspace id="baseline" width="30px" height="2px" depth="0px" mathbackground="blue"/>
+      <mmultiscripts id="multi0" mathbackground="green">
+        <mspace id="multi0base" width="30px" height="15px" depth="15px" mathbackground="black"/>
+      </mmultiscripts>
+      <mmultiscripts id="multi1" mathbackground="green">
+        <mspace id="multi1base" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mprescripts/>
+      </mmultiscripts>
+      <mmultiscripts id="multi2" mathbackground="green">
+        <mspace id="multi2base" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mspace id="multi2postsub1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi2postsup1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mprescripts/>
+        <mspace id="multi2presub1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi2presup1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+      </mmultiscripts>
+      <mmultiscripts id="multi3" mathbackground="green">
+        <mspace id="multi3base" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mspace id="multi3postsub1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi3postsup1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi3postsub2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi3postsup2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mprescripts/>
+        <mspace id="multi3presub1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi3presup1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi3presub2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi3presup2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+      </mmultiscripts>
+      <mmultiscripts id="multi4" mathbackground="green">
+        <mspace id="multi4base" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mspace id="multi4postsub1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4postsup1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4postsub2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4postsup2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4postsub3" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4postsup3" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mprescripts/>
+        <mspace id="multi4presub1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4presup1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4presub2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4presup2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4presub3" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi4presup3" width="10px" height="5px" depth="5px" mathbackground="black"/>
+      </mmultiscripts>
+      <mmultiscripts id="multi5" mathbackground="green">
+        <mspace id="multi5base" width="30px" height="15px" depth="15px" mathbackground="black"/>
+        <mspace id="multi5postsub1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5postsup1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5postsub2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5postsup2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5postsub3" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5postsup3" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5postsub4" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5postsup4" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mprescripts/>
+        <mspace id="multi5presub1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5presup1" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5presub2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5presup2" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5presub3" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5presup3" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5presub4" width="10px" height="5px" depth="5px" mathbackground="black"/>
+        <mspace id="multi5presup4" width="10px" height="5px" depth="5px" mathbackground="black"/>
+      </mmultiscripts>
+    </math>
+  </p>
+  <hr/>
+</body>
+</html>
diff --git a/LayoutTests/mathml/presentation/multiscripts-positions.html b/LayoutTests/mathml/presentation/multiscripts-positions.html
deleted file mode 100644 (file)
index dd37d46..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-<!doctype html>
-<html>
-  <head>
-    <title>positions of scripts</title>
-    <meta charset="utf-8"/>
-  </head>
-  <body>
-
-    <!-- This page contains several <mmultiscripts> elements. We place black squares at the position where we expect some red scripts to be. The reference page is the same with only the colors of these scripts changed. If the scripts are correctly placed, they will be covered by the black squares and thus the color difference is not perceptible. -->
-
-    <!-- Testing post subscript -->
-    <p style="position: absolute; left: 0; top: 0;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mmultiscripts>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="blue"/>
-          <mspace width="10px" height="10px" mathbackground="red"/>
-          <none/>
-        </mmultiscripts>
-      </math>
-    </p>
-    <p style="position: absolute; left: 15px; top: 10px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mrow>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="black"/>
-        </mrow>
-      </math>
-    </p>
-
-    <!-- Testing post superscript -->
-    <p style="position: absolute; left: 100px; top: 0;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mmultiscripts>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="blue"/>
-          <none/>
-          <mspace width="10px" height="10px" mathbackground="red"/>
-        </mmultiscripts>
-      </math>
-    </p>
-    <p style="position: absolute; left: 115px; top: -10px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mrow>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="black"/>
-        </mrow>
-      </math>
-    </p>
-
-    <!-- Testing pre subscript -->
-    <p style="position: absolute; left: 200px; top: 0;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mmultiscripts>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="blue"/>
-          <mprescripts/>
-          <mspace width="10px" height="10px" mathbackground="red"/>
-          <none/>
-        </mmultiscripts>
-      </math>
-    </p>
-    <p style="position: absolute; left: 195px; top: +10px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mrow>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="black"/>
-        </mrow>
-      </math>
-    </p>
-
-    <!-- Testing pre postscript -->
-    <p style="position: absolute; left: 300px; top: 0;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mmultiscripts>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="blue"/>
-          <mprescripts/>
-          <none/>
-          <mspace width="10px" height="10px" mathbackground="red"/>
-        </mmultiscripts>
-      </math>
-    </p>
-    <p style="position: absolute; left: 295px; top: -10px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mrow>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="black"/>
-        </mrow>
-      </math>
-    </p>
-
-    <!-- Testing the leftmost pre subscript and rightmost post superscript -->
-    <p style="position: absolute; left: 0; top: 100px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mmultiscripts>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="blue"/>
-          <mspace width="10px" depth="10px" mathbackground="orange"/>
-          <mspace width="10px" height="10px" mathbackground="green"/>
-          <mspace width="10px" depth="10px" mathbackground="green"/>
-          <mspace width="10px" height="10px" mathbackground="red"/>
-          <mprescripts/>
-          <mspace width="10px" depth="10px" mathbackground="red"/>
-          <mspace width="10px" height="10px" mathbackground="green"/>
-          <mspace width="10px" depth="10px" mathbackground="green"/>
-          <mspace width="10px" height="10px" mathbackground="orange"/>
-        </mmultiscripts>
-      </math>
-    </p>
-    <p style="position: absolute; left: -5px; top: 120px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mrow>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="black"/>
-        </mrow>
-      </math>
-    </p>
-    <p style="position: absolute; left: 45px; top: 90px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mrow>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="black"/>
-        </mrow>
-      </math>
-    </p>
-
-    <!-- Testing the leftmost pre superscript and rightmost post subscript -->
-    <p style="position: absolute; left: 100px; top: 100px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mmultiscripts>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="blue"/>
-          <mspace width="10px" depth="10px" mathbackground="green"/>
-          <mspace width="10px" height="10px" mathbackground="orange"/>
-          <mspace width="10px" depth="10px" mathbackground="red"/>
-          <mspace width="10px" height="10px" mathbackground="green"/>
-          <mprescripts/>
-          <mspace width="10px" depth="10px" mathbackground="green"/>
-          <mspace width="10px" height="10px" mathbackground="red"/>
-          <mspace width="10px" depth="10px" mathbackground="orange"/>
-          <mspace width="10px" height="10px" mathbackground="green"/>
-        </mmultiscripts>
-      </math>
-    </p>
-    <p style="position: absolute; left: 95px; top: 90px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mrow>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="black"/>
-        </mrow>
-      </math>
-    </p>
-    <p style="position: absolute; left: 145px; top: 120px;">
-      <math>
-        <mspace height="50px" depth="50px"/>
-        <mrow>
-          <mspace width="20px" height="10px" depth="10px" mathbackground="black"/>
-        </mrow>
-      </math>
-    </p>
-
-  </body>
-</html>
index 8287ac7..be1a1ec 100644 (file)
@@ -677,7 +677,6 @@ mathml/presentation/tokenElements-mathvariant.html [ Skip ]
 
 # MathML tests that fail:
 mathml/presentation/scripts-height.html [ ImageOnlyFailure ]
-mathml/presentation/multiscripts-positions.html [ Pass ImageOnlyFailure ]
 
 # <rdar://problem/19215305> ASSERT(m_cgFont.get()) fails in FontPlatformData::ctFont()
 svg/text/svg-fallback-font-crash.html
index ba8e477..a251e58 100644 (file)
@@ -805,9 +805,6 @@ mathml/opentype/fraction-line.html [ Skip ]
 mathml/presentation/fractions-linethickness.html [ Skip ]
 mathml/opentype/large-operators-italic-correction.html [ Skip ]
 
-# MathML tests that fail:
-mathml/presentation/multiscripts-positions.html [ Pass ImageOnlyFailure ]
-
 webkit.org/b/128255 compositing/columns/composited-lr-paginated-repaint.html [ Pass Failure ]
 webkit.org/b/128255 compositing/columns/composited-rl-paginated-repaint.html [ Pass Failure ]