| # 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 |