paper.js/test/tests/Layer.js

128 lines
3.3 KiB
JavaScript
Raw Normal View History

2011-07-01 06:17:45 -04:00
/*
* Paper.js - The Swiss Army Knife of Vector Graphics Scripting.
2011-07-01 06:17:45 -04:00
* http://paperjs.org/
*
2014-01-03 19:47:16 -05:00
* Copyright (c) 2011 - 2014, Juerg Lehni & Jonathan Puckey
* http://scratchdisk.com/ & http://jonathanpuckey.com/
2011-07-01 06:17:45 -04:00
*
* Distributed under the MIT license. See LICENSE file for details.
*
* All rights reserved.
*/
2011-02-16 16:11:26 -05:00
module('Layer');
test('previousSibling / nextSibling', function() {
2011-05-20 09:08:17 -04:00
var project = paper.project;
var firstLayer = project.activeLayer;
2011-02-16 16:11:26 -05:00
var secondLayer = new Layer();
equals(function() {
return secondLayer.previousSibling == firstLayer;
}, true);
equals(function() {
return secondLayer.nextSibling == null;
}, true);
2011-07-07 10:09:02 -04:00
2011-02-16 16:11:26 -05:00
// Move another layer into secondLayer and check nextSibling /
// previousSibling:
var path = new Path();
var thirdLayer = new Layer();
secondLayer.insertChild(0, thirdLayer);
equals(function() {
return secondLayer.children.length;
}, 2);
equals(function() {
return thirdLayer.nextSibling == path;
}, true);
secondLayer.addChild(thirdLayer);
equals(function() {
return thirdLayer.nextSibling == null;
}, true);
equals(function() {
return thirdLayer.previousSibling == path;
}, true);
equals(function() {
2011-05-20 09:08:17 -04:00
return project.layers.length == 2;
}, true);
2011-07-07 10:09:02 -04:00
firstLayer.addChild(secondLayer);
equals(function() {
2011-05-20 09:08:17 -04:00
return project.layers.length == 1;
}, true);
2011-02-16 16:11:26 -05:00
});
test('insertAbove / insertBelow', function() {
2011-05-20 09:08:17 -04:00
var project = paper.project;
var firstLayer = project.activeLayer;
firstLayer.name = 'first';
2011-02-16 16:11:26 -05:00
var secondLayer = new Layer();
secondLayer.name = 'second';
2012-11-19 23:41:04 -05:00
var thirdLayer = new Layer();
thirdLayer.name = 'third';
2012-11-19 23:41:04 -05:00
thirdLayer.insertBelow(firstLayer);
equals(function() {
return thirdLayer.previousSibling == null;
}, true);
equals(function() {
return thirdLayer.nextSibling == firstLayer;
}, true);
secondLayer.insertBelow(firstLayer);
equals(function() {
2012-11-19 23:41:04 -05:00
return secondLayer.previousSibling == thirdLayer;
}, true);
equals(function() {
return secondLayer.nextSibling == firstLayer;
}, true);
2011-07-07 10:09:02 -04:00
2011-02-16 16:11:26 -05:00
var path = new Path();
firstLayer.addChild(path);
2011-02-16 16:11:26 -05:00
// move the layer above the path, inside the firstLayer.
// 'Above' means visually appearing on top, thus with a larger index.
secondLayer.insertAbove(path);
equals(function() {
return path.nextSibling == secondLayer;
}, true);
equals(function() {
return secondLayer.parent == firstLayer;
}, true);
2012-11-19 23:41:04 -05:00
// There should now only be two layers left:
equals(function() {
2011-05-20 09:08:17 -04:00
return project.layers.length;
2012-11-19 23:41:04 -05:00
}, 2);
2011-05-20 09:08:17 -04:00
});
test('addChild / appendBottom / nesting', function() {
2011-05-20 09:08:17 -04:00
var project = paper.project;
var firstLayer = project.activeLayer;
var secondLayer = new Layer();
// There should be two layers now in project.layers
equals(function() {
return project.layers.length;
2011-05-20 19:42:33 -04:00
}, 2);
firstLayer.addChild(secondLayer);
2011-05-20 09:08:17 -04:00
equals(function() {
return secondLayer.parent == firstLayer;
}, true);
2011-05-20 19:42:33 -04:00
// There should only be the firsLayer now in project.layers
2011-05-20 09:08:17 -04:00
equals(function() {
2011-05-20 19:42:33 -04:00
return project.layers.length;
}, 1);
2011-05-20 09:08:17 -04:00
equals(function() {
2011-05-20 19:42:33 -04:00
return project.layers[0] == firstLayer;
2011-05-20 09:08:17 -04:00
}, true);
2011-05-20 19:42:33 -04:00
// Now move secondLayer bellow the first again, in which case it should
// reappear in project.layers
secondLayer.insertBelow(firstLayer);
2011-05-20 19:42:33 -04:00
// There should be two layers now in project.layers again now
2011-05-20 09:08:17 -04:00
equals(function() {
return project.layers.length;
2011-05-20 19:42:33 -04:00
}, 2);
equals(function() {
2011-05-21 09:28:20 -04:00
return project.layers[0] == secondLayer
&& project.layers[1] == firstLayer;
2011-05-20 19:42:33 -04:00
}, true);
2012-11-19 23:41:04 -05:00
});