summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/canvas/tools/yaml/element/the-canvas-element.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/canvas/tools/yaml/element/the-canvas-element.yaml')
-rw-r--r--testing/web-platform/tests/html/canvas/tools/yaml/element/the-canvas-element.yaml143
1 files changed, 143 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/canvas/tools/yaml/element/the-canvas-element.yaml b/testing/web-platform/tests/html/canvas/tools/yaml/element/the-canvas-element.yaml
new file mode 100644
index 0000000000..1ecf8ccdbf
--- /dev/null
+++ b/testing/web-platform/tests/html/canvas/tools/yaml/element/the-canvas-element.yaml
@@ -0,0 +1,143 @@
+- name: 2d.canvas.context.exists
+ desc: The 2D context is implemented
+ code: |
+ @assert canvas.getContext('2d') !== null;
+
+- name: 2d.canvas.context.invalid.args
+ desc: Calling getContext with invalid arguments.
+ code: |
+ @assert canvas.getContext('') === null;
+ @assert canvas.getContext('2d#') === null;
+ @assert canvas.getContext('This is clearly not a valid context name.') === null;
+ @assert canvas.getContext('2d\0') === null;
+ @assert canvas.getContext('2\uFF44') === null;
+ @assert canvas.getContext('2D') === null;
+ @assert throws TypeError canvas.getContext();
+ @assert canvas.getContext('null') === null;
+ @assert canvas.getContext('undefined') === null;
+
+- name: 2d.canvas.context.extraargs.create
+ desc: The 2D context doesn't throw with extra getContext arguments (new context)
+ code: |
+ @assert document.createElement("canvas").getContext('2d', false, {}, [], 1, "2") !== null;
+ @assert document.createElement("canvas").getContext('2d', 123) !== null;
+ @assert document.createElement("canvas").getContext('2d', "test") !== null;
+ @assert document.createElement("canvas").getContext('2d', undefined) !== null;
+ @assert document.createElement("canvas").getContext('2d', null) !== null;
+ @assert document.createElement("canvas").getContext('2d', Symbol.hasInstance) !== null;
+
+- name: 2d.canvas.context.extraargs.cache
+ desc: The 2D context doesn't throw with extra getContext arguments (cached)
+ code: |
+ @assert canvas.getContext('2d', false, {}, [], 1, "2") !== null;
+ @assert canvas.getContext('2d', 123) !== null;
+ @assert canvas.getContext('2d', "test") !== null;
+ @assert canvas.getContext('2d', undefined) !== null;
+ @assert canvas.getContext('2d', null) !== null;
+ @assert canvas.getContext('2d', Symbol.hasInstance) !== null;
+
+- name: 2d.canvas.context.type.exists
+ desc: The 2D context interface is a property of 'window'
+ notes: &bindings Defined in "Web IDL" (draft)
+ code: |
+ @assert window.CanvasRenderingContext2D;
+
+- name: 2d.canvas.context.type.prototype
+ desc: window.CanvasRenderingContext2D.prototype are not [[Writable]] and not [[Configurable]],
+ and its methods are [[Configurable]].
+ notes: *bindings
+ code: |
+ @assert window.CanvasRenderingContext2D.prototype;
+ @assert window.CanvasRenderingContext2D.prototype.fill;
+ window.CanvasRenderingContext2D.prototype = null;
+ @assert window.CanvasRenderingContext2D.prototype;
+ delete window.CanvasRenderingContext2D.prototype;
+ @assert window.CanvasRenderingContext2D.prototype;
+ window.CanvasRenderingContext2D.prototype.fill = 1;
+ @assert window.CanvasRenderingContext2D.prototype.fill === 1;
+ delete window.CanvasRenderingContext2D.prototype.fill;
+ @assert window.CanvasRenderingContext2D.prototype.fill === undefined;
+
+- name: 2d.canvas.context.type.replace
+ desc: Interface methods can be overridden
+ notes: *bindings
+ code: |
+ var fillRect = window.CanvasRenderingContext2D.prototype.fillRect;
+ window.CanvasRenderingContext2D.prototype.fillRect = function (x, y, w, h)
+ {
+ this.fillStyle = '#0f0';
+ fillRect.call(this, x, y, w, h);
+ };
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ @assert pixel 50,25 == 0,255,0,255;
+ expected: green
+
+- name: 2d.canvas.context.type.extend
+ desc: Interface methods can be added
+ notes: *bindings
+ code: |
+ window.CanvasRenderingContext2D.prototype.fillRectGreen = function (x, y, w, h)
+ {
+ this.fillStyle = '#0f0';
+ this.fillRect(x, y, w, h);
+ };
+ ctx.fillStyle = '#f00';
+ ctx.fillRectGreen(0, 0, 100, 50);
+ @assert pixel 50,25 == 0,255,0,255;
+ expected: green
+
+- name: 2d.canvas.context.unique
+ desc: getContext('2d') returns the same object
+ code: |
+ @assert canvas.getContext('2d') === canvas.getContext('2d');
+
+- name: 2d.canvas.context.shared
+ desc: getContext('2d') returns objects which share canvas state
+ code: |
+ var ctx2 = canvas.getContext('2d');
+ ctx.fillStyle = '#f00';
+ ctx2.fillStyle = '#0f0';
+ ctx.fillRect(0, 0, 100, 50);
+ @assert pixel 50,25 == 0,255,0,255;
+ expected: green
+
+- name: 2d.canvas.host.scaled
+ desc: CSS-scaled canvases get drawn correctly
+ size: 50, 25
+ canvas: 'style="width: 100px; height: 50px"'
+ manual:
+ code: |
+ ctx.fillStyle = '#00f';
+ ctx.fillRect(0, 0, 50, 25);
+ ctx.fillStyle = '#0ff';
+ ctx.fillRect(0, 0, 25, 10);
+ expected: |
+ size 100 50
+ cr.set_source_rgb(0, 0, 1)
+ cr.rectangle(0, 0, 100, 50)
+ cr.fill()
+ cr.set_source_rgb(0, 1, 1)
+ cr.rectangle(0, 0, 50, 20)
+ cr.fill()
+
+- name: 2d.canvas.host.reference
+ desc: CanvasRenderingContext2D.canvas refers back to its canvas
+ code: |
+ @assert ctx.canvas === canvas;
+
+- name: 2d.canvas.host.readonly
+ desc: CanvasRenderingContext2D.canvas is readonly
+ code: |
+ var c = document.createElement('canvas');
+ var d = ctx.canvas;
+ @assert c !== d;
+ ctx.canvas = c;
+ @assert ctx.canvas === d;
+
+- name: 2d.canvas.context.prototype
+ desc: checks CanvasRenderingContext2D prototype
+ code: |
+ @assert Object.getPrototypeOf(CanvasRenderingContext2D.prototype) === Object.prototype;
+ @assert Object.getPrototypeOf(ctx) === CanvasRenderingContext2D.prototype;
+ t.done();