2021-11-27 16:43:41 +01:00
|
|
|
import chai from 'chai'
|
2022-09-12 09:11:13 +02:00
|
|
|
import { Design } from '@freesewing/core'
|
2022-09-15 13:49:55 +02:00
|
|
|
import { plugin } from '../src/index.mjs'
|
2021-11-27 16:43:41 +01:00
|
|
|
|
|
|
|
const expect = chai.expect
|
|
|
|
|
|
|
|
describe('Flip Plugin Tests', () => {
|
2022-09-12 09:11:13 +02:00
|
|
|
const part = {
|
|
|
|
name: 'test',
|
2022-09-25 16:47:04 +02:00
|
|
|
draft: ({ Point, points, macro, paths, Path, snippets, Snippet, part }) => {
|
2022-09-12 09:11:13 +02:00
|
|
|
points.from = new Point(10, 20)
|
|
|
|
points.to = new Point(30, 40)
|
|
|
|
paths.test = new Path()
|
|
|
|
.move(new Point(1, 2))
|
|
|
|
.curve(new Point(10, 20), new Point(30, 40), new Point(50, 60))
|
|
|
|
snippets.test = new Snippet('logo', new Point(-66, 20))
|
|
|
|
macro('flip')
|
2022-09-25 16:47:04 +02:00
|
|
|
|
|
|
|
return part
|
2022-09-12 09:11:13 +02:00
|
|
|
},
|
2022-09-25 16:47:04 +02:00
|
|
|
plugins: [plugin],
|
2022-09-12 09:11:13 +02:00
|
|
|
}
|
2022-09-25 16:47:04 +02:00
|
|
|
const Test = new Design({ parts: [part] })
|
2022-09-12 09:11:13 +02:00
|
|
|
const pattern = new Test()
|
|
|
|
pattern.draft()
|
|
|
|
it('Should flip points', () => {
|
2022-09-25 16:47:04 +02:00
|
|
|
expect(pattern.parts[0].test.points.from.x).to.equal(-10)
|
|
|
|
expect(pattern.parts[0].test.points.from.y).to.equal(20)
|
|
|
|
expect(pattern.parts[0].test.points.to.x).to.equal(-30)
|
|
|
|
expect(pattern.parts[0].test.points.to.y).to.equal(40)
|
2021-11-27 16:43:41 +01:00
|
|
|
})
|
2022-01-27 20:52:55 +01:00
|
|
|
|
2022-09-12 09:11:13 +02:00
|
|
|
it('Should flip paths', () => {
|
2022-09-25 16:47:04 +02:00
|
|
|
expect(pattern.parts[0].test.paths.test.ops[0].to.x).to.equal(-1)
|
|
|
|
expect(pattern.parts[0].test.paths.test.ops[0].to.y).to.equal(2)
|
|
|
|
expect(pattern.parts[0].test.paths.test.ops[1].cp1.x).to.equal(-10)
|
|
|
|
expect(pattern.parts[0].test.paths.test.ops[1].cp1.y).to.equal(20)
|
|
|
|
expect(pattern.parts[0].test.paths.test.ops[1].cp2.x).to.equal(-30)
|
|
|
|
expect(pattern.parts[0].test.paths.test.ops[1].cp2.y).to.equal(40)
|
|
|
|
expect(pattern.parts[0].test.paths.test.ops[1].to.x).to.equal(-50)
|
|
|
|
expect(pattern.parts[0].test.paths.test.ops[1].to.y).to.equal(60)
|
2021-11-27 16:43:41 +01:00
|
|
|
})
|
2022-01-27 20:52:55 +01:00
|
|
|
|
2022-09-12 09:11:13 +02:00
|
|
|
it('Should flip snippets', () => {
|
2022-09-25 16:47:04 +02:00
|
|
|
expect(pattern.parts[0].test.snippets.test.anchor.x).to.equal(66)
|
|
|
|
expect(pattern.parts[0].test.snippets.test.anchor.y).to.equal(20)
|
2021-11-27 16:43:41 +01:00
|
|
|
})
|
2022-01-27 20:52:55 +01:00
|
|
|
|
|
|
|
it('Should flip points in a part on their vertical axis', () => {
|
2022-09-12 09:11:13 +02:00
|
|
|
const part = {
|
|
|
|
name: 'test',
|
2022-09-25 16:47:04 +02:00
|
|
|
draft: ({ Point, points, macro, part }) => {
|
2022-09-12 09:11:13 +02:00
|
|
|
points.from = new Point(10, 20)
|
|
|
|
points.to = new Point(40, 230)
|
|
|
|
macro('flip', {})
|
2022-09-25 16:47:04 +02:00
|
|
|
|
|
|
|
return part
|
2022-09-12 09:11:13 +02:00
|
|
|
},
|
2022-09-25 16:47:04 +02:00
|
|
|
plugins: [plugin],
|
2022-09-12 09:11:13 +02:00
|
|
|
}
|
2022-09-25 16:47:04 +02:00
|
|
|
const Test = new Design({ parts: [part] })
|
2022-09-12 09:11:13 +02:00
|
|
|
const pattern = new Test()
|
|
|
|
pattern.draft()
|
2022-09-25 16:47:04 +02:00
|
|
|
let c = pattern.parts[0].test.points
|
2022-01-27 20:52:55 +01:00
|
|
|
expect(c.from.x).to.equal(-10)
|
|
|
|
expect(c.to.x).to.equal(-40)
|
|
|
|
})
|
|
|
|
|
|
|
|
it('Should flip points in a path on their vertical axis', () => {
|
2022-09-12 09:11:13 +02:00
|
|
|
const part = {
|
|
|
|
name: 'test',
|
2022-09-25 16:47:04 +02:00
|
|
|
draft: ({ Point, points, macro, paths, Path, part }) => {
|
2022-09-12 09:11:13 +02:00
|
|
|
points.from = new Point(10, 20)
|
|
|
|
points.cp1 = new Point(40, 0)
|
|
|
|
points.cp2 = new Point(60, 30)
|
|
|
|
points.to = new Point(40, 230)
|
|
|
|
points.pathTo = new Point(90, 20)
|
|
|
|
paths.line = new Path().move(points.from).curve(points.cp1, points.cp2, points.pathTo)
|
|
|
|
macro('flip', {})
|
2022-09-25 16:47:04 +02:00
|
|
|
|
|
|
|
return part
|
2022-09-12 09:11:13 +02:00
|
|
|
},
|
2022-09-25 16:47:04 +02:00
|
|
|
plugins: [plugin],
|
2022-09-12 09:11:13 +02:00
|
|
|
}
|
2022-09-25 16:47:04 +02:00
|
|
|
const Test = new Design({ parts: [part] })
|
2022-09-12 09:11:13 +02:00
|
|
|
const pattern = new Test()
|
|
|
|
pattern.draft()
|
2022-09-25 16:47:04 +02:00
|
|
|
let c = pattern.parts[0].test
|
2022-01-27 20:52:55 +01:00
|
|
|
expect(c.points.from.x).to.equal(-10)
|
|
|
|
expect(c.points.to.x).to.equal(-40)
|
|
|
|
expect(c.paths.line.ops[0].to.x).to.equal(-10)
|
|
|
|
expect(c.paths.line.ops[1].cp1.x).to.equal(-40)
|
|
|
|
expect(c.paths.line.ops[1].cp2.x).to.equal(-60)
|
|
|
|
expect(c.paths.line.ops[1].to.x).to.equal(-90)
|
|
|
|
expect(c.points.pathTo.x).to.equal(-90)
|
|
|
|
})
|
|
|
|
|
|
|
|
it('Should flip points in snippets on their vertical axis', () => {
|
2022-09-12 09:11:13 +02:00
|
|
|
const part = {
|
|
|
|
name: 'test',
|
|
|
|
draft: ({ Point, points, snippets, Snippet, macro, part }) => {
|
|
|
|
points.anchorPoint = new Point(40, 0)
|
|
|
|
snippets.testSnippet = new Snippet('button', points.anchorPoint)
|
|
|
|
macro('flip', {})
|
2022-09-25 16:47:04 +02:00
|
|
|
|
2022-09-12 09:11:13 +02:00
|
|
|
return part
|
|
|
|
},
|
2022-09-25 16:47:04 +02:00
|
|
|
plugins: [plugin],
|
2022-09-12 09:11:13 +02:00
|
|
|
}
|
2022-09-25 16:47:04 +02:00
|
|
|
const Test = new Design({ parts: [part] })
|
2022-09-12 09:11:13 +02:00
|
|
|
const pattern = new Test()
|
|
|
|
pattern.draft().render()
|
2022-09-25 16:47:04 +02:00
|
|
|
let c = pattern.parts[0].test
|
2022-01-27 20:52:55 +01:00
|
|
|
expect(c.snippets.testSnippet.anchor.x).to.equal(-40)
|
|
|
|
})
|
2021-11-27 16:43:41 +01:00
|
|
|
})
|