@jwc/jscad-test-utils v2.0.0

jscad-test-utils
This packages has two utilities to help testing JsCad objects using image snapshots with AVA.
csgReglRenderer
Based on @jscad-regl-rendere the csgReglRenderer provides an easy way to generate a png file from a CSG object.
var sphere = CSG.sphere({
center: [0, 0, 0],
radius: 2, // must be scalar
resolution: 128
});
if (fs.existsSync("test.png")) fs.unlinkSync("test.png");
csgReglRenderer(sphere, "test.png");API
Functions
Typedefs
csgImageSnapshot(testpathname, title, data, options) ⇒ Promise
Image testing with a snapshot image for CSG objects. Uses looks-same
to comare the images. If there is a differnece,
the new temp.png file anda diff.png file are created.
Kind: global function
Returns: Promise - A promise that resolves true if the rendered images matches the snapshot, false if there is a difference.
| Param | Type | Default | Description |
|---|---|---|---|
| testpathname | string | The test path name to. | |
| title | string | The title of the test. | |
| data | CSG | CSG data to render | |
| options | object | Options to pass to the ReglRenderer. | |
| options.camera | object | Options to pass to the ReglRenderer camera. | |
| options.camera.position | Array.<number> | 50, -50, 50 | The position of the camera while rendering. |
| options.gl | object | Options to pass to the ReglRenderer glRenderer. | |
| options.gl.width | number | 1024 | The width of the rendered image. |
| options.gl.height | number | 768 | The height of the rendered image. |
Example
In the test, create a CSG object then call csgImageSnapshot with
the test object and the CSG data.
Creates a snapshot of the sphere.

test('create a sphere', async t => {
var sphere2 = CSG.sphere({
center: [0, 0, 0],
radius: 11, // must be scalar
resolution: 128
});
var result = await csgImageSnapshot(t, sphere2);
t.false(result);
}If the test fails, a diff.png file is created showing the differneces.
csgReglRenderer(data, filename, options)
Renders a JsCad CSG data object into a png file
Kind: global function
| Param | Type | Default | Description |
|---|---|---|---|
| data | CSG | A JsCad CSG object. | |
| filename | String | The filename to render the png image. | |
| options | object | Options to pass to the ReglRenderer. | |
| options.camera | object | Options to pass to the ReglRenderer camera. | |
| options.camera.position | Array.<number> | 50, -50, 50 | The position of the camera while rendering. |
| options.gl | object | Options to pass to the ReglRenderer glRenderer. | |
| options.gl.width | number | 1024 | The width of the rendered image. |
| options.gl.height | number | 768 | The height of the rendered image. |
Example
Render a CSG sphere to the file test.png.
var sphere = CSG.sphere({
center: [0, 0, 0],
radius: 2, // must be scalar
resolution: 128
});
if (fs.existsSync("test.png")) fs.unlinkSync("test.png");
csgReglRenderer(sphere, "test.png");glRenderOptions
GL render options
Kind: global typedef
| Param | Type | Description |
|---|---|---|
| width | number | The width of the rendered image (default 1024). |
| height | number | The height of the rendered image (default 768). |
cameraRenderOptions
Camera render options
Kind: global typedef
| Param | Type | Description |
|---|---|---|
| position | Array | The position of the camera while rendering (default 50, -50, 50). |
RenderOptions
Options for the csgReglRenderer
Kind: global typedef
| Param | Type |
|---|---|
| camera | cameraRenderOptions |
| gl | glRenderOptions |