UNPKG

hue-hacking-node

Version:

Utility to control Philips Hue light bulbs

67 lines 3.17 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); var ava_1 = require("ava"); var hue_colors_js_1 = require("./hue-colors.js"); var hue_interfaces_js_1 = require("./hue-interfaces.js"); var colors = new hue_colors_js_1.HueColors(); var hexRGBRed = 'ff6c22'; var cieRGBRed = { x: 0.6484272236872118, y: 0.330856101472778 }; var hexRGBGreen = 'fffe50'; var cieRGBGreen = { x: 0.4091, y: 0.518 }; var hexRGBBlue = '3639ff'; var cieRGBBlue = { x: 0.167, y: 0.04 }; var cieRGBWhite = { x: 0.3, y: 0.3 }; var coordinateEpsilon = 1e-1; // fairly loose definition of equality /** * Check equality with an epsilon window value for floating point friendliness. * @param actual Output value from some routine * @param expected Value that is reasonable to have expected from said routine */ function closeEnoughForGovernmentWork(actual, expected) { var dX = Math.abs(actual.x) - Math.abs(expected.x), dY = Math.abs(actual.y) - Math.abs(expected.y); return dX <= coordinateEpsilon && dY <= coordinateEpsilon; } (0, ava_1.default)('known parameter returns known coordinates (full red)', function (t) { t.is(colors.CIE1931ToHex(cieRGBRed), hexRGBRed); }); (0, ava_1.default)('known parameter returns known coordinates (full green)', function (t) { t.is(colors.CIE1931ToHex(cieRGBGreen), hexRGBGreen); }); (0, ava_1.default)('known parameter returns known coordinates (full blue with brightness)', function (t) { t.is(colors.CIE1931ToHex(cieRGBBlue, 1), hexRGBBlue); }); (0, ava_1.default)('getCIEColor full blue', function (t) { t.true(closeEnoughForGovernmentWork(colors.getCIEColor(hue_colors_js_1.hexFullBlue), cieRGBBlue)); t.true(closeEnoughForGovernmentWork(colors.getCIEColor('0000f'), cieRGBBlue)); }); (0, ava_1.default)('getCIEColor white', function (t) { t.true(closeEnoughForGovernmentWork(colors.getCIEColor(hue_colors_js_1.hexFullWhite), cieRGBWhite)); }); (0, ava_1.default)('getCIEColor random values', function (t) { t.truthy(colors.getCIEColor()); }); (0, ava_1.default)('CIE1931ToRGB', function (t) { var rgb = new (hue_interfaces_js_1.RGB.bind.apply(hue_interfaces_js_1.RGB, __spreadArray([void 0], [167, 167, 255], false)))(); var xyPoint = new (hue_interfaces_js_1.XYPoint.bind.apply(hue_interfaces_js_1.XYPoint, __spreadArray([void 0], [0.22, 0.22], false)))(); t.deepEqual(colors.CIE1931ToRGB(xyPoint), rgb); }); (0, ava_1.default)('miredToKelvin', function (t) { var mired = 0.2; var expectedOutcome = 1e6 / mired; t.is(colors.miredToKelvin(mired), expectedOutcome); }); (0, ava_1.default)('kelvinToMired', function (t) { var kelvin = 3500; var expectedOutcome = 1e6 / kelvin; t.is(colors.kelvinToMired(kelvin), expectedOutcome); }); //# sourceMappingURL=hue-colors.spec.js.map