Update web-platform-tests to revision 38792095c98039542ed3a3f0d2eb384b576f6cb7

This commit is contained in:
WPT Sync Bot 2020-03-23 08:19:14 +00:00
parent 19d6b7b380
commit 84075d3b6e
49 changed files with 1128 additions and 205 deletions

View file

@ -1,4 +0,0 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -48,18 +48,12 @@
[Request: combined response Content-Type: text/plain;charset=gbk text/plain;charset=windows-1252]
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[Response: combined response Content-Type: text/plain;charset=gbk text/html]
expected: NOTRUN
[fetch(): combined response Content-Type: text/html;x=" text/plain]
expected: NOTRUN
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[fetch(): combined response Content-Type: text/plain;charset=gbk;x=foo text/plain]
expected: NOTRUN
@ -324,9 +318,18 @@
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -56,12 +56,3 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL
[separate text/javascript error]
expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -7,10 +7,10 @@
expected: NOTRUN
[Element with tabindex should support autofocus]
expected: TIMEOUT
expected: FAIL
[Non-HTMLElement should not support autofocus]
expected: NOTRUN
expected: TIMEOUT
[Area element should support autofocus]
expected: NOTRUN

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
expected: NOTRUN

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
expected: NOTRUN

View file

@ -1,4 +0,0 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

@ -11,3 +11,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44054 more errors.\n\tMax AbsError of 1.9985451102256775e+0 at index of 27408.\n\t[27408\]\t-9.9997943639755249e-1\t9.9856567382812500e-1\t1.9985451102256775e+0\t2.0014157932787811e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44048 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 37130.\n\t[37130\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL

View file

@ -17,3 +17,9 @@
[X SNR (45.01863889546195 dB) is not greater than or equal to 85.58. Got 45.01863889546195.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-4.4440184116752679e+19\t5.6332010030746460e-1\t4.4440184116752679e+19\t7.8889753964924862e+19\t9.0957000000000003e-5\n\t[31081\]\t4.5578633850629000e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 4.4440184116752679e+19 at index of 31080.\n\tMax RelError of 7.8889753964924862e+19 at index of 31080.\n]
expected: FAIL
[X SNR (-349.52143104912756 dB) is not greater than or equal to 85.58. Got -349.52143104912756.]
expected: FAIL

View file

@ -153175,6 +153175,58 @@
{}
]
],
"text-overflow-ellipsis-001.html": [
"41c11d581e982c7de2d51d38b18decd99e8a60b3",
[
null,
[
[
"/css/css-overflow/reference/text-overflow-ellipsis-001-ref.html",
"=="
]
],
{}
]
],
"text-overflow-ellipsis-rtl-001.html": [
"32284f89c2e5c4db774ba1a73fd3594f49606b06",
[
null,
[
[
"/css/css-overflow/reference/text-overflow-ellipsis-rtl-001-ref.html",
"=="
]
],
{}
]
],
"text-overflow-ellipsis-vertical-001.html": [
"58c8f57dcf5ce328c42bc5552c608d83302af8d6",
[
null,
[
[
"/css/css-overflow/reference/text-overflow-ellipsis-vertical-001-ref.html",
"=="
]
],
{}
]
],
"text-overflow-ellipsis-vertical-rtl-001.html": [
"ac621026fdb1f48b9f4d740b48f74ab7df00a79b",
[
null,
[
[
"/css/css-overflow/reference/text-overflow-ellipsis-vertical-rtl-001-ref.html",
"=="
]
],
{}
]
],
"webkit-line-clamp": {
"webkit-line-clamp-with-line-height.tentative.html": [
"94a62a5b3fa1291683e4a653d0dd5cf71eea0aca",
@ -293914,6 +293966,22 @@
"b18dee8caf1864dc30fe656750fe81a8863f1e90",
[]
],
"text-overflow-ellipsis-001-ref.html": [
"814bfd6a2f8149e97709471510b3f77f0f72b756",
[]
],
"text-overflow-ellipsis-rtl-001-ref.html": [
"5c75e38d8308ac81dcfe5eef7e18fd7ad56d6b3b",
[]
],
"text-overflow-ellipsis-vertical-001-ref.html": [
"18f8a1beaefc9ae6109d62555f1c5c61dccf4105",
[]
],
"text-overflow-ellipsis-vertical-rtl-001-ref.html": [
"1c9e660331992b7377f52b86c9dc87b8b0980ae9",
[]
],
"webkit-line-clamp-001-ref.html": [
"ef28e01dac0223c9a2768d3fd1415fb9ef2f1c6b",
[]
@ -314408,31 +314476,31 @@
[]
],
"radical-degreebottomraisepercent25-rulethickness1000.woff": [
"6401070d44fed8d27c688a931d277bce2ef71517",
"b334dd99e0cd7b1705241497ae89fe7aa2d9fbf4",
[]
],
"radical-displaystyleverticalgap7000-rulethickness1000.woff": [
"0e8b1e0a434e3da52f54c0f64a273ade855b8f23",
"cb7026611953e7be21e69158e555fcac2a3e0a6c",
[]
],
"radical-extraascender3000-rulethickness1000.woff": [
"6c0ca282e9597c2eb5d3093ca05e7a1357784226",
"cf064b1c07e73137d73b860d1f69ef5ed45e3a84",
[]
],
"radical-kernafterdegreeminus5000-rulethickness1000.woff": [
"24aa4c525a1ed14af7fff5134962851e28dfbd62",
"61ab4163ac9e743ffc777ef6e952ec200bb67fba",
[]
],
"radical-kernbeforedegree4000-rulethickness1000.woff": [
"1fca6f6d85a20c14c7d95ac2563a94a1bfd44e47",
"9ed871062ef0d0248809983baf7d212014963682",
[]
],
"radical-rulethickness8000.woff": [
"0863dc3230ead9d9deb43dac6185d781f7c098d2",
"090caa9efd323e53a3dd9837a7239e0b1d0dcfa6",
[]
],
"radical-verticalgap6000-rulethickness1000.woff": [
"9808112c7aa934f49db078637fb082d1f0f24df5",
"873a3d9f2de8a959bca2448e5c845b0dafe95cd9",
[]
],
"scriptpercentscaledown0-scriptscriptpercentscaledown40.woff": [
@ -327038,7 +327106,7 @@
[]
],
"operator-dictionary.py": [
"846ea81a979c275e670ea2e18a4e4b98b755c443",
"5627c8a8b92be92896f1ae532a943e56f1d0fdd0",
[]
],
"operator-dictionary.xsl": [
@ -327050,7 +327118,7 @@
[]
],
"radicals.py": [
"cf71cc50cafb03d6927504b8c113f711182f43c6",
"e13f9333f3adb8b8be1de4eb58b869142a917d43",
[]
],
"scripts.py": [
@ -443901,7 +443969,7 @@
},
"fractions": {
"frac-1.html": [
"5ecb66ecf6aabec264d8452a1277eb7769dde3fd",
"77ed4257127ce745a180fa916823de4ebefb9412",
[
null,
{}
@ -443958,6 +444026,13 @@
{}
]
],
"mrow-preferred-width.html": [
"b16ef281f420f4cd919ee631209f28f4e9408c29",
[
null,
{}
]
],
"spacing.html": [
"4bdfc9a001a3fa87716f3e6b0e5e3da3f0ee1c74",
[
@ -443968,14 +444043,21 @@
},
"operators": {
"embellished-operator-001.html": [
"31bdff2fd7c2c4e463adfba2c3768d678c5c7424",
"55772077fe8d4cae35a36d8903f2d4c356506541",
[
null,
{}
]
],
"embellished-operator-002.html": [
"1bbed4e229ef3cc010c9fab7b9541911abd310f6",
"a9774105d07b35b045b24c3daa528385a5c63c0b",
[
null,
{}
]
],
"embellished-operator-003.html": [
"77e3b887112705171af0261bbbc68e8b8449e754",
[
null,
{}
@ -444154,7 +444236,7 @@
},
"spaces": {
"space-1.html": [
"53734deeee1126d83ee83fd4d5d8d37af4d6d6c9",
"75e3f7861b11a55b37886f9dc2925f2ef2e7d7c5",
[
null,
{}
@ -478795,10 +478877,12 @@
]
],
"sxg-reporting-navigation-mi_error.tentative.html": [
"40d1ae01fc450d3c51bc482dff3acf77aa6a3dfc",
"33a42f9cbddd0eb7252f01e52173fd75e80d0033",
[
null,
{}
{
"timeout": "long"
}
]
],
"sxg-reporting-navigation-ok-no-referrer.tentative.html": [

View file

@ -1,4 +0,0 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -312,21 +312,24 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -56,12 +56,3 @@
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL
[separate text/javascript error]
expected: FAIL
[separate text/javascript ]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -4,7 +4,7 @@
expected: FAIL
[Element with tabindex should support autofocus]
expected: TIMEOUT
expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN
@ -16,5 +16,5 @@
expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: NOTRUN
expected: TIMEOUT

View file

@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
expected: NOTRUN

View file

@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-3.html]
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
expected: NOTRUN

View file

@ -1,4 +0,0 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

@ -80,3 +80,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44054 more errors.\n\tMax AbsError of 1.9985451102256775e+0 at index of 27408.\n\t[27408\]\t-9.9997943639755249e-1\t9.9856567382812500e-1\t1.9985451102256775e+0\t2.0014157932787811e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44048 more errors.\n\tMax AbsError of 1.9986611604690552e+0 at index of 37130.\n\t[37130\]\t-9.9994289875030518e-1\t9.9871826171875000e-1\t1.9986611604690552e+0\t2.0012262087101997e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL

View file

@ -248,3 +248,9 @@
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t5.1020887923182881e-22\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5714559801668507e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-4.4440184116752679e+19\t5.6332010030746460e-1\t4.4440184116752679e+19\t7.8889753964924862e+19\t9.0957000000000003e-5\n\t[31081\]\t4.5578633850629000e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 4.4440184116752679e+19 at index of 31080.\n\tMax RelError of 7.8889753964924862e+19 at index of 31080.\n]
expected: FAIL
[X SNR (-349.52143104912756 dB) is not greater than or equal to 85.58. Got -349.52143104912756.]
expected: FAIL

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: text-overflow: ellipsis reference file</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
div {
font: 100px/1 Ahem;
}
</style>
<p>The test passes if it matches the reference.</p>
<div>ppp</div>
<div>pppp</div>
<div>pppX</div>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: text-overflow: ellipsis reference file</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
div {
font: 100px/1 Ahem;
white-space: pre;
}
</style>
<p>The test passes if it matches the reference.</p>
<div> ppp</div>
<div>pppp</div>
<div>Xppp</div>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: text-overflow: ellipsis reference file</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
div {
font: 100px/1 Ahem;
height: 400px;
display: inline-block;
writing-mode: vertical-lr;
}
</style>
<p>The test passes if it matches the reference.</p>
<div>ppp</div>
<div>pppp</div>
<div>pppX</div>

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: text-overflow: ellipsis reference file</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
div {
font: 100px/1 Ahem;
height: 400px;
display: inline-block;
writing-mode: vertical-lr;
direction: rtl;
}
</style>
<p>The test passes if it matches the reference.</p>
<div>ppp</div>
<div>pppp</div>
<div>Xppp</div>

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: text-overflow: ellipsis</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
<link rel="match" href="reference/text-overflow-ellipsis-001-ref.html">
<meta name="assert" content="Check that ellipsis is placed on the right position on the container boundaries in elements with 'text-overflow: ellipsis'.">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
div {
font: 100px/1 Ahem;
width: 400px;
white-space: pre;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<p>The test passes if it matches the reference.</p>
<div>ppp</div>
<div>pppp</div>
<div>ppppp</div>

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: text-overflow: ellipsis RTL</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
<link rel="match" href="reference/text-overflow-ellipsis-rtl-001-ref.html">
<meta name="assert" content="Check that ellipsis is placed on the right position on the container boundaries in elements with 'text-overflow: ellipsis' in RTL.">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
div {
font: 100px/1 Ahem;
width: 400px;
white-space: pre;
overflow: hidden;
text-overflow: ellipsis;
direction: rtl;
}
</style>
<p>The test passes if it matches the reference.</p>
<div>ppp</div>
<div>pppp</div>
<div>ppppp</div>

View file

@ -0,0 +1,23 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: text-overflow: ellipsis vertical</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
<link rel="match" href="reference/text-overflow-ellipsis-vertical-001-ref.html">
<meta name="assert" content="Check that ellipsis is placed on the right position on the container boundaries in elements with 'text-overflow: ellipsis' in vertical writing mode.">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
div {
font: 100px/1 Ahem;
height: 400px;
white-space: pre;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
writing-mode: vertical-lr;
}
</style>
<p>The test passes if it matches the reference.</p>
<div>ppp</div>
<div>pppp</div>
<div>ppppp</div>

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Overflow: text-overflow: ellipsis vertical RTL</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#ellipsis-scrolling">
<link rel="match" href="reference/text-overflow-ellipsis-vertical-rtl-001-ref.html">
<meta name="assert" content="Check that ellipsis is placed on the right position on the container boundaries in elements with 'text-overflow: ellipsis' in vertical writing mode and RTL.">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
div {
font: 100px/1 Ahem;
height: 400px;
white-space: pre;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
writing-mode: vertical-lr;
direction: rtl;
}
</style>
<p>The test passes if it matches the reference.</p>
<div>ppp</div>
<div>pppp</div>
<div>ppppp</div>

View file

@ -4,6 +4,8 @@
<meta charset="utf-8">
<title>Fraction</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fraction-with-nonzero-line-thickness">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fraction-with-zero-line-thickness">
<meta name="assert" content="Verify fraction metrics for different sizes of numerator and denominator.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@ -12,6 +14,12 @@
math, mspace {
font-size: 10px;
}
div.shrink-wrap {
background: yellow;
display: inline-block;
margin-top: 5px;
padding-top: 5px;
}
</style>
<script>
/* This test does not use any specific fonts and so the exact rules are not
@ -83,6 +91,21 @@
}
}, "Dimension of mfrac elements");
test(function() {
assert_true(MathMLFeatureDetection.has_mspace());
assert_true(MathMLFeatureDetection.has_mfrac());
Array.from(document.getElementsByClassName("shrink-wrap")).forEach((container) => {
var marginPx = 2; // By default fractions have 1px margin on each side.
var epsilon = 1;
var containerWidth = container.getBoundingClientRect().width;
var children = container.getElementsByTagName("mspace");
var numWidth = children[0].getBoundingClientRect().width;
var denWidth = children[1].getBoundingClientRect().width;
assert_approx_equals(containerWidth, marginPx + Math.max(numWidth, denWidth), epsilon, "Should be the maximum preferred width of numerator/denominator.");
});
}, "Preferred width of mfrac elements");
done();
}
</script>
@ -134,5 +157,37 @@
</mfrac>
</math>
</p>
<div class="shrink-wrap">
<math>
<mfrac>
<mspace width="30px" height="15px" style="background: blue"/>
<mspace width="15px" height="15px" style="background: green"/>
</mfrac>
</math>
</div>
<div class="shrink-wrap">
<math>
<mfrac>
<mspace width="15px" height="15px" style="background: blue"/>
<mspace width="30px" height="15px" style="background: green"/>
</mfrac>
</math>
</div>
<div class="shrink-wrap">
<math>
<mfrac linethickness="0px">
<mspace width="30px" height="15px" style="background: blue"/>
<mspace width="15px" height="15px" style="background: green"/>
</mfrac>
</math>
</div>
<div class="shrink-wrap">
<math>
<mfrac linethickness="0px">
<mspace width="15px" height="15px" style="background: blue"/>
<mspace width="30px" height="15px" style="background: green"/>
</mfrac>
</math>
</div>
</body>
</html>

View file

@ -0,0 +1,121 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Preferred width of mrow-like elements</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#horizontally-group-sub-expressions-mrow">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#style-change-mstyle">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#making-sub-expressions-invisible-mphantom">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-top-level-math-element">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#adjust-space-around-content-mpadded">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#operator-fence-separator-or-accent-mo">
<meta name="assert" content="The preferred width of mrow-like elements is the sum of children's width, modulo extra spacing.">
<script src="/mathml/support/feature-detection.js"></script>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script type="text/javascript">
setup({ explicit_done: true });
window.addEventListener("load", runTests);
function runTests()
{
var epsilon = 1;
function MrowWidthFromChildren(mrow) {
var first = mrow.firstElementChild.getBoundingClientRect();
var last = mrow.lastElementChild.getBoundingClientRect();
return last.right - first.left;
}
test(function() {
assert_true(MathMLFeatureDetection.has_mspace());
Array.from(document.getElementById("mspace-tests").getElementsByClassName("shrink-wrap")).forEach((container) => {
var containerWidth = container.getBoundingClientRect().width;
var mrow = container.getElementsByClassName("mrow-like")[0];
var mrowWidth = MrowWidthFromChildren(mrow);
assert_approx_equals(containerWidth, mrowWidth, epsilon, mrow.tagName);
});
}, "Preferred width of mrow with mspace children");
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
Array.from(document.getElementById("tokens-tests").getElementsByClassName("shrink-wrap")).forEach((container) => {
var containerWidth = container.getBoundingClientRect().width;
var mrow = container.getElementsByClassName("mrow-like")[0];
var mrowWidth = MrowWidthFromChildren(mrow);
assert_approx_equals(containerWidth, mrowWidth, epsilon, mrow.tagName);
});
}, "Preferred width of mrow with mn and mo children");
done();
}
</script>
<style>
div.shrink-wrap {
background: yellow;
display: inline-block;
margin-top: 5px;
padding-top: 5px;
}
</style>
</head>
<body>
<div id="log"></div>
<div id="mspace-tests">
<div><div class="shrink-wrap">
<math><mrow class="mrow-like"><mspace width="30px" height="15px" style="background: blue"/><mspace width="20px" depth="30px" style="background: green"/><mspace width="15px" height="5px" depth="10px" style="background: black"/></mrow></math>
</div></div>
<div>
<div class="shrink-wrap">
<math><mstyle class="mrow-like"><mspace width="30px" height="15px" style="background: blue"/><mspace width="20px" depth="30px" style="background: green"/><mspace width="15px" height="5px" depth="10px" style="background: black"/></mstyle></math>
</div>
</div>
<div>
<div class="shrink-wrap">
<math><mphantom class="mrow-like"><mspace width="30px" height="15px" style="background: blue"/><mspace width="20px" depth="30px" style="background: green"/><mspace width="15px" height="5px" depth="10px" style="background: black"/></mphantom></math>
</div>
</div>
<div>
<div class="shrink-wrap">
<math class="mrow-like"><mspace width="30px" height="15px" style="background: blue"/><mspace width="20px" depth="30px" style="background: green"/><mspace width="15px" height="5px" depth="10px" style="background: black"/></math>
</div>
</div>
<div>
<div class="shrink-wrap">
<math><unknown class="mrow-like"><mspace width="30px" height="15px" style="background: blue"/><mspace width="20px" depth="30px" style="background: green"/><mspace width="15px" height="5px" depth="10px" style="background: black"/></unknown></math>
</div>
</div>
<div>
</div>
</div>
<div id="tokens-tests">
<div>
<div class="shrink-wrap">
<math><mrow class="mrow-like"><mtext>blah</mtext><mo lspace="30px" rspace="20px">|</mo><mn>2</mn></mrow></math>
</div>
</div>
<div>
<div class="shrink-wrap">
<math><mstyle class="mrow-like"><mtext>blah</mtext><mo lspace="30px" rspace="20px">|</mo><mn>2</mn></mstyle></math>
</div>
</div>
<div>
<div class="shrink-wrap">
<math><mphantom class="mrow-like"><mtext>blah</mtext><mo lspace="30px" rspace="20px">|</mo><mn>2</mn></mphantom></math>
</div>
</div>
<div>
<div class="shrink-wrap">
<math class="mrow-like"><mtext>blah</mtext><mo lspace="30px" rspace="20px">|</mo><mn>2</mn></math>
</div>
</div>
<div>
<div class="shrink-wrap">
<math><unknown class="mrow-like"><mtext>blah</mtext><mo lspace="30px" rspace="20px">|</mo><mn>2</mn></unknown></math>
</div>
</div>
</div>
</p>
</body>
</html>

View file

@ -58,7 +58,7 @@
var epsilon = 1;
var emToPx = 25;
["mrow", "mstyle", "mphantom", "mpadded"].forEach(tag => {
["mrow", "mstyle", "mphantom", "mpadded", "merror", "mprescripts", "none", "unknown"].forEach(tag => {
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
assert_approx_equals(spaceBeforeElement(`${tag}-op-1`), 2 * emToPx, epsilon);
@ -252,7 +252,7 @@
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<!-- mpadded is an embellished operator if its children consist
<!-- mpadded is an embellished operator if its in-flow children consist
of one embellished operator and zero or more space-like elements. -->
<p>
<math>
@ -305,5 +305,217 @@
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<!-- merror is an embellished operator if its in-flow children consist
of one embellished operator and zero or more space-like elements. -->
<p>
<math>
<mn>X</mn>
<merror id="merror-op-1" class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
</merror>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<merror id="merror-nonop-1" class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
<mn>X</mn> <!-- "mn" is not space-like -->
</merror>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<merror id="merror-op-2" class="testedElement">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</merror>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<merror id="merror-nonop-2" class="testedElement">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn> <!-- "mn" is not space-like -->
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</merror>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<!-- mprescripts is an embellished operator if its in-flow children consist
of one embellished operator and zero or more space-like elements. -->
<p>
<math>
<mn>X</mn>
<mprescripts id="mprescripts-op-1" class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
</mprescripts>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<mprescripts id="mprescripts-nonop-1" class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
<mn>X</mn> <!-- "mn" is not space-like -->
</mprescripts>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mprescripts id="mprescripts-op-2" class="testedElement">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</mprescripts>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mprescripts id="mprescripts-nonop-2" class="testedElement">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn> <!-- "mn" is not space-like -->
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</mprescripts>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<!-- none is an embellished operator if its in-flow children consist
of one embellished operator and zero or more space-like elements. -->
<p>
<math>
<mn>X</mn>
<none id="none-op-1" class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
</none>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<none id="none-nonop-1" class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
<mn>X</mn> <!-- "mn" is not space-like -->
</none>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<none id="none-op-2" class="testedElement">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</none>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<none id="none-nonop-2" class="testedElement">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn> <!-- "mn" is not space-like -->
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</none>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<!-- unknown is an embellished operator if its in-flow children consist
of one embellished operator and zero or more space-like elements. -->
<p>
<math>
<mn>X</mn>
<unknown id="unknown-op-1" class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
</unknown>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<unknown id="unknown-nonop-1" class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
<mn>X</mn> <!-- "mn" is not space-like -->
</unknown>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<unknown id="unknown-op-2" class="testedElement">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</unknown>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<unknown id="unknown-nonop-2" class="testedElement">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn> <!-- "mn" is not space-like -->
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</unknown>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
</body>
</html>

View file

@ -55,7 +55,7 @@
var emToPx = 25;
["msub", "msup", "msubsup", "munder", "mover", "munderover",
"mmultiscripts", "mfrac", "maction", "semantics"].forEach(tag => {
"mmultiscripts", "mfrac"].forEach(tag => {
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
var element = document.getElementsByTagName(tag)[0];
@ -87,7 +87,7 @@
<body>
<div id="log"></div>
<!-- <msub>, <msup>, <msubsup>, <munder>, <mover>, <munderover>,
<mmultiscripts>, <mfrac>, <semantics> or <maction> are embellished
<mmultiscripts>, <mfrac> are embellished
operators if their first in-flow
child exists and is an embellished operator -->
<p>
@ -174,27 +174,6 @@
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<maction class="testedElement" actiontype="statusline">
<mo lspace="2em" rspace="0em">X</mo>
<mn>STATUS MESSAGE</mn>
</maction>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<semantics class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
<annotation>TEXT ANNOTATION</annotation>
<mn>X</mn>
</semantics>
<mn>X</mn>
</math>
</p>
<!-- Only in-flow children affect determination of embellished operators. -->
<p>
@ -341,43 +320,9 @@
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<maction class="testedElement" actiontype="statusline">
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>STATUS MESSAGE</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</maction>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<semantics class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<annotation>TEXT ANNOTATION</annotation>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</semantics>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<!-- <msub>, <msup>, <msubsup>, <munder>, <mover>, <munderover>,
<mmultiscripts>, <mfrac>, <semantics> or <maction> are not embellished
<mmultiscripts>, <mfrac> are not embellished
operators if their first in-flow child is not an embellished operator -->
<p>
<math>
@ -463,29 +408,6 @@
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<maction class="testedElement" actiontype="statusline">
<mn>X</mn>
<mo lspace="2em" rspace="0em">STATUS MESSAGE</mo>
</maction>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<semantics class="testedElement">
<mrow>
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
</mrow>
<annotation>TEXT ANNOTATION</annotation>
</semantics>
<mn>X</mn>
</math>
</p>
<!-- Only in-flow children affect determination of embellished operators. -->
<p>
@ -632,44 +554,6 @@
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<maction class="testedElement" actiontype="statusline">
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">STATUS MESSAGE</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</maction>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<semantics class="testedElement">
<mrow>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</mrow>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<annotation>TEXT ANNOTATION</annotation>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</semantics>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
</body>
</html>

View file

@ -0,0 +1,394 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Embellished operators</title>
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#embellished-operators">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#definition-of-space-like-elements">
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#layout-of-mrow">
<meta name="assert" content="Verify definition of embellished operators">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/feature-detection.js"></script>
<script src="/mathml/support/box-navigation.js"></script>
<style>
/* Default spacing of operator 'X' is 0.2777777777777778em so quite different
from the measured/specified 0em and 1em. */
math, math * {
font: 25px/1 Ahem;
}
mn {
color: black;
}
mtext.space-like {
color: lightblue !important;
}
.testedElement mo {
color: yellow !important;
}
.testedElement, .testedElement * {
color: blue !important;
background: blue !important;
}
.oof1 {
position: absolute;
}
.oof2 {
position: fixed;
}
.nobox {
display: none;
}
.allChildrenVisible > *:not(.nobox) {
display: inline-math;
}
</style>
<script>
function spaceBeforeElement(element) {
var mnBefore = previousInFlowSibling(element);
return element.getBoundingClientRect().left - mnBefore.getBoundingClientRect().right;
}
setup({ explicit_done: true });
window.addEventListener("load", runTests);
function runTests() {
var epsilon = 1;
var emToPx = 25;
["maction", "semantics"].forEach(tag => {
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
var element = document.getElementsByTagName(tag)[0];
assert_approx_equals(spaceBeforeElement(element), 2 * emToPx, epsilon);
}, `${tag} (embellished operator)`);
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
var element = document.getElementsByTagName(tag)[1];
assert_approx_equals(spaceBeforeElement(element), 2 * emToPx, epsilon);
}, `${tag} (embellished operator, from in-flow children)`);
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
var element = document.getElementsByTagName(tag)[2];
assert_approx_equals(spaceBeforeElement(element), 0, epsilon);
}, `${tag} (not embellished operator)`);
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
var element = document.getElementsByTagName(tag)[3];
assert_approx_equals(spaceBeforeElement(element), 0, epsilon);
}, `${tag} (not embellished operator, from in-flow children)`);
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
var element = document.getElementsByTagName(tag)[4];
assert_approx_equals(spaceBeforeElement(element), 0, epsilon);
}, `${tag} (not embellished operator, empty)`);
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
var element = document.getElementsByTagName(tag)[5];
assert_approx_equals(spaceBeforeElement(element), 2 * emToPx, epsilon);
}, `${tag} (embellished operator, one child)`);
test(function() {
assert_true(MathMLFeatureDetection.has_operator_spacing());
var element = document.getElementsByTagName(tag)[6];
assert_approx_equals(spaceBeforeElement(element), 2 * emToPx, epsilon);
}, `${tag} (embellished operator, complex)`);
});
done();
}
</script>
</head>
<body>
<div id="log"></div>
<!-- <semantics> or <maction> are embellished operators if their children
consist (in any order) of one embellished operator and zero or more
space-like elements. -->
<p>
<math>
<mn>X</mn>
<maction class="testedElement" actiontype="statusline">
<mo lspace="2em" rspace="0em">X</mo>
<mn>STATUS MESSAGE</mn>
</maction>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<semantics class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
<annotation>TEXT ANNOTATION</annotation>
<mn>X</mn>
</semantics>
<mn>X</mn>
</math>
</p>
<!-- Only in-flow children affect determination of embellished operators. -->
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<maction class="testedElement" actiontype="statusline">
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>STATUS MESSAGE</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</maction>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<semantics class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<annotation>TEXT ANNOTATION</annotation>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</semantics>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<!-- <semantics> or <maction> are not embellished
operators if their first in-flow child is not an embellished operator -->
<p>
<math>
<mn>X</mn>
<msub class="testedElement">
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
</msub>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<msup class="testedElement">
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
</msup>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<msubsup class="testedElement">
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn>X</mn>
</msubsup>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<munder class="testedElement">
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
</munder>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<mover class="testedElement">
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
</mover>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<munderover class="testedElement">
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
</munderover>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<mmultiscripts class="testedElement">
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn>X</mn>
<mn>X</mn>
<mn>X</mn>
</mmultiscripts>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<mfrac class="testedElement">
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
</mfrac>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<maction class="testedElement" actiontype="statusline">
<mn>X</mn>
<mo lspace="2em" rspace="0em">STATUS MESSAGE</mo>
</maction>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<semantics class="testedElement">
<mrow>
<mn>X</mn>
<mo lspace="2em" rspace="0em">X</mo>
</mrow>
<annotation>TEXT ANNOTATION</annotation>
</semantics>
<mn>X</mn>
</math>
</p>
<!-- Only in-flow children affect determination of embellished operators. -->
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<maction class="testedElement" actiontype="statusline">
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">STATUS MESSAGE</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</maction>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<semantics class="testedElement">
<mrow>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</mrow>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<annotation>TEXT ANNOTATION</annotation>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</semantics>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<!-- Empty <maction> and <semantics> (invalid in MathML3). -->
<p>
<math>
<mn>X</mn>
<maction class="testedElement">
</maction>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<semantics class="testedElement">
</semantics>
<mn>X</mn>
</math>
</p>
<!-- One-child <maction> and <semantics> (invalid in MathML3). -->
<p>
<math>
<mn>X</mn>
<maction class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
</maction>
<mn>X</mn>
</math>
</p>
<p>
<math>
<mn>X</mn>
<semantics class="testedElement">
<mo lspace="2em" rspace="0em">X</mo>
</semantics>
<mn>X</mn>
</math>
</p>
<!-- Complex structure (invalid in MathML3). -->
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<maction class="testedElement allChildrenVisible">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mtext class="space-like">X</mtext>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</maction>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
<p>
<math>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<semantics class="testedElement allChildrenVisible">
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mo lspace="2em" rspace="0em">X</mo>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mtext class="space-like">X</mtext>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</semantics>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
<mn>X</mn>
<mn class="oof1">0</mn><mn class="oof2">1</mn><mn class="nobox">2</mn>
</math>
</p>
</body>
</html>

