1package chroma
2
3import (
4	"testing"
5
6	"github.com/alecthomas/assert"
7)
8
9func TestColourRGB(t *testing.T) {
10	colour := ParseColour("#8913af")
11	assert.Equal(t, uint8(0x89), colour.Red())
12	assert.Equal(t, uint8(0x13), colour.Green())
13	assert.Equal(t, uint8(0xaf), colour.Blue())
14}
15
16func TestColourString(t *testing.T) {
17	assert.Equal(t, "#8913af", ParseColour("#8913af").String())
18}
19
20func distance(a, b uint8) uint8 {
21	if a < b {
22		return b - a
23	}
24	return a - b
25}
26
27func TestColourBrighten(t *testing.T) {
28	actual := NewColour(128, 128, 128).Brighten(0.5)
29	// Closeish to what we expect is fine.
30	assert.True(t, distance(192, actual.Red()) <= 2)
31	assert.True(t, distance(192, actual.Blue()) <= 2)
32	assert.True(t, distance(192, actual.Green()) <= 2)
33	actual = NewColour(128, 128, 128).Brighten(-0.5)
34	assert.True(t, distance(65, actual.Red()) <= 2)
35	assert.True(t, distance(65, actual.Blue()) <= 2)
36	assert.True(t, distance(65, actual.Green()) <= 2)
37}
38
39func TestColourBrightess(t *testing.T) {
40	actual := NewColour(128, 128, 128).Brightness()
41	assert.True(t, distance(128, uint8(actual*255.0)) <= 2)
42}
43