paper.js/test/tests/Item_Getting.js
2020-05-23 22:24:42 +02:00

265 lines
5.9 KiB
JavaScript

/*
* Paper.js - The Swiss Army Knife of Vector Graphics Scripting.
* http://paperjs.org/
*
* Copyright (c) 2011 - 2020, Jürg Lehni & Jonathan Puckey
* http://juerglehni.com/ & https://puckey.studio/
*
* Distributed under the MIT license. See LICENSE file for details.
*
* All rights reserved.
*/
QUnit.module('Getting and Matching Items');
test('Item#getItems()', function() {
var group = new Group([new Path({ selected: true }), new Raster()]);
equals(function() {
return group.getItems({
type: 'path'
}).length;
}, 1);
equals(function() {
return group.getItems({
selected: true
}).length;
}, 1);
});
test('Item#matches()', function() {
var path = new Path();
equals(function() {
return path.matches({
visible: false
});
}, false);
equals(function() {
return path.matches({
visible: true
});
}, true);
});
test('Project#getItems()', function() {
var layer = new Layer();
var matches = paper.project.getItems({
class: Layer
});
equals(function() {
return matches.length == 1 && matches[0] == layer;
}, true);
var matches = paper.project.getItems({
class: Item
});
equals(function() {
return matches.length == 1 && matches[0] == layer;
}, true);
var path = new Path();
var matches = paper.project.getItems({
class: Path
});
equals(function() {
return matches.length == 1 && matches[0] == path;
}, true);
var group = new Group();
var matches = paper.project.getItems({
className: 'Group'
});
equals(function() {
return matches.length == 1 && matches[0] === group;
}, true);
var matches = paper.project.getItems({
type: 'group'
});
equals(function() {
return matches.length == 1 && matches[0] === group;
}, true);
var raster = new Raster();
var matches = paper.project.getItems({
class: Raster
});
equals(function() {
return matches.length == 1 && matches[0] === raster;
}, true);
equals(function() {
return paper.project.getItems({
selected: true
}).length;
}, 0);
raster.selected = true;
equals(function() {
return paper.project.getItems({
selected: true
}).length;
}, 2);
raster.selected = true;
equals(function() {
return paper.project.getItems({
selected: true,
class: Raster
}).length;
}, 1);
});
test('Project#getItems() with compare function', function() {
var firstPath = new Path();
var path = new Path({
opacity: 0.5
});
var items = paper.project.getItems({
opacity: function(value) {
return value < 1;
}
});
equals(function() {
return items.length == 1 && items[0] == path;
}, true);
});
test('Project#getItems() with specific property value', function() {
var path = new Path();
var decoyPath = new Path({
opacity: 0.5
});
var items = paper.project.getItems({
opacity: 1,
type: 'path'
});
equals(function() {
return items.length == 1 && items[0] == path;
}, true);
});
test('Project#getItems() with color', function() {
var path = new Path({
fillColor: 'red'
});
var decoyPath = new Path({
fillColor: 'black'
});
var items = paper.project.getItems({
fillColor: 'red',
type: 'path'
});
equals(function() {
return items.length == 1 && items[0] == path;
}, true);
});
test('Project#getItems() with regex function', function() {
var layer = paper.project.activeLayer;
var stopPath = new Path({
name: 'stop'
});
var pausePath = new Path({
name: 'pause'
});
var startPath = new Path({
name: 'starting'
});
var items = paper.project.getItems({
name: /^start/g
});
// console.log(paper.project.activeLayer);
equals(function() {
return items.length == 1 && items[0] == startPath;
}, true);
equals(function() {
var items = paper.project.getItems({
name: /^st/g
});
return items.length == 2;
}, true);
});
test('Project#getItems() empty: true', function() {
var layer = new Layer();
var empty1 = new Path();
var empty2 = new Path();
equals(function() {
return layer.children.length;
}, 2);
equals(function() {
return paper.project.getItems({
empty: true
}).length;
}, 2);
});
test('Project#getItems() overlapping', function() {
var path = new Path.Circle({
radius: 100,
center: [200, 200],
fillColor: 'red'
});
equals(function() {
var matches = project.getItems({
class: Path,
overlapping: [0, 0, 400, 400]
});
return matches.length == 1 && matches[0] == path;
}, true);
equals(function() {
var matches = project.getItems({
class: Path,
overlapping: [200, 0, 400, 400]
});
return matches.length == 1 && matches[0] == path;
}, true);
equals(function() {
var matches = project.getItems({
class: Path,
overlapping: [400, 0, 400, 400]
});
return matches.length == 0;
}, true);
});
test('Project#getItems() inside', function() {
var path = new Path.Circle({
radius: 100,
center: [200, 200],
fillColor: 'red'
});
equals(function() {
var matches = project.getItems({
class: Path,
inside: [0, 0, 400, 400]
});
return matches.length == 1 && matches[0] == path;
}, true);
equals(function() {
var matches = project.getItems({
class: Path,
inside: [200, 0, 400, 400]
});
return matches.length == 0;
}, true);
});