test('Path#clone()', function() {
	var proj = paper.project;
	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),
		miterLimit: 5
	};
	path.clockwise = false;
	path.opacity = 0.5;
	path.locked = true;
	path.visible = false;
	path.blendMode = 'multiply';
	path.clipMask = true;
	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]);
	
	var proj = paper.project;
	var path = new Path([10, 20], [30, 40]);
	path.fillColor = color;
	cloneAndCompare(path);
});

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('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),
		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 += 100;
	pointText.characterStyle = {
		font: 'serif',
		fontSize: 20
	};
	pointText.paragraphStyle.justification = 'center';
	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),
		miterLimit: 5
	};
	path.selected = true;
	var symbol = new Symbol(path);
	var copy = symbol.clone();
	compareItems(symbol.definition, copy.definition);
	equals(function() {
		return symbol.project == copy.project;
	}, true);
	equals(function() {
		return paper.project.symbols.length == 2;
	}, true);
});

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)
	};
	var raster = path.rasterize();
	raster.opacity = 0.5;
	raster.locked = true;
	raster.visible = false;
	raster.blendMode = 'multiply';
	raster.rotate(20).translate(100);
	cloneAndCompare(raster);
});
@@ -3146,16 +3146,234 @@
 are(raster);%0A%7D);
+%0A%0Atest('Group with clipmask', function() %7B%0A%09var path = new Path.Circle(%5B100, 100%5D, 30),%0A%09%09path2 = new Path.Circle(%5B100, 100%5D, 20),%0A%09%09group = new Group(%5Bpath, path2%5D);%0A%09group.clipped = true;%0A%09cloneAndCompare(group);%0A%7D);

Add clone test for group with clip-mask.