67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
|
import fs from 'fs'
|
||
|
import { join } from 'path'
|
||
|
import expect from 'expect'
|
||
|
import { parseString } from 'xml2js'
|
||
|
import { Box2 } from 'vecks'
|
||
|
|
||
|
import { Helper } from '../../src'
|
||
|
const dxfContents = fs.readFileSync(
|
||
|
join(__dirname, '/../resources/1x1rectangle.dxf'),
|
||
|
'utf-8',
|
||
|
)
|
||
|
|
||
|
describe('Helper', () => {
|
||
|
it('should be constructed with a string', () => {
|
||
|
expect(() => {
|
||
|
return new Helper(null)
|
||
|
}).toThrow('Helper constructor expects a DXF string')
|
||
|
})
|
||
|
|
||
|
it('parsed automatically', () => {
|
||
|
const helper = new Helper(dxfContents)
|
||
|
expect(helper.parsed.entities.length).toEqual(1)
|
||
|
})
|
||
|
|
||
|
it('denormalises automatically', () => {
|
||
|
const helper = new Helper(dxfContents)
|
||
|
expect(helper.denormalised.length).toEqual(1)
|
||
|
})
|
||
|
|
||
|
it('can group by layer', () => {
|
||
|
const helper = new Helper(dxfContents)
|
||
|
expect(helper.groups.Default.length).toEqual(1)
|
||
|
})
|
||
|
|
||
|
it('can output an SVG', (done) => {
|
||
|
const helper = new Helper(dxfContents)
|
||
|
const svg = helper.toSVG()
|
||
|
parseString(svg, (err, result) => {
|
||
|
if (err) {
|
||
|
throw Error(err)
|
||
|
}
|
||
|
expect(result.svg.$.viewBox).toEqual('0 -10 10 10')
|
||
|
done()
|
||
|
})
|
||
|
})
|
||
|
|
||
|
it('can output polylines', () => {
|
||
|
const helper = new Helper(dxfContents)
|
||
|
const { bbox, polylines } = helper.toPolylines()
|
||
|
expect(bbox.equals(new Box2({ x: 0, y: 0 }, { x: 10, y: 10 }))).toEqual(
|
||
|
true,
|
||
|
)
|
||
|
expect(polylines).toEqual([
|
||
|
{
|
||
|
rgb: [0, 0, 79],
|
||
|
vertices: [
|
||
|
[0, 0],
|
||
|
[10, 0],
|
||
|
[10, 10],
|
||
|
[0, 10],
|
||
|
[0, 0],
|
||
|
],
|
||
|
},
|
||
|
])
|
||
|
})
|
||
|
})
|