From 107dcfcbd6cf5aa65496e5f7728de589af5f14c3 Mon Sep 17 00:00:00 2001 From: kangax Date: Sun, 3 Feb 2013 17:01:01 +0100 Subject: [PATCH] Add fabric.Pattern tests --- test.js | 3 +- test/fixtures/greyfloral.png | Bin 0 -> 6162 bytes test/unit/pattern.js | 77 +++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/greyfloral.png create mode 100644 test/unit/pattern.js diff --git a/test.js b/test.js index c8cbda5b..f1bafa2c 100644 --- a/test.js +++ b/test.js @@ -25,7 +25,8 @@ testrunner.run({ './test/unit/parser.js', './test/unit/canvas.js', './test/unit/canvas_static.js', - './test/unit/gradient.js' + './test/unit/gradient.js', + './test/unit/pattern.js' ] }, function(err, report) { if(report.failed > 0){ diff --git a/test/fixtures/greyfloral.png b/test/fixtures/greyfloral.png new file mode 100644 index 0000000000000000000000000000000000000000..91525ccd8f363747138a57ff9c1a441e09fb7983 GIT binary patch literal 6162 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 literal 0 HcmV?d00001 diff --git a/test/unit/pattern.js b/test/unit/pattern.js new file mode 100644 index 00000000..035d1b14 --- /dev/null +++ b/test/unit/pattern.js @@ -0,0 +1,77 @@ +(function() { + + function createImageElement() { + return fabric.isLikelyNode ? new (require('canvas').Image) : fabric.document.createElement('img'); + } + function setSrc(img, src, callback) { + if (fabric.isLikelyNode) { + require('fs').readFile(src, function(err, imgData) { + if (err) throw err; + img.src = imgData; + img._src = src; + callback && callback(); + }); + } + else { + img.src = src; + callback && callback(); + } + } + + QUnit.module('fabric.Pattern'); + + var img = createImageElement(); + setSrc(img, fabric.isLikelyNode ? + (__dirname + '/../fixtures/greyfloral.png') + : '../fixtures/greyfloral.png'); + + function createPattern() { + return new fabric.Pattern({ + source: img + }); + } + + test('constructor', function() { + ok(fabric.Pattern); + + var pattern = createPattern(); + ok(pattern instanceof fabric.Pattern, 'should inherit from fabric.Pattern'); + }); + + test('properties', function() { + var pattern = createPattern(); + + equal(pattern.source, img); + equal(pattern.repeat, 'repeat'); + }); + + test('toObject', function() { + var pattern = createPattern(); + + ok(typeof pattern.toObject == 'function'); + + var object = pattern.toObject(); + + // node-canvas doesn't give "src" + if (img.src) { + equal(object.source, '../fixtures/greyfloral.png'); + } + equal(object.repeat, 'repeat'); + + var sourceExecuted; + var patternWithGetSource = new fabric.Pattern({ + source: function() {return fabric.document.createElement("canvas")} + }); + + var object2 = patternWithGetSource.toObject(); + equal(object2.source, 'return fabric.document.createElement("canvas")'); + equal(object2.repeat, 'repeat'); + }); + + test('toLive', function() { + var pattern = createPattern(); + + ok(typeof pattern.toLive == 'function'); + }); + +})(); \ No newline at end of file