'use strict'; describe('PIXI.Graphics', () => { describe('constructor', () => { it('should set defaults', () => { const graphics = new PIXI.Graphics(); expect(graphics.fillAlpha).to.be.equals(1); expect(graphics.lineWidth).to.be.equals(0); expect(graphics.lineColor).to.be.equals(0); expect(graphics.tint).to.be.equals(0xFFFFFF); expect(graphics.blendMode).to.be.equals(PIXI.BLEND_MODES.NORMAL); }); }); describe('lineTo', () => { it('should return correct bounds - north', () => { const graphics = new PIXI.Graphics(); graphics.moveTo(0, 0); graphics.lineStyle(1); graphics.lineTo(0, 10); expect(graphics.width).to.be.below(1.00001); expect(graphics.width).to.be.above(0.99999); expect(graphics.height).to.be.equals(10); }); it('should return correct bounds - south', () => { const graphics = new PIXI.Graphics(); graphics.moveTo(0, 0); graphics.lineStyle(1); graphics.lineTo(0, -10); expect(graphics.width).to.be.below(1.00001); expect(graphics.width).to.be.above(0.99999); expect(graphics.height).to.be.equals(10); }); it('should return correct bounds - east', () => { const graphics = new PIXI.Graphics(); graphics.moveTo(0, 0); graphics.lineStyle(1); graphics.lineTo(10, 0); expect(graphics.height).to.be.equals(1); expect(graphics.width).to.be.equals(10); }); it('should return correct bounds - west', () => { const graphics = new PIXI.Graphics(); graphics.moveTo(0, 0); graphics.lineStyle(1); graphics.lineTo(-10, 0); expect(graphics.height).to.be.above(0.9999); expect(graphics.height).to.be.below(1.0001); expect(graphics.width).to.be.equals(10); }); it('should return correct bounds when stacked with circle', () => { const graphics = new PIXI.Graphics(); graphics.beginFill(0xFF0000); graphics.drawCircle(50, 50, 50); graphics.endFill(); expect(graphics.width).to.be.equals(100); expect(graphics.height).to.be.equals(100); graphics.lineStyle(20, 0); graphics.moveTo(25, 50); graphics.lineTo(75, 50); expect(graphics.width).to.be.equals(100); expect(graphics.height).to.be.equals(100); }); it('should return correct bounds when square', () => { const graphics = new PIXI.Graphics(); graphics.lineStyle(20, 0, 0.5); graphics.moveTo(0, 0); graphics.lineTo(50, 0); graphics.lineTo(50, 50); graphics.lineTo(0, 50); graphics.lineTo(0, 0); expect(graphics.width).to.be.equals(70); expect(graphics.height).to.be.equals(70); }); }); describe('containsPoint', () => { it('should return true when point inside', () => { const point = new PIXI.Point(1, 1); const graphics = new PIXI.Graphics(); graphics.beginFill(0); graphics.drawRect(0, 0, 10, 10); expect(graphics.containsPoint(point)).to.be.true; }); it('should return false when point outside', () => { const point = new PIXI.Point(20, 20); const graphics = new PIXI.Graphics(); graphics.beginFill(0); graphics.drawRect(0, 0, 10, 10); expect(graphics.containsPoint(point)).to.be.false; }); }); describe('arc', () => { it('should draw an arc', () => { const graphics = new PIXI.Graphics(); expect(graphics.currentPath).to.be.null; expect(() => graphics.arc(100, 30, 20, 0, Math.PI)).to.not.throw(); expect(graphics.currentPath).to.be.not.null; }); it('should not throw with other shapes', () => { // complex drawing #1: draw triangle, rounder rect and an arc (issue #3433) const graphics = new PIXI.Graphics(); // set a fill and line style graphics.beginFill(0xFF3300); graphics.lineStyle(4, 0xffd900, 1); // draw a shape graphics.moveTo(50, 50); graphics.lineTo(250, 50); graphics.lineTo(100, 100); graphics.lineTo(50, 50); graphics.endFill(); graphics.lineStyle(2, 0xFF00FF, 1); graphics.beginFill(0xFF00BB, 0.25); graphics.drawRoundedRect(150, 450, 300, 100, 15); graphics.endFill(); graphics.beginFill(); graphics.lineStyle(4, 0x00ff00, 1); expect(() => graphics.arc(300, 100, 20, 0, Math.PI)).to.not.throw(); }); it('should do nothing when startAngle and endAngle are equal', () => { const graphics = new PIXI.Graphics(); expect(graphics.currentPath).to.be.null; graphics.arc(0, 0, 10, 0, 0); expect(graphics.currentPath).to.be.null; }); it('should do nothing if sweep equals zero', () => { const graphics = new PIXI.Graphics(); expect(graphics.currentPath).to.be.null; graphics.arc(0, 0, 10, 10, 10); expect(graphics.currentPath).to.be.null; }); }); });