This repository has been archived on 2023-03-25. You can view files and clone it, but cannot push or open issues or pull requests.
mightyscape-1.1-deprecated/extensions/fablabchemnitz/papercraft/openjscad/node_modules/@jscad/scad-api/src/color.test.js

179 lines
5.2 KiB
JavaScript

const test = require('ava')
const { cube, sphere, cylinder } = require('./primitives3d')
const { square, circle } = require('./primitives2d')
const { color, rgb2hsl, hsl2rgb, rgb2hsv, hsv2rgb, html2rgb, rgb2html, css2rgb } = require('./color')
test('css2rgb', t => {
const c1 = css2rgb('black')
const e1 = [0 / 255, 0 / 255, 0 / 255]
t.deepEqual(c1, e1)
const c2 = css2rgb('yellowgreen')
const e2 = [154 / 255, 205 / 255, 50 / 255]
t.deepEqual(c2, e2)
const c3 = css2rgb('jscad')
})
test('rgb2hsl', t => {
const obs = rgb2hsl(1, 0, 0)
const expColor = [0, 1, 0.5]
t.deepEqual(obs, expColor)
})
test('hsl2rgb', t => {
const obs = hsl2rgb(0, 1, 0)
const expColor = [0, 0, 0]
t.deepEqual(obs, expColor)
})
test('rgb2hsv', t => {
const obs = rgb2hsv(1, 0, 0.5)
const expColor = [0.9166666666666666, 1, 1]
t.deepEqual(obs, expColor)
})
test('hsv2rgb', t => {
const obs = hsv2rgb(0, 0.2, 0)
const expColor = [0, 0, 0]
t.deepEqual(obs, expColor)
})
test('html2rgb', t => {
const obs = html2rgb('#000000')
const expColor = [0, 0, 0]
t.deepEqual(obs, expColor)
})
test('rgb2html', t => {
const html = rgb2html(1, 0, 0.5)
const expHtml = '#ff007f'
t.deepEqual(html, expHtml)
})
test('color (rgb, on 3d objects)', t => {
const obs = color([1, 0, 0], cube(), sphere())
const expColor = { color: [ 1, 0, 0, 1 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
})
test.failing('color (rgb, on 2d objects)', t => {
const obs = color([1, 0, 0], square(), circle())
const expColor = { color: [ 1, 0, 0, 1 ] }
t.deepEqual(obs.sides[0].shared, expColor)
t.deepEqual(obs.sides[obs.sides.length - 1].shared, expColor)
})
test('color (rgba, on 3d objects)', t => {
const obs = color([1, 0, 0, 0.5], cube(), sphere())
const expColor = { color: [ 1, 0, 0, 0.5 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
})
test.failing('color (rgba, on 2d objects)', t => {
const obs = color([1, 0, 0, 0.5], square(), circle())
const expColor = { color: [ 1, 0, 0, 0.5 ] }
t.deepEqual(obs.sides[0].shared, expColor)
t.deepEqual(obs.sides[obs.sides.length - 1].shared, expColor)
})
test('color (rgba, on array of 3D objects)', t => {
const obs = color([1, 0, 0, 0.5], [cube(), sphere()])
const expColor = { color: [ 1, 0, 0, 0.5 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
})
test.failing('color (rgba, on array of 2d objects)', t => {
const obs = color([1, 0, 0, 0.5], [square(), circle()])
const expColor = { color: [ 1, 0, 0, 0.5 ] }
t.deepEqual(obs.sides[0].shared, expColor)
t.deepEqual(obs.sides[obs.sides.length - 1].shared, expColor)
})
test('color (by name, on 3d objects)', t => {
var obs = color('red', cube())
var expColor = { color: [ 1, 0, 0, 1 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
obs = color('green', cube(), sphere())
expColor = { color: [ 0, 128 / 255, 0, 1 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
obs = color('blue', cube(), sphere(), cylinder())
expColor = { color: [ 0, 0, 1, 1 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
})
test.failing('color (by name, on 2d objects)', t => {
const obs = color('red', square(), circle())
const expColor = { color: [ 1, 0, 0, 1 ] }
t.deepEqual(obs.sides[0].shared, expColor)
t.deepEqual(obs.sides[obs.sides.length - 1].shared, expColor)
})
test('color (by name and alpha, on 3d objects)', t => {
var obs = color('red', 0.5, cube())
var expColor = { color: [ 1, 0, 0, 0.5 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
obs = color('green', 0.8, cube(), sphere())
expColor = { color: [ 0, 128 / 255, 0, 0.8 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
obs = color('blue', 0.2, cube(), sphere(), cylinder())
expColor = { color: [ 0, 0, 1, 0.2 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
})
test.failing('color (by name and alpha, on 2d objects)', t => {
const obs = color('red', 0.1, square(), circle())
const expColor = { color: [ 1, 0, 0, 0.5 ] }
t.deepEqual(obs.sides[0].shared, expColor)
t.deepEqual(obs.sides[obs.sides.length - 1].shared, expColor)
})
test('color (by name and alpha, on array of 3d objects)', t => {
const obs = color('red', 0.7, [cube(), sphere()])
const expColor = { color: [ 1, 0, 0, 0.7 ] }
t.deepEqual(obs.polygons[0].shared, expColor)
t.deepEqual(obs.polygons[obs.polygons.length - 1].shared, expColor)
})
test.failing('color (by name and alpha, on array of 2d objects)', t => {
const obs = color('red', 0.5, [square(), circle()])
const expColor = { color: [ 1, 0, 0, 0.5 ] }
t.deepEqual(obs.sides[0].shared, expColor)
t.deepEqual(obs.sides[obs.sides.length - 1].shared, expColor)
})