hue-hacking-node
Version:
Utility to control Philips Hue light bulbs
67 lines • 3.17 kB
JavaScript
;
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