UNPKG

@jscad/modeling

Version:

Constructive Solid Geometry (CSG) Library for JSCAD

123 lines (112 loc) 2.84 kB
const test = require('ava') const { fromCompactBinary, toCompactBinary, create } = require('./index') test('toCompactBinary: converts geom2 into a compact form', (t) => { const geometry1 = create() const compacted1 = toCompactBinary(geometry1) const expected1 = new Float32Array([ 0, // type flag 1, 0, 0, 0, // transforms 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -1, -1, -1, -1 // color ]) t.deepEqual(compacted1, expected1) // geometry with a hole const geometry2 = create([[[10, 10], [-10, -10]], [[-10, -10], [10, -10]], [[10, -10], [10, 10]], [[5, -5], [6, -4]], [[6, -5], [5, -5]], [[6, -4], [6, -5]]]) const compacted2 = toCompactBinary(geometry2) const expected2 = new Float32Array([ 0, // type flag 1, 0, 0, 0, // transforms 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -1, -1, -1, -1, // color 10, 10, -10, -10, // sides -10, -10, 10, -10, 10, -10, 10, 10, 5, -5, 6, -4, 6, -5, 5, -5, 6, -4, 6, -5 ]) t.deepEqual(compacted2, expected2) // test color as well geometry2.color = [1, 2, 3, 4] const compacted3 = toCompactBinary(geometry2) const expected3 = new Float32Array([ 0, // type flag 1, 0, 0, 0, // transforms 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 3, 4, // color 10, 10, -10, -10, // sides -10, -10, 10, -10, 10, -10, 10, 10, 5, -5, 6, -4, 6, -5, 5, -5, 6, -4, 6, -5 ]) t.deepEqual(compacted3, expected3) }) test('fromCompactBinary: convert a compact form into a geom2', (t) => { const compacted1 = [ 0, // type flag 1, 0, 0, 0, // transforms 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -1, -1, -1, -1 // color ] const expected1 = create() const geometry1 = fromCompactBinary(compacted1) t.deepEqual(geometry1, expected1) // geometry with a hole const compacted2 = [ 0, // type flag 1, 0, 0, 0, // transforms 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -1, -1, -1, -1, // color 10, 10, -10, -10, // sides -10, -10, 10, -10, 10, -10, 10, 10, 5, -5, 6, -4, 6, -5, 5, -5, 6, -4, 6, -5 ] const expected2 = create([ [[10, 10], [-10, -10]], [[-10, -10], [10, -10]], [[10, -10], [10, 10]], [[5, -5], [6, -4]], [[6, -5], [5, -5]], [[6, -4], [6, -5]] ]) const geometry2 = fromCompactBinary(compacted2) t.deepEqual(geometry2, expected2) // test color as well const compacted3 = [ 0, // type flag 1, 0, 0, 0, // transforms 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 4, 5, 6, 7, // color 10, 10, -10, -10, // sides -10, -10, 10, -10, 10, -10, 10, 10, 5, -5, 6, -4, 6, -5, 5, -5, 6, -4, 6, -5 ] expected2.color = [4, 5, 6, 7] const geometry3 = fromCompactBinary(compacted3) t.deepEqual(geometry3, expected2) })