diff --git a/.travis.yml b/.travis.yml index ba9461d5..955e18f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ node_js: - "0.12" - "0.11" - "0.10" -script: 'npm run build && npm run test && npm run lint && npm run lint_tests' before_install: - sudo apt-get update -qq - sudo apt-get install -qq libgif-dev libpng-dev libjpeg8-dev libpango1.0-dev libcairo2-dev +script: 'npm run build && npm run test && npm run lint && npm run lint_tests' diff --git a/package.json b/package.json index ae49b5ae..aceab54a 100644 --- a/package.json +++ b/package.json @@ -47,8 +47,8 @@ "uglify-js": "2.4.x", "jscs": "2.1.x", "jshint": "2.8.x", - "qunit": "0.7.2", - "istanbul": "0.3.x" + "qunit": "0.7.x", + "istanbul": "0.4.x" }, "engines": { "node": ">=0.4.0" diff --git a/src/static_canvas.class.js b/src/static_canvas.class.js index 29c1e03d..71743faf 100644 --- a/src/static_canvas.class.js +++ b/src/static_canvas.class.js @@ -886,7 +886,6 @@ } this.fire('after:render'); - canvasToDrawOn.restore(); return this; }, diff --git a/test.js b/test.js index 0b081ec5..e4f04d10 100644 --- a/test.js +++ b/test.js @@ -5,6 +5,7 @@ testrunner.options.log.tests = false; testrunner.options.log.assertions = false; testrunner.options.coverage = true; +testrunner.options.maxBlockDuration = 120000; testrunner.run({ deps: "./test/fixtures/test_script.js", diff --git a/test/unit/canvas_static.js b/test/unit/canvas_static.js index 359b63a3..17b20252 100644 --- a/test/unit/canvas_static.js +++ b/test/unit/canvas_static.js @@ -40,6 +40,8 @@ '"scaleX":1,"scaleY":1,"angle":0,"flipX":false,"flipY":false,"opacity":1,'+ '"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"padding":123,"foo":"bar","rx":0,"ry":0}],"background":""}'; + var CANVAS_WITH_RED_RECT_DATA = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAYAAAC+ZpjcAAAgAElEQVR4Xu3ZQY7lRhIFweqTj3RyzUYCapsE0pHAs15/MhgWG0fXn39+fv73499TAn9+fv5+6oN8DAECBAgQIHAk8OffwPrr6Ck/vinwl8C6yevdBAgQIEDgvoDAum98OkFgnYr5PQECBAgQeExAYD12kJ+fH4H13k18EQECBAgQOBIQWEdcyY8FVsJsCAECBAgQuCcgsO7Zfn2zwPoq5zkCBAgQIPCIgMB65BC/PkNgvXcTX0SAAAECBI4EBNYRV/JjgZUwG0KAAAECBO4JCKx7tl/fLLC+ynmOAAECBAg8IiCwHjmEPxG+dwhfRIAAAQIEvgoIrK9y957zP1j3bL2ZAAECBAgkAgIrYT4aIrCOuPyYAAECBAi8JyCw3ruJwHrvJr6IAAECBAgcCQisI67kxwIrYTaEAAECBAjcExBY92y/vllgfZXzHAECBAgQeERAYD1yiF+fIbDeu4kvIkCAAAECRwIC64gr+bHASpgNIUCAAAEC9wQE1j3br28WWF/lPEeAAAECBB4REFiPHMKfCN87hC8iQIAAAQJfBQTWV7l7z/kfrHu23kyAAAECBBIBgZUwHw0RWEdcfkyAAAECBN4TEFjv3URgvXcTX0SAAAECBI4EBNYRV/JjgZUwG0KAAAECBO4JCKx7tl/fLLC+ynmOAAECBAg8IiCwHjnEr88QWO/dxBcRIECAAIEjAYF1xJX8WGAlzIYQIECAAIF7AgLrnu3XNwusr3KeI0CAAAECjwgIrEcO4U+E7x3CFxEgQIAAga8CAuur3L3n/A/WPVtvJkCAAAECiYDASpiPhgisIy4/JkCAAAEC7wkIrPduIrDeu4kvIkCAAAECRwIC64gr+bHASpgNIUCAAAEC9wQE1j3br28WWF/lPEeAAAECBB4REFiPHOLXZwis927iiwgQIECAwJGAwDriSn4ssBJmQwgQIECAwD0BgXXP9uubBdZXOc8RIECAAIFHBATWI4fwJ8L3DuGLCBAgQIDAVwGB9VXu3nP+B+uerTcTIECAAIFEQGAlzEdDBNYRlx8TIECAAIH3BATWezcRWO/dxBcRIECAAIEjAYF1xJX8WGAlzIYQIECAAIF7AgLrnu3XNwusr3KeI0CAAAECjwgIrEcO8eszBNZ7N/FFBAgQIEDgSEBgHXElPxZYCbMhBAgQIEDgnoDAumf79c0C66uc5wgQIECAwCMCAuuRQ/gT4XuH8EUECBAgQOCrgMD6KnfvOf+Ddc/WmwkQIECAQCIgsBLmoyEC64jLjwkQIECAwHsCAuu9mwis927iiwgQIECAwJGAwDriSn4ssBJmQwgQIECAwD0BgXXP9uubBdZXOc8RIECAAIFHBATWI4f49RkC672b+CICBAgQIHAkILCOuJIfC6yE2RACBAgQIHBPQGDds/36ZoH1Vc5zBAgQIEDgEQGB9cgh/InwvUP4IgIECBAg8FVAYH2Vu/ec/8G6Z+vNBAgQIEAgERBYCfPREIF1xOXHBAgQIEDgPQGB9d5NBNZ7N/FFBAgQIEDgSEBgHXElPxZYCbMhBAgQIEDgnoDAumf79c0C66uc5wgQIECAwCMCAuuRQ/z6DIH13k18EQECBAgQOBIQWEdcyY8FVsJsCAECBAgQuCcgsO7Zfn2zwPoq5zkCBAgQIPCIgMB65BD+RPjeIXwRAQIECBD4KiCwvsrde87/YN2z9WYCBAgQIJAICKyE+WiIwDri8mMCBAgQIPCegMB67yYC672b+CICBAgQIHAkILCOuJIfC6yE2RACBAgQIHBPQGDds/36ZoH1Vc5zBAgQIEDgEQGB9cghfn2GwHrvJr6IAAECBAgcCQisI67kxwIrYTaEAAECBAjcExBY92y/vllgfZXzHAECBAgQeERAYD1yCH8ifO8QvogAAQIECHwVEFhf5e4953+w7tl6MwECBAgQSAQEVsJ8NERgHXH5MQECBAgQeE9AYL13E4H13k18EQECBAgQOBIQWEdcyY8FVsJsCAECBAgQuCcgsO7Zfn2zwPoq5zkCBAgQIPCIgMB65BC/PkNgvXcTX0SAAAECBI4EBNYRV/JjgZUwG0KAAAECBO4JCKx7tl/fLLC+ynmOAAECBAg8IiCwHjmEPxG+dwhfRIAAAQIEvgoIrK9y957zP1j3bL2ZAAECBAgkAgIrYT4aIrCOuPyYAAECBAi8JyCw3ruJwHrvJr6IAAECBAgcCQisI67kxwIrYTaEAAECBAjcExBY92y/vllgfZXzHAECBAgQeERAYD1yiF+fIbDeu4kvIkCAAAECRwIC64gr+bHASpgNIUCAAAEC9wQE1j3br28WWF/lPEeAAAECBB4REFiPHMKfCN87hC8iQIAAAQJfBQTWV7l7z/kfrHu23kyAAAECBBIBgZUwHw0RWEdcfkyAAAECBN4TEFjv3URgvXcTX0SAAAECBI4EBNYRV/JjgZUwG0KAAAECBO4JCKx7tl/fLLC+ynmOAAECBAg8IiCwHjnEr88QWO/dxBcRIECAAIEjAYF1xJX8WGAlzIYQIECAAIF7AgLrnu3XNwusr3KeI0CAAAECjwgIrEcO4U+E7x3CFxEgQIAAga8C/wXW1+c9d0Hgz8/P3xde65UECBAgQIBAJPAnmmMMAQIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQCRW+m8AAAJCSURBVGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRkBgTVzaosSIECAAAEClYDAqqTNIUCAAAECBGYEBNbMqS1KgAABAgQIVAICq5I2hwABAgQIEJgREFgzp7YoAQIECBAgUAkIrEraHAIECBAgQGBGQGDNnNqiBAgQIECAQCUgsCppcwgQIECAAIEZAYE1c2qLEiBAgAABApWAwKqkzSFAgAABAgRmBATWzKktSoAAAQIECFQCAquSNocAAQIECBCYERBYM6e2KAECBAgQIFAJCKxK2hwCBAgQIEBgRkBgzZzaogQIECBAgEAlILAqaXMIECBAgACBGQGBNXNqixIgQIAAAQKVgMCqpM0hQIAAAQIEZgQE1sypLUqAAAECBAhUAgKrkjaHAAECBAgQmBEQWDOntigBAgQIECBQCQisStocAgQIECBAYEZAYM2c2qIECBAgQIBAJSCwKmlzCBAgQIAAgRmB/wPPQS9olhz3SwAAAABJRU5ErkJggg=='; + function getAbsolutePath(path) { var isAbsolute = /^https?:/.test(path); if (isAbsolute) return path; @@ -445,11 +447,15 @@ window.alert("toDataURL is not supported by this environment. Some of the tests can not be run."); } else { + var rect = new fabric.Rect({width: 100, height: 100, fill:'red', top: 0, left: 0}); + canvas.add(rect); var dataURL = canvas.toDataURL(); // don't compare actual data url, as it is often browser-dependent // this.assertIdentical(emptyImageCanvasData, canvas.toDataURL('png')); equal(typeof dataURL, 'string'); equal(dataURL.substring(0, 21), 'data:image/png;base64'); + //to be fixed. + //equal(dataURL, CANVAS_WITH_RED_RECT_DATA); } }); diff --git a/test/unit/group.js b/test/unit/group.js index 4497ac25..de5a5353 100644 --- a/test/unit/group.js +++ b/test/unit/group.js @@ -3,7 +3,7 @@ var el = fabric.document.createElement('canvas'); el.width = 600; el.height = 600; - var canvas = this.canvas = fabric.isLikelyNode ? fabric.createCanvasForNode() : new fabric.Canvas(el); + var canvas = this.canvas = fabric.isLikelyNode ? fabric.createCanvasForNode(600, 600, {enableRetinaScaling: false}) : new fabric.Canvas(el); // function _createImageElement() { // return fabric.isLikelyNode ? new (require('canvas').Image)() : fabric.document.createElement('img'); @@ -515,17 +515,25 @@ test('toObject without default values', function() { }); test('test group transformMatrix', function() { - var rect1 = new fabric.Rect({ top: 100, left: 100, width: 10, height: 10, strokeWidth: 0 }), - rect2 = new fabric.Rect({ top: 120, left: 120, width: 10, height: 10, strokeWidth: 0 }), - group = new fabric.Group([ rect1, rect2 ]), - ctx = canvas.contextContainer, isTransparent = fabric.util.isTransparent; + var rect1 = new fabric.Rect({ top: 1, left: 1, width: 2, height: 2, strokeWidth: 0, fill: 'red', opacity: 1}), + rect2 = new fabric.Rect({ top: 4, left: 4, width: 2, height: 2, strokeWidth: 0, fill: 'red', opacity: 1}), + group = new fabric.Group([ rect1, rect2 ], {opacity: 1, fill: 'blue', strokeWidth: 0}), + isTransparent = fabric.util.isTransparent, + ctx = canvas.contextContainer; canvas.add(group); - equal(isTransparent(ctx, 80, 80, 0), true); - equal(isTransparent(ctx, 101, 101, 0), false); - group.transformMatrix = [1.2, 0, 0, 1.2, 1, 1]; + equal(canvas.enableRetinaScaling, false); + equal(isTransparent(ctx, 0, 0, 0), true); + equal(isTransparent(ctx, 1, 1, 0), false); + equal(isTransparent(ctx, 2, 2, 0), false); + equal(isTransparent(ctx, 3, 3, 0), true); + equal(isTransparent(ctx, 4, 4, 0), false); + group.transformMatrix = [2, 0, 0, 2, 1, 1]; canvas.renderAll(); - equal(isTransparent(ctx, 101, 101, 0), true); - equal(isTransparent(ctx, 131, 131, 0), false); + equal(isTransparent(ctx, 0, 0, 0), true); + equal(isTransparent(ctx, 1, 1, 0), true); + equal(isTransparent(ctx, 2, 2, 0), true); + equal(isTransparent(ctx, 3, 3, 0), false); + equal(isTransparent(ctx, 4, 4, 0), false); }); // asyncTest('cloning group with image', function() { // var rect = new fabric.Rect({ top: 100, left: 100, width: 30, height: 10 }), diff --git a/test/unit/shadow.js b/test/unit/shadow.js index cd91d76c..4f7d4813 100644 --- a/test/unit/shadow.js +++ b/test/unit/shadow.js @@ -141,7 +141,7 @@ var object = shadow.toObject(), shadow2 = new fabric.Shadow(object), object2 = shadow2.toObject(); - equal(shadow.affectStroke, shadow2.affectStroke) + equal(shadow.affectStroke, shadow2.affectStroke); deepEqual(object, object2); }); diff --git a/test/unit/text.js b/test/unit/text.js index b21746db..d161b00c 100644 --- a/test/unit/text.js +++ b/test/unit/text.js @@ -271,7 +271,7 @@ // temp workaround for text objects not obtaining width under node text.width = 100; - text.textAlign = 'justify' + text.textAlign = 'justify'; equal(removeTranslate(text.toSVG()), removeTranslate(TEXT_SVG_JUSTIFIED)); });