paper.js/test/tests/Item_Cloning.js

173 lines
4.4 KiB
JavaScript
Raw Normal View History

2011-07-01 06:17:45 -04:00
/*
* Paper.js
*
* This file is part of Paper.js, a JavaScript Vector Graphics Library,
* based on Scriptographer.org and designed to be largely API compatible.
* http://paperjs.org/
* http://scriptographer.org/
*
* Copyright (c) 2011, Juerg Lehni & Jonathan Puckey
* http://lehni.org/ & http://jonathanpuckey.com/
*
* Distributed under the MIT license. See LICENSE file for details.
*
* All rights reserved.
*/
function cloneAndCompare(item) {
var copy = item.clone();
equals(function() {
return item.parent == copy.parent;
}, true);
equals(function() {
return item.nextSibling == copy;
}, true);
if (item.name) {
equals(function() {
return copy.parent.children[copy.name] == copy;
}, true);
}
compareItems(item, copy, true, true);
// Remove the cloned item to restore the document:
copy.remove();
}
2011-05-20 13:40:07 -04:00
test('Path#clone()', function() {
var path = new Path([10, 20], [30, 40]);
path.closed = true;
path.name = 'test';
path.style = {
strokeCap: 'round',
strokeJoin: 'round',
dashOffset: 10,
dashArray: [10, 2, 10],
fillColor: new RgbColor(0, 0, 1),
strokeColor: new RgbColor(0, 0, 1),
2011-05-20 13:40:07 -04:00
miterLimit: 5
};
path.clockwise = false;
path.opacity = 0.5;
path.locked = true;
path.visible = false;
path.blendMode = 'multiply';
path.clipMask = true;
2011-05-20 13:40:07 -04:00
path.selected = true;
cloneAndCompare(path);
});
test('Path#clone() with GradientColor', function() {
var colors = ['red', 'green', 'black'];
var gradient = new Gradient(colors, 'radial');
var color = new GradientColor(gradient, [0, 0], [20, 20], [10, 10]);
2011-07-07 10:09:02 -04:00
var path = new Path([10, 20], [30, 40]);
path.fillColor = color;
cloneAndCompare(path);
});
2011-05-20 13:40:07 -04:00
test('CompoundPath#clone()', function() {
var path1 = new Path.Rectangle([200, 200], [100, 100]);
var path2 = new Path.Rectangle([50, 50], [200, 200]);
var compound = new CompoundPath(path1, path2);
cloneAndCompare(compound);
});
test('Layer#clone()', function() {
var path = new Path.Rectangle([200, 200], [100, 100]);
cloneAndCompare(paper.project.activeLayer);
});
test('Layer#clone() - check activeLayer', function() {
var project = paper.project,
activeLayer = project.activeLayer,
layer = activeLayer.clone();
equals(function() {
return layer == project.activeLayer;
}, true);
equals(function() {
return activeLayer != project.activeLayer;
}, true);
});
2011-05-20 13:40:07 -04:00
test('Group#clone()', function() {
var path = new Path.Circle([150, 150], 60);
path.style = {
strokeCap: 'round',
strokeJoin: 'round',
dashOffset: 10,
dashArray: [10, 2, 10],
fillColor: new RgbColor(0, 0, 1),
strokeColor: new RgbColor(0, 0, 1),
2011-05-20 13:40:07 -04:00
miterLimit: 5
};
var secondPath = new Path.Circle([175, 175], 85);
var group = new Group([path, secondPath]);
cloneAndCompare(group);
});
test('PointText#clone()', function() {
var pointText = new PointText(new Point(50, 50));
pointText.content = 'test';
pointText.position = pointText.position.add(100);
2011-05-20 13:40:07 -04:00
pointText.characterStyle = {
font: 'serif',
fontSize: 20
};
pointText.justification = 'center';
2011-05-20 13:40:07 -04:00
cloneAndCompare(pointText);
});
test('PlacedSymbol#clone()', function() {
var path = new Path.Circle([150, 150], 60);
var symbol = new Symbol(path);
var placedSymbol = new PlacedSymbol(symbol);
placedSymbol.position = [100, 100];
placedSymbol.rotate(90);
cloneAndCompare(placedSymbol);
});
test('Symbol#clone()', function() {
var path = new Path.Circle([150, 150], 60);
path.style = {
strokeCap: 'round',
strokeJoin: 'round',
dashOffset: 10,
dashArray: [10, 2, 10],
fillColor: new RgbColor(0, 0, 1),
strokeColor: new RgbColor(0, 0, 1),
2011-05-20 13:40:07 -04:00
miterLimit: 5
};
path.selected = true;
var symbol = new Symbol(path);
var copy = symbol.clone();
compareItems(symbol.definition, copy.definition);
2011-05-20 13:40:07 -04:00
equals(function() {
return symbol.project == copy.project;
}, true);
equals(function() {
return paper.project.symbols.length == 2;
}, true);
2011-05-21 06:50:36 -04:00
});
test('Raster#clone()', function() {
var path = new Path.Circle([150, 150], 60);
path.style = {
fillColor: new RgbColor(0, 0, 1),
strokeColor: new RgbColor(0, 0, 1)
2011-05-21 06:50:36 -04:00
};
var raster = path.rasterize();
2011-05-21 11:25:33 -04:00
raster.opacity = 0.5;
raster.locked = true;
raster.visible = false;
raster.blendMode = 'multiply';
2011-05-21 06:50:36 -04:00
raster.rotate(20).translate(100);
cloneAndCompare(raster);
});
test('Group with clipmask', function() {
var path = new Path.Circle([100, 100], 30),
path2 = new Path.Circle([100, 100], 20),
group = new Group([path, path2]);
group.clipped = true;
cloneAndCompare(group);
2011-05-20 13:40:07 -04:00
});