UNPKG

@jscad/regl-renderer

Version:

Renderer for JSCAD Geometries

66 lines (57 loc) 1.78 kB
const test = require('ava') const geom2ToGeometries = require('./geom2ToGeometries') const defaultTransforms = Float32Array.from([ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ]) test('geom2ToGeometries (empty solid)', (t) => { const solid = { sides: [] } const expected = [] let geometries = geom2ToGeometries({ color: [1, 2, 3, 4] }, solid) t.deepEqual(geometries, expected) // with color solid.color = [4, 3, 2, 1] geometries = geom2ToGeometries({ color: [1, 2, 3, 4] }, solid) t.deepEqual(geometries, expected) // with transforms solid.transforms = [ 5, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2 ] geometries = geom2ToGeometries({ color: [1, 2, 3, 4] }, solid) t.deepEqual(geometries, expected) }) test('geom2ToGeometries (solid with sides)', (t) => { const solid = { sides: [[[0, 0], [1, 0]], [[1, 0], [1, 1]], [[1, 1], [0, 0]]] } const expected = [{ color: [1, 2, 3, 0.8], colors: [], indices: [0, 1, 2, 3, 4, 5], normals: [[0, 0, -1], [0, 0, -1], [0, 0, -1], [0, 0, -1], [0, 0, -1], [0, 0, -1]], positions: [[0, 0, 0], [1, 0, 0], [1, 0, 0], [1, 1, 0], [1, 1, 0], [0, 0, 0]], transforms: defaultTransforms, isTransparent: true, type: '2d' }] const geometries = geom2ToGeometries({ color: [1, 2, 3, 0.8] }, solid) t.deepEqual(geometries, expected) }) test('geom2ToGeometries (solid with > 65000 sides)', (t) => { const solid = { sides: [] } for (let i = 0; i < 70000; i++) { solid.sides.push([[i, i], [i + 1, i + 1]]) } const start = solid.sides[0] const end = solid.sides[solid.sides.length - 1] solid.sides.push([end[1], start[0]]) const geometries = geom2ToGeometries({ color: [1, 2, 3, 0.8] }, solid) t.is(geometries.length, 3) })