blob: a16518864eed7dac41cbc20207fcc211db2501ab [file] [log] [blame]
- name: 2d.drawImage.3arg
testing:
- 2d.drawImage.defaultsource
- 2d.drawImage.defaultdest
timeout: long
images:
- red.png
- green.png
code: |
var promise1 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
var promise2 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/green.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
Promise.all([promise1, promise2]).then(function(response1, response2) {
var promise3 = createImageBitmap(response1);
var promise4 = createImageBitmap(response2);
Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) {
ctx.drawImage(bitmap2, 0, 0);
ctx.drawImage(bitmap1, -100, 0);
ctx.drawImage(bitmap1, 100, 0);
ctx.drawImage(bitmap1, 0, -50);
ctx.drawImage(bitmap1, 0, 50);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.5arg
testing:
- 2d.drawImage.defaultsource
images:
- red.png
- green.png
timeout: long
code: |
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var promise1 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
var promise2 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/green.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
Promise.all([promise1, promise2]).then(function(response1, response2) {
var promise3 = createImageBitmap(response1);
var promise4 = createImageBitmap(response2);
Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) {
ctx.drawImage(bitmap2, 50, 0, 50, 50);
ctx.drawImage(bitmap1, 0, 0, 50, 50);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 50, 50);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.9arg.basic
testing:
- 2d.drawImage.paint
images:
- green.png
timeout: long
code: |
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/green.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.9arg.sourcepos
testing:
- 2d.drawImage.paint
images:
- rgrg-256x256.png
timeout: long
code: |
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/rgrg-256x256.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 140, 20, 100, 50, 0, 0, 100, 50);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.9arg.sourcesize
testing:
- 2d.drawImage.paint
images:
- rgrg-256x256.png
timeout: long
code: |
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/rgrg-256x256.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0, 256, 256, 0, 0, 100, 50);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 51, 26);
ctx.fillRect(49, 24, 51, 26);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
@assert pixel 20,20 ==~ 0,255,0,255;
@assert pixel 80,20 ==~ 0,255,0,255;
@assert pixel 20,30 ==~ 0,255,0,255;
@assert pixel 80,30 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.9arg.destpos
testing:
- 2d.drawImage.paint
images:
- red.png
- green.png
timeout: long
code: |
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var promise1 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
var promise2 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/green.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
Promise.all([promise1, promise2]).then(function(response1, response2) {
var promise3 = createImageBitmap(response1);
var promise4 = createImageBitmap(response2);
Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) {
ctx.drawImage(bitmap2, 0, 0, 100, 50, 0, 0, 100, 50);
ctx.drawImage(bitmap1, 0, 0, 100, 50, -100, 0, 100, 50);
ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 100, 50);
ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -50, 100, 50);
ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 50);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.9arg.destsize
testing:
- 2d.drawImage.paint
images:
- red.png
- green.png
timeout: long
code: |
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var promise1 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
var promise2 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/green.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
Promise.all([promise1, promise2]).then(function(response1, response2) {
var promise3 = createImageBitmap(response1);
var promise4 = createImageBitmap(response2);
Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) {
ctx.drawImage(bitmap2, 1, 1, 1, 1, 0, 0, 100, 50);
ctx.drawImage(bitmap1, 0, 0, 100, 50, -50, 0, 50, 50);
ctx.drawImage(bitmap1, 0, 0, 100, 50, 100, 0, 50, 50);
ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, -25, 100, 25);
ctx.drawImage(bitmap1, 0, 0, 100, 50, 0, 50, 100, 25);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.canvas
testing:
- 2d.drawImage.paint
timeout: long
code: |
var offscreenCanvas2 = new OffscreenCanvas(100, 50);
var ctx2 = offscreenCanvas2.getContext('2d');
ctx2.fillStyle = '#0f0';
ctx2.fillRect(0, 0, 100, 50);
ctx.fillStyle = '#f00';
ctx.drawImage(offscreenCanvas2, 0, 0);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
t.done();
- name: 2d.drawImage.self.1
testing:
- 2d.drawImage.self
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 50, 50);
ctx.fillStyle = '#f00';
ctx.fillRect(50, 0, 50, 50);
ctx.drawImage(offscreenCanvas, 50, 0);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
t.done();
- name: 2d.drawImage.self.2
testing:
- 2d.drawImage.self
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 1, 100, 49);
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 1);
ctx.drawImage(offscreenCanvas, 0, 1);
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 2);
@assert pixel 0,0 ==~ 0,255,0,255;
@assert pixel 99,0 ==~ 0,255,0,255;
@assert pixel 0,49 ==~ 0,255,0,255;
@assert pixel 99,49 ==~ 0,255,0,255;
t.done();
- name: 2d.drawImage.null
testing:
- 2d.drawImage.IDL
timeout: long
code: |
@assert throws TypeError ctx.drawImage(null, 0, 0);
t.done();
- name: 2d.drawImage.zerocanvas
testing:
- 2d.drawImage.zerocanvas
timeout: long
code: |
var offscreenCanvas2 = new OffscreenCanvas(0, 10);
@assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0);
offscreenCanvas2.width = 10;
offscreenCanvas2.height = 0;
@assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0);
offscreenCanvas2.width = 0;
offscreenCanvas2.height = 0;
@assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0);
t.done();
- name: 2d.drawImage.wrongtype
desc: Incorrect image types in drawImage do not match any defined overloads, so
WebIDL throws a TypeError
testing:
- 2d.drawImage.IDL
timeout: long
code: |
@assert throws TypeError ctx.drawImage(undefined, 0, 0);
@assert throws TypeError ctx.drawImage(0, 0, 0);
@assert throws TypeError ctx.drawImage("", 0, 0);
t.done();
- name: 2d.drawImage.floatsource
testing:
- 2d.drawImage.paint
timeout: long
code: |
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/green.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50);
@assert pixel 50,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.zerosource
desc: drawImage with zero-sized source rectangle draws nothing without exception
testing:
- 2d.drawImage.zerosource
timeout: long
images:
- red.png
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/green.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50);
ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50);
ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50);
@assert pixel 50,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.zerosource.image
desc: drawImage with zero-sized source rectangle from image draws nothing without exception
testing:
- 2d.drawImage.zerosource
images:
- red-zerowidth.svg
- red-zeroheight.svg
- red-zerosize.svg
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red-zerowidth.svg');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0, 100, 50);
ctx.drawImage(bitmap, 0, 0, 100, 50);
ctx.drawImage(bitmap, 0, 0, 100, 50);
@assert pixel 50,25 == 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.negativesource
desc: Negative source width/height represents the correct rectangle
testing:
- 2d.drawImage.direction
mozilla: {throws: !!null ''}
images:
- ggrr-256x256.png
timeout: long
code: |
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/ggrr-256x256.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 100, 78, -100, 50, 0, 0, 50, 50);
ctx.drawImage(bitmap, 100, 128, -100, -50, 50, 0, 50, 50);
@assert pixel 1,1 ==~ 0,255,0,255;
@assert pixel 1,48 ==~ 0,255,0,255;
@assert pixel 98,1 ==~ 0,255,0,255;
@assert pixel 98,48 ==~ 0,255,0,255;
@assert pixel 48,1 ==~ 0,255,0,255;
@assert pixel 48,48 ==~ 0,255,0,255;
@assert pixel 51,1 ==~ 0,255,0,255;
@assert pixel 51,48 ==~ 0,255,0,255;
@assert pixel 25,25 ==~ 0,255,0,255;
@assert pixel 75,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.negativedest
desc: Negative destination width/height represents the correct rectangle
testing:
- 2d.drawImage.direction
mozilla: {throws: !!null ''}
timeout: long
images:
- ggrr-256x256.png
code: |
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/ggrr-256x256.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 100, 78, 50, 50, 0, 50, 50, -50);
ctx.drawImage(bitmap, 100, 128, 50, -50, 100, 50, -50, -50);
@assert pixel 1,1 ==~ 0,255,0,255;
@assert pixel 1,48 ==~ 0,255,0,255;
@assert pixel 98,1 ==~ 0,255,0,255;
@assert pixel 98,48 ==~ 0,255,0,255;
@assert pixel 48,1 ==~ 0,255,0,255;
@assert pixel 48,48 ==~ 0,255,0,255;
@assert pixel 51,1 ==~ 0,255,0,255;
@assert pixel 51,48 ==~ 0,255,0,255;
@assert pixel 25,25 ==~ 0,255,0,255;
@assert pixel 75,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.negativedir
desc: Negative dimensions do not affect the direction of the image
testing:
- 2d.drawImage.direction
mozilla: {throws: !!null ''}
timeout: long
images:
- ggrr-256x256.png
code: |
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/ggrr-256x256.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 178, 50, -100, 0, 0, 50, 100);
ctx.drawImage(bitmap, 0, 78, 50, 100, 50, 100, 50, -100);
@assert pixel 1,1 ==~ 0,255,0,255;
@assert pixel 1,48 ==~ 0,255,0,255;
@assert pixel 98,1 ==~ 0,255,0,255;
@assert pixel 98,48 ==~ 0,255,0,255;
@assert pixel 48,1 ==~ 0,255,0,255;
@assert pixel 48,48 ==~ 0,255,0,255;
@assert pixel 51,1 ==~ 0,255,0,255;
@assert pixel 51,48 ==~ 0,255,0,255;
@assert pixel 25,25 ==~ 0,255,0,255;
@assert pixel 75,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.outsidesource
DISABLED: fix this to match the current spec (transparent black outside source)
testing:
- 2d.drawImage.outsidesource
code: |
var promise1 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
var promise2 = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/green.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
Promise.all([promise1, promise2]).then(function(response1, response2) {
var promise3 = createImageBitmap(response1);
var promise4 = createImageBitmap(response2);
Promise.all([promise3, promise4]).then(function(bitmap1, bitmap2) {
ctx.drawImage(bitmap2, 10.5, 10.5, 89.5, 39.5, 0, 0, 100, 50);
ctx.drawImage(bitmap2, 5.5, 5.5, -5.5, -5.5, 0, 0, 100, 50);
ctx.drawImage(bitmap2, 100, 50, -5, -5, 0, 0, 100, 50);
@assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, -0.001, 0, 100, 50, 0, 0, 100, 50);
@assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, -0.001, 100, 50, 0, 0, 100, 50);
@assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 100.001, 50, 0, 0, 100, 50);
@assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 100, 50.001, 0, 0, 100, 50);
@assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 50, 0, 50.001, 50, 0, 0, 100, 50); @moz-todo
@assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, -5, 5, 0, 0, 100, 50);
@assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 5, -5, 0, 0, 100, 50);
@assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 110, 60, -20, -20, 0, 0, 100, 50);
@assert pixel 50,25 ==~ 0,255,0,255; @moz-todo
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.broken
testing:
- 2d.drawImage.incomplete.image
timeout: long
code: |
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/broken.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
ctx.drawImage(bitmap, 0, 0);
@assert pixel 50,25 ==~ 0,255,0,255; @moz-todo
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.svg
desc: drawImage() of an SVG image
testing:
- 2d.drawImage.svg
timeout: long
code: |
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/green.svg');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0);
@assert pixel 50,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.animated.poster
desc: drawImage() of an APNG draws the poster frame
testing:
- 2d.drawImage.animated.image
images:
- anim-poster-gr.png
timeout: long
code: |
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/anim-poster-gr.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0);
@assert pixel 50,25 ==~ 0,255,0,255; @moz-todo
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.path
testing:
- 2d.drawImage.unaffect
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.rect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0);
ctx.fill();
@assert pixel 50,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.transform
testing:
- 2d.drawImage.subject
images:
- red.png
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
ctx.translate(100, 0);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0);
@assert pixel 50,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.alpha
testing:
- 2d.drawImage.subject
images:
- red.png
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
ctx.globalAlpha = 0;
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0);
@assert pixel 50,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.clip
testing:
- 2d.drawImage.subject
images:
- red.png
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
ctx.rect(-10, -10, 1, 1);
ctx.clip();
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0);
@assert pixel 50,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.composite
testing:
- 2d.drawImage.subject
images:
- red.png
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
ctx.globalCompositeOperation = 'destination-over';
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/red.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, 0, 0);
@assert pixel 50,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.nowrap
desc: Stretched images do not get pixels wrapping around the edges
images:
- redtransparent.png
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/redtransparent.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
ctx.drawImage(bitmap, -1950, 0, 2000, 50);
@assert pixel 45,25 ==~ 0,255,0,255;
@assert pixel 50,25 ==~ 0,255,0,255;
@assert pixel 55,25 ==~ 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);
- name: 2d.drawImage.nonfinite
desc: drawImage() with Infinity/NaN is ignored
testing:
- 2d.nonfinite
images:
- red.png
timeout: long
code: |
ctx.fillStyle = '#0f0';
ctx.fillRect(0, 0, 100, 50);
var promise = new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open("GET", '/images/redtransparent.png');
xhr.responseType = 'blob';
xhr.send();
xhr.onload = function() {
resolve(xhr.response);
};
});
promise.then(function(response) {
createImageBitmap(response).then(bitmap => {
@nonfinite ctx.drawImage(<bitmap>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>);
@nonfinite ctx.drawImage(<bitmap>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>);
@nonfinite ctx.drawImage(<bitmap>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>);
@assert pixel 50,25 == 0,255,0,255;
}, t_fail);
}).then(t_pass, t_fail);