View file

@ -63,9 +63,25 @@
}
}, "Various combinations of height, depth and width.");
test(function() {
var container = document.getElementById("containerForPreferredWidth");
var mspace = container.getElementsByTagName("mspace")[0];
var containerWidth = container.getBoundingClientRect().width;
var mspaceWidth = mspace.getBoundingClientRect().width;
assert_approx_equals(containerWidth, mspaceWidth, epsilon);
}, "Preferred width");
done();
}
</script>
<style>
div.shrink-wrap {
background: yellow;
display: inline-block;
margin-top: 5px;
padding-top: 5px;
}
</style>
</head>
<body>
<div id="log"></div>
@ -87,5 +103,10 @@
<mspace id="mspace2" width="75px" height="25px" depth="50px" style="background: green"/>
</math>
</p>
<div>
<div id="containerForPreferredWidth" class="shrink-wrap">
<math><mspace width="75px" height="25px" depth="50px" style="background: green"/></math>
</div>
</div>
</body>
</html>

View file

@ -49,11 +49,13 @@ def createSizeVariants(aFont):
def createStretchy(aFont, codePoint, isHorizontal):
if isHorizontal:
aFont[codePoint].horizontalVariants = "h0 h1 h2 h3"
# Part: (glyphName, isExtender, startConnector, endConnector, fullAdvance)
aFont[codePoint].horizontalComponents = \
(("h2", False, 0, mathfont.em, 3 * mathfont.em), \
("h1", True, mathfont.em, mathfont.em, 2 * mathfont.em))
else:
aFont[codePoint].verticalVariants = "v0 v1 v2 v3"
# Part: (glyphName, isExtender, startConnector, endConnector, fullAdvance)
aFont[codePoint].verticalComponents = \
(("v2", False, 0, mathfont.em, 3 * mathfont.em), \
("v1", True, mathfont.em, mathfont.em, 2 * mathfont.em))

View file

@ -12,8 +12,9 @@ def createStretchyRadical(aFont):
mathfont.drawRectangleGlyph(g, mathfont.em, 3 * mathfont.em, 0)
g = aFont.createChar(-1, "size3")
mathfont.drawRectangleGlyph(g, mathfont.em, 4 * mathfont.em, 0)
overlap = mathfont.em / 2
aFont[radicalCodePoint].verticalVariants = "radical size1 size2 size3"
# Part: (glyphName, isExtender, startConnector, endConnector, fullAdvance)
aFont.math.MinConnectorOverlap = 0
aFont[radicalCodePoint].verticalComponents = \
(("size2", False, 0, mathfont.em, 3 * mathfont.em), \
("size1", True, mathfont.em, mathfont.em, 2 * mathfont.em))

View file

@ -1,5 +1,6 @@
<!DOCTYPE html>
<title>SXG reporting test of sxg.mi_error for navigation</title>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>