konva/test/unit/Star-test.ts

153 lines
3.2 KiB
TypeScript
Raw Normal View History

2021-04-30 22:24:27 +08:00
import { assert } from 'chai';
2021-05-05 22:19:24 +08:00
import { addStage, Konva, cloneAndCompareLayer } from './test-utils';
2021-04-30 22:24:27 +08:00
describe('Star', function () {
// ======================================================
2021-04-30 22:24:27 +08:00
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,
2020-05-08 22:59:35 +08:00
y: -70,
},
scale: {
x: 0.5,
2020-05-08 22:59:35 +08:00
y: 0.5,
},
});
layer.add(star);
stage.add(layer);
assert.equal(star.getClassName(), 'Star');
});
// ======================================================
2021-04-30 22:24:27 +08:00
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,
2020-05-08 22:59:35 +08:00
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,
2019-02-20 22:13:39 +08:00
shadowOffset: { x: 20, y: 20 },
shadowOpacity: 0.5,
2020-05-08 22:59:35 +08:00
draggable: true,
});
layer.add(rect);
layer.add(star);
stage.add(layer);
2021-04-30 22:24:27 +08:00
assert.equal(star.lineJoin(), 'round');
star.lineJoin('bevel');
assert.equal(star.lineJoin(), 'bevel');
2021-04-30 22:24:27 +08:00
star.lineJoin('round');
});
// ======================================================
2021-04-30 22:24:27 +08:00
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,
2019-02-20 22:13:39 +08:00
shadowOffset: { x: 20, y: 20 },
shadowOpacity: 0.5,
2020-05-08 22:59:35 +08:00
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);
});
// ======================================================
2021-04-30 22:24:27 +08:00
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',
2019-02-20 22:13:39 +08:00
stroke: 'black',
strokeWidth: 5,
lineJoin: 'round',
shadowColor: 'black',
shadowBlur: 10,
2019-02-20 22:13:39 +08:00
shadowOffset: { x: 20, y: 20 },
shadowOpacity: 0.5,
2020-05-08 22:59:35 +08:00
draggable: true,
});
layer.add(star);
star.cache();
stage.add(layer);
assert.deepEqual(star.getSelfRect(), {
x: -50,
y: -50,
height: 100,
2020-05-08 22:59:35 +08:00
width: 100,
});
2019-02-20 22:13:39 +08:00
cloneAndCompareLayer(layer, 100);
});
});