UNPKG

matisse

Version:

TypeScript library for mutable colour conversion and manipulation 🎨

128 lines • 4.63 kB
import Colour, { negate, rotate, grayscale, contrast, colourfulness, temperature, luminosity } from "../index"; var black; var white; var colour1; // TODO: not sure if this is best practice function RGB_to_XYZ(colour) { let X = -0.14282 * colour.red + 1.54924 * colour.green + -0.95641 * colour.blue; let Y = -0.32466 * colour.red + 1.57837 * colour.green + -0.73191 * colour.blue; let Z = -0.68202 * colour.red + 0.77073 * colour.green + 0.56332 * colour.blue; let x = X / (X + Y + Z); let y = Y / (X + Y + Z); return [x, y]; } beforeEach(() => { black = Colour.RGB(0, 0, 0); white = Colour.RGB(255, 255, 255); colour1 = Colour.RGB(153, 32, 68); }); test('black and white contrast', () => { expect(contrast(black, white)).toBe(21); expect(contrast(white, black)).toBe(21); }); test('colour1 and white contrast', () => { expect(contrast(colour1, white)).toBe(7.94); expect(contrast(white, colour1)).toBe(7.94); }); test('colour1 and black contrast', () => { expect(contrast(colour1, black)).toBe(2.64); expect(contrast(black, colour1)).toBe(2.64); }); test('contrast with same colour', () => { expect(contrast(white, white)).toBe(1.00); expect(contrast(black, black)).toBe(1.00); expect(contrast(colour1, colour1)).toBe(1.00); }); test('check negation with black', () => { let actual = negate(black); let expected = white; expect(actual.red).toBe(expected.red); expect(actual.green).toBe(expected.green); expect(actual.blue).toBe(expected.blue); expect(actual.alpha).toBe(expected.alpha); }); test('correct luminosity value', () => { let actual_black = luminosity(black); let actual_white = luminosity(white); let expected_black = 0; let expected_white = 1; expect(actual_black).toBe(expected_black); expect(actual_white).toBe(expected_white); }); test('grayscale of black', () => { let actual = grayscale(black); let expected = black; expect(actual.red).toBe(expected.red); expect(actual.green).toBe(expected.green); expect(actual.blue).toBe(expected.blue); expect(actual.alpha).toBe(expected.alpha); }); test('grayscale of white', () => { let actual = grayscale(white); let expected = white; expect(actual.red).toBe(expected.red); expect(actual.green).toBe(expected.green); expect(actual.blue).toBe(expected.blue); expect(actual.alpha).toBe(expected.alpha); }); test('grayscale of colour', () => { let actual = grayscale(colour1); let expected = Colour.RGB(72, 72, 72); expect(actual.red).toBe(expected.red); expect(actual.green).toBe(expected.green); expect(actual.blue).toBe(expected.blue); expect(actual.alpha).toBe(expected.alpha); }); test('temperature of black', () => { let [x, y] = RGB_to_XYZ(black); let n = (x - 0.3320) / (0.1858 - y); let actual = temperature(black); let expected = 449 * (n ** 3) + 3525 * (n ** 2) + 6823.3 * n + 5520.33; expect(actual).toBe(expected); }); test('temperature of white', () => { let [x, y] = RGB_to_XYZ(white); let n = (x - 0.3320) / (0.1858 - y); let actual = temperature(white); let expected = 449 * (n ** 3) + 3525 * (n ** 2) + 6823.3 * n + 5520.33; expect(actual).toBe(expected); }); test('temperature of colour', () => { let [x, y] = RGB_to_XYZ(colour1); let n = (x - 0.3320) / (0.1858 - y); let actual = temperature(colour1); let expected = 449 * (n ** 3) + 3525 * (n ** 2) + 6823.3 * n + 5520.33; expect(actual).toBe(expected); }); test('colourfulness of black', () => { let actual = colourfulness(black); let expected = 0; expect(actual).toBe(expected); }); test('colourfulness of white', () => { let actual = colourfulness(white); let expected = 0; expect(actual).toBe(expected); }); test('coloufulness of a colour', () => { let actual = colourfulness(colour1); let expected = 37.03663726636099; expect(actual).toBe(expected); }); test('rotate black 360deg', () => { let actual = rotate(black, 360); let expected = black; expect(actual.hue).toBe(expected.hue); expect(actual.saturationl).toBe(expected.saturationl); expect(actual.light).toBe(expected.light); expect(actual.alpha).toBe(expected.alpha); }); test('rotate black -180deg', () => { let actual = rotate(black, -180); let expected = Colour.HSL(184, 0, 0); expect(actual.hue).toBe(expected.hue); expect(actual.saturationl).toBe(expected.saturationl); expect(actual.light).toBe(expected.light); expect(actual.alpha).toBe(expected.alpha); }); //# sourceMappingURL=scientist.test.js.map