konva/test/unit/Star-test.ts
2023-04-05 20:37:22 -06:00

154 lines
3.2 KiB
TypeScript

import { assert } from 'chai';
import { addStage, Konva, cloneAndCompareLayer } from './test-utils';
describe('Star', function () {
// ======================================================
it('add five point star', function () {
var stage = addStage();
var layer = new Konva.Layer();
var star = new Konva.Star({
x: 200,
y: 100,
numPoints: 5,
innerRadius: 40,
outerRadius: 70,
fill: 'green',
stroke: 'blue',
strokeWidth: 5,
name: 'foobar',
center: {
x: 0,
y: -70,
},
scale: {
x: 0.5,
y: 0.5,
},
});
layer.add(star);
stage.add(layer);
assert.equal(star.getClassName(), 'Star');
});
// ======================================================
it('add star with line join and shadow', function () {
var stage = addStage();
var layer = new Konva.Layer();
var rect = new Konva.Rect({
x: 250,
y: 75,
width: 100,
height: 100,
fill: 'red',
});
var star = new Konva.Star({
x: 200,
y: 100,
numPoints: 5,
innerRadius: 40,
outerRadius: 70,
fill: 'green',
stroke: 'blue',
strokeWidth: 5,
lineJoin: 'round',
shadowColor: 'black',
shadowBlur: 10,
shadowOffset: { x: 20, y: 20 },
shadowOpacity: 0.5,
draggable: true,
});
layer.add(rect);
layer.add(star);
stage.add(layer);
assert.equal(star.lineJoin(), 'round');
star.lineJoin('bevel');
assert.equal(star.lineJoin(), 'bevel');
star.lineJoin('round');
});
// ======================================================
it('attr sync', function () {
var stage = addStage();
var layer = new Konva.Layer();
var star = new Konva.Star({
x: 200,
y: 100,
numPoints: 5,
innerRadius: 30,
outerRadius: 50,
fill: 'green',
stroke: 'blue',
strokeWidth: 5,
lineJoin: 'round',
shadowColor: 'black',
shadowBlur: 10,
shadowOffset: { x: 20, y: 20 },
shadowOpacity: 0.5,
draggable: true,
});
layer.add(star);
stage.add(layer);
assert.equal(star.getWidth(), 100);
assert.equal(star.getHeight(), 100);
star.setWidth(120);
assert.equal(star.outerRadius(), 60);
assert.equal(star.getHeight(), 120);
star.setHeight(140);
assert.equal(star.outerRadius(), 70);
assert.equal(star.getHeight(), 140);
});
// ======================================================
it('star cache', function () {
var stage = addStage();
var layer = new Konva.Layer();
var star = new Konva.Star({
x: 200,
y: 100,
numPoints: 5,
innerRadius: 30,
outerRadius: 50,
fill: 'green',
stroke: 'black',
strokeWidth: 5,
lineJoin: 'round',
shadowColor: 'black',
shadowBlur: 10,
shadowOffset: { x: 20, y: 20 },
shadowOpacity: 0.5,
draggable: true,
});
layer.add(star);
stage.add(layer);
star.cache();
assert.deepEqual(star.getSelfRect(), {
x: -50,
y: -50,
height: 100,
width: 100,
});
cloneAndCompareLayer(layer, 100);
});
});