| # Copyright (c) 2010 Philip Taylor |
| # Released under the BSD license and W3C Test Suite License: see LICENSE.txt |
| |
| framed: | |
| <!DOCTYPE html> |
| <title>Canvas test: %(name)s</title> |
| <script src="../tests.js"></script> |
| <link rel="stylesheet" href="../tests.css"> |
| %(fonts)s<body class="framed show_output"> |
| <h1> |
| <a href="%(name)s.html" target="_parent">%(name_wrapped)s</a> |
| </h1> |
| <p><a href="#" id="show_output" onclick="document.body.className += ' show_output'; return false">[show output]</a> |
| %(fonthack)s<p class="output">Actual output:</p> |
| <canvas id="c" class="output" %(canvas)s>%(fallback)s</canvas> |
| %(expected)s |
| <ul id="d"></ul> |
| <script> |
| _addTest(function(canvas, ctx) { |
| |
| %(code)s |
| |
| }); |
| </script> |
| %(images)s |
| |
| standalone: | |
| <!DOCTYPE html> |
| <title>Canvas test: %(name)s</title> |
| <script src="../tests.js"></script> |
| <link rel="stylesheet" href="../tests.css"> |
| <link rel="prev" href="%(prev)s.html" title="%(prev)s"> |
| <link rel="next" href="%(next)s.html" title="%(next)s"> |
| %(fonts)s<body class="show_output"> |
| <p> |
| <a href="%(prev)s.html" accesskey="p" title="[p] %(prev)s"><</a> |
| <a href="index.html">[index]</a> |
| <a href="%(next)s.html" accesskey="n" title="[n] %(next)s">></a> |
| <h1>%(backrefs)s</h1> |
| <p class="desc">%(desc)s</p> |
| <div class="refs">References: |
| <ul> |
| %(refs)s |
| </ul> |
| </div> |
| %(notes)s |
| %(fonthack)s<p class="output">Actual output:</p> |
| <canvas id="c" class="output" %(canvas)s>%(fallback)s</canvas> |
| %(expected)s |
| <ul id="d"></ul> |
| <script> |
| _addTest(function(canvas, ctx) { |
| |
| %(code)s |
| |
| }); |
| </script> |
| %(images)s |
| |
| minimal: | |
| <!DOCTYPE html> |
| <html class="minimal"> |
| <title>Canvas test: %(name)s</title> |
| <script src="../tests.js"></script> |
| <link rel="stylesheet" href="../tests.css"> |
| <link rel="prev" href="minimal.%(prev)s.html" title="%(prev)s"> |
| <link rel="next" href="minimal.%(next)s.html" title="%(next)s"> |
| %(fonts)s<body> |
| <p id="passtext">Pass</p> |
| <p id="failtext">Fail</p> |
| <!-- TODO: handle "script did not run" case --> |
| %(fonthack)s<p class="output">These images should be identical:</p> |
| <canvas id="c" class="output" %(canvas)s>%(fallback)s</canvas> |
| %(expected)s |
| <ul id="d"></ul> |
| <script> |
| _addTest(function(canvas, ctx) { |
| |
| %(code)s |
| |
| }); |
| </script> |
| %(images)s |
| |
| w3c: | |
| <!DOCTYPE html> |
| <!-- DO NOT EDIT! This test has been generated by tools/gentest.py. --> |
| <title>Canvas test: %(name)s</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/canvas-tests.js"></script> |
| <link rel="stylesheet" href="/common/canvas-tests.css"> |
| %(fonts)s<body class="show_output"> |
| |
| <h1>%(name)s</h1> |
| <p class="desc">%(desc)s</p> |
| |
| %(notes)s |
| %(fonthack)s<p class="output">Actual output:</p> |
| <canvas id="c" class="output" %(canvas)s>%(fallback)s</canvas> |
| %(expected)s |
| <ul id="d"></ul> |
| <script> |
| var t = async_test("%(escaped_desc)s"); |
| _addTest(function(canvas, ctx) { |
| |
| %(code)s |
| |
| }); |
| </script> |
| %(images)s |
| |
| mochitest: | |
| <!DOCTYPE HTML> |
| <title>%(mochi_name_fn)s</title> |
| %(mochi_desc)s<script src="/MochiKit/MochiKit.js"></script> |
| <script src="/tests/SimpleTest/SimpleTest.js"></script> |
| <link rel="stylesheet" href="/tests/SimpleTest/test.css"> |
| %(fonts)s<body><!-- [[[ test_%(mochi_name)s.html ]]] --> |
| |
| <p>Canvas test: %(mochi_name)s</p> |
| %(mochi_desc)s%(fonthack)s<canvas id="c" %(canvas)s>%(fallback)s</canvas> |
| <script> |
| |
| function %(mochi_name_fn)s() { |
| |
| var canvas = document.getElementById('c'); |
| var ctx = canvas.getContext('2d'); |
| |
| %(mochi_code)s |
| |
| } |
| </script> |
| %(mochi_images)s |
| |
| mochitest.isPixel: | |
| function isPixel(ctx, x,y, r,g,b,a, pos, colour, d) { |
| var pixel = ctx.getImageData(x, y, 1, 1); |
| var pr = pixel.data[0], |
| pg = pixel.data[1], |
| pb = pixel.data[2], |
| pa = pixel.data[3]; |
| ok(r-d <= pr && pr <= r+d && |
| g-d <= pg && pg <= g+d && |
| b-d <= pb && pb <= b+d && |
| a-d <= pa && pa <= a+d, |
| "pixel "+pos+" is "+pr+","+pg+","+pb+","+pa+"; expected "+colour+" +/- "+d); |
| } |
| |
| mochitest.todo_isPixel: | |
| function todo_isPixel(ctx, x,y, r,g,b,a, pos, colour, d) { |
| var pixel = ctx.getImageData(x, y, 1, 1); |
| var pr = pixel.data[0], |
| pg = pixel.data[1], |
| pb = pixel.data[2], |
| pa = pixel.data[3]; |
| todo(r-d <= pr && pr <= r+d && |
| g-d <= pg && pg <= g+d && |
| b-d <= pb && pb <= b+d && |
| a-d <= pa && pa <= a+d, |
| "pixel "+pos+" is "+pr+","+pg+","+pb+","+pa+"; expected "+colour+" +/- "+d); |
| } |
| |
| mochitest.deferTest: | |
| function deferTest() { |
| _deferred = true; |
| } |
| |
| mochitest.wrapFunction: | |
| function wrapFunction(f) { |
| return function () { |
| f.apply(null, arguments); |
| SimpleTest.finish(); |
| } |
| } |
| |
| mochitest.exception: | |
| var _thrown_outer = false; |
| try { |
| |
| %s |
| } catch (e) { |
| _thrown_outer = true; |
| } |
| todo(!_thrown_outer, 'should not throw exception'); |
| |
| mochitest.Makefile: | |
| # |
| # ***** BEGIN LICENSE BLOCK ***** |
| # Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| # |
| # The contents of this file are subject to the Mozilla Public License Version |
| # 1.1 (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # http://www.mozilla.org/MPL/ |
| # |
| # Software distributed under the License is distributed on an "AS IS" basis, |
| # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| # for the specific language governing rights and limitations under the |
| # License. |
| # |
| # The Original Code is mozilla.org code. |
| # |
| # The Initial Developer of the Original Code is |
| # Mozilla Corporation. |
| # Portions created by the Initial Developer are Copyright (C) 2007 |
| # the Initial Developer. All Rights Reserved. |
| # |
| # Contributor(s): |
| # Philip Taylor <philip.taylor@cl.cam.ac.uk> |
| # |
| # Alternatively, the contents of this file may be used under the terms of |
| # either of the GNU General Public License Version 2 or later (the "GPL"), |
| # or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
| # in which case the provisions of the GPL or the LGPL are applicable instead |
| # of those above. If you wish to allow use of your version of this file only |
| # under the terms of either the GPL or the LGPL, and not to allow others to |
| # use your version of this file under the terms of the MPL, indicate your |
| # decision by deleting the provisions above and replace them with the notice |
| # and other provisions required by the GPL or the LGPL. If you do not delete |
| # the provisions above, a recipient may use your version of this file under |
| # the terms of any one of the MPL, the GPL or the LGPL. |
| # |
| # ***** END LICENSE BLOCK ***** |
| |
| DEPTH = ../../.. |
| topsrcdir = @top_srcdir@ |
| srcdir = @srcdir@ |
| VPATH = @srcdir@ |
| relativesrcdir = content/canvas/test |
| |
| include $(DEPTH)/config/autoconf.mk |
| include $(topsrcdir)/config/rules.mk |
| |
| |
| index.frame: | |
| <!DOCTYPE html> |
| <title>Canvas tests - %(category)s.*</title> |
| <link rel="stylesheet" href="../frame.css"> |
| <p><a href="index.html">[index]</a> |
| <h1>%(backrefs)s.*</h1> |
| <p> |
| |
| # FF trunk doesn't do onload in object, so use iframe instead |
| #index.frame.item: |- |
| # <object width="200" height="220" data="framed.%s.html">(object fallback)</object><!-- |
| # --> |
| index.frame.item: |- |
| <iframe width="200" height="220" src="framed.%s.html">(iframe fallback)</iframe><!-- |
| --> |
| |
| index.w3c.frame: | |
| <!DOCTYPE html> |
| <title>Canvas tests - %(category)s.*</title> |
| <link rel="stylesheet" href="/common/canvas-frame.css"> |
| <p><a href="index.html">[index]</a> |
| <h1>%(backrefs)s.*</h1> |
| <p> |
| |
| index.w3c.frame.item: |- |
| <iframe width="320" height="240" src="%s.html">(iframe fallback)</iframe><!-- |
| --> |
| |
| index: | |
| <!DOCTYPE html> |
| <title>Canvas tests - index</title> |
| <link rel="stylesheet" href="../index.css"> |
| <script> |
| function expand(obj) { |
| obj.parentNode.className = obj.parentNode.className ? "" : "expand"; |
| return false; |
| } |
| </script> |
| |
| <h1><code><canvas></code> tests</h1> |
| |
| <p>Developed by <a href="mailto:excors@gmail.com">Philip Taylor</a>. |
| Last updated %(updated)s. |
| |
| <p>Based on the <a |
| href="http://www.whatwg.org/specs/web-apps/current-work/#the-canvas">HTML</a> |
| Draft Standard — 22 February 2010. See also the <a |
| href="spec.html">annotated specification</a>. |
| |
| <p>See <a href="results.html">test results</a> for some browsers. |
| (Generated semi-automatically via the <a |
| href="../reportgenentry.html">report generator</a>.) |
| |
| <p>You may want to <a href="../source.tar.bz2">download the source |
| code/data</a> (e.g. to create an offline copy of the tests). |
| |
| <h2>Test cases</h2> |
| |
| <p>For each test, a green background indicates success, red indicates |
| failure, blue indicates a need to manually confirm the output is as |
| expected. |
| |
| <p>The versions in the report generator are the most visually minimalist. |
| The category links below show the actual and expected renderings, and any |
| error messages. The individual test pages have links to relevant parts of |
| the specification and extra notes. |
| |
| <p>There may be many inaccuracies: tests that do not notice when part of |
| the output is incorrect; tests that are too intolerant of acceptable |
| renderings differences, or make other unreasonable assumptions; tests that |
| were written for an outdated version of the specification, and tests that |
| are just wrong. Also a number of features are not tested, most notably text |
| rendering. Please contact me (<a |
| href="mailto:excors@gmail.com">email</a>, <a |
| href="http://wiki.whatwg.org/wiki/IRC">IRC</a>, etc) if you find any |
| problems. |
| |
| index.w3c: | |
| <!DOCTYPE html> |
| <title>Canvas tests - index</title> |
| <link rel="stylesheet" href="/common/canvas-index.css"> |
| |
| <h1><code><canvas></code> tests</h1> |
| |
| index.category.item: | |
| <li><h3><a href="index.%s.html">%s.*</a></h3><p>%d test%s <a href="#" onclick="return expand(this)">expand</a></p> |
| |
| index.w3c.category.item: | |
| <li><h3><a href="index.%s.html">%s.*</a></h3><p>%d test%s</p> |
| |
| reportgen: | |
| <!DOCTYPE html> |
| <title>Canvas tests - report generator</title> |
| <link rel="stylesheet" href="../reportgen.css"> |
| <script src="../reportgen.js"></script> |
| <p>This is mainly for my own use, so it is not designed to be user-friendly. |
| If anyone else wants to use it for some reason, just wait |
| until "tests not yet loaded" and "tests not yet completed" get down to zero, then click the |
| pass/fail button for any test it shows where it cannot work out the answer (or use the |
| <kbd>y</kbd>/<kbd>n</kbd> keys to choose for the magenta-highlighted case), then use the |
| buttons at the bottom to collect all the results. |
| <form id="f"> |
| <p><label for="loading">Tests not yet loaded:</label> <input id="loading" value="0" readonly> |
| <p><label for="waiting">Tests not yet completed:</label> <input id="waiting" value="0" readonly> |
| <p><button type="button" onclick="showUnfinished()">Show uncompleted tests</button> |
| <button type="button" onclick="showAll()">Show all tests</button> |
| <button type="button" onclick="reloadAll()">Reload test cases serially</button> |
| <!--<button type="button" onclick="avoidFrameLimit()">HACK: work around frame limit</button> |
| <button type="button" onclick="makeObjects()">HACK: s/iframe/object/</button>--> |
| <hr> |
| <p><label for="passed">Detected passes:</label> <input id="passed" value="0" readonly> |
| <p><label for="failed">Detected fails:</label> <input id="failed" value="0" readonly> |
| <hr> |
| <table> |
| <tr> |
| <th>Test name |
| <th>Test case |
| <th>Pass? |
| <th>Fail? |
| <th>Notes |
| <script> |
| createTable( [ |
| %(items)s |
| ] ); |
| </script> |
| </table> |
| </form> |
| <hr> |
| <form method="post" action="../submitresults.cgi"> |
| <button type="button" onclick="document.getElementById('report').value = genreport()">Generate test report</button><br> |
| <textarea name="report" id="report" cols="100" rows="10"></textarea><br> |
| <input type="submit" value="Submit results"> (Submissions will tend to be ignored unless there |
| is a good reason why they won't be, so don't use this form unless there is such a reason.) |
| </form> |
| |
| results: | |
| <!DOCTYPE html> |
| <title>Canvas tests - results</title> |
| <link rel="stylesheet" href="../results.css"> |
| <table> |
| <col id="col1"> |
| <tr> |
| <th>Test |