From b2aebdbc2d5c9096f4ce096dda514c7f988585ab Mon Sep 17 00:00:00 2001 From: mazznoer <56464409+mazznoer@users.noreply.github.com> Date: Wed, 29 Jul 2020 20:00:45 +0700 Subject: [PATCH] Testing (#16) * Create gradset_test.go * Create gradx_test.go * Update gradx_test.go * Update gradx_test.go * Update grad_test.go * Update grad_test.go * Update gradx_test.go * Create gradfn_test.go * Update gradset_test.go --- grad_test.go | 78 ++++++++++++++++++++++++++++++++++++++++++++++++- gradfn_test.go | 23 +++++++++++++++ gradset_test.go | 36 +++++++++++++++++++++++ gradx_test.go | 35 ++++++++++++++++++++++ 4 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 gradfn_test.go create mode 100644 gradset_test.go create mode 100644 gradx_test.go diff --git a/grad_test.go b/grad_test.go index 8fcfc6b..a6b91be 100644 --- a/grad_test.go +++ b/grad_test.go @@ -6,7 +6,83 @@ import ( "testing" ) -func TestBasic(t *testing.T) { +func TestBasic1(t *testing.T) { + // Single color + grad, err := NewGradient(). + Colors(color.RGBA{0, 255, 0, 255}). + Build() + testStr(t, grad.At(0).Hex(), "#00ff00") + testStr(t, grad.At(1).Hex(), "#00ff00") + + // Domain's length != colors's length + grad, err = NewGradient(). + HexColors("#777", "#fff", "#ccc"). + Domain(0, 1). + Build() + if err == nil { + t.Errorf("It should error") + } + if grad != nil { + t.Errorf("grad should nil") + } + + // Wrong domain + grad, err = NewGradient(). + HexColors("#777", "#fff", "#ccc", "#222"). + Domain(0, 0.71, 0.70, 1). + Build() + if err == nil { + t.Errorf("It should error") + } + if grad != nil { + t.Errorf("grad should nil") + } + + // Invalid hex color + grad, err = NewGradient(). + HexColors("#ffg", "#333", "#bbb"). + Build() + testStr(t, grad.At(0).Hex(), "#333333") + testStr(t, grad.At(1).Hex(), "#bbbbbb") + + // Blend mode + grad, err = NewGradient(). + HexColors("#333", "#bbb"). + Mode(HCL). + Build() + testStr(t, grad.At(0).Hex(), "#333333") + testStr(t, grad.At(1).Hex(), "#bbbbbb") + + grad, err = NewGradient(). + HexColors("#333", "#bbb"). + Mode(HSV). + Build() + testStr(t, grad.At(0).Hex(), "#333333") + testStr(t, grad.At(1).Hex(), "#bbbbbb") + + grad, err = NewGradient(). + HexColors("#333", "#bbb"). + Mode(LAB). + Build() + testStr(t, grad.At(0).Hex(), "#333333") + testStr(t, grad.At(1).Hex(), "#bbbbbb") + + grad, err = NewGradient(). + HexColors("#333", "#bbb"). + Mode(LRGB). + Build() + testStr(t, grad.At(0).Hex(), "#333333") + testStr(t, grad.At(1).Hex(), "#bbbbbb") + + grad, err = NewGradient(). + HexColors("#333", "#bbb"). + Mode(LUV). + Build() + testStr(t, grad.At(0).Hex(), "#333333") + testStr(t, grad.At(1).Hex(), "#bbbbbb") +} + +func TestBasic2(t *testing.T) { grad, _ := NewGradient().Build() colors := grad.Colors(2) diff --git a/gradfn_test.go b/gradfn_test.go new file mode 100644 index 0000000..817c1ec --- /dev/null +++ b/gradfn_test.go @@ -0,0 +1,23 @@ +package colorgrad + +import ( + "testing" +) + +func TestFn(t *testing.T) { + testFn(t, Cividis()) + testFn(t, Sinebow()) + testFn(t, Turbo()) + + testFn(t, CubehelixDefault()) + testFn(t, Cool()) + testFn(t, Warm()) + testFn(t, Rainbow()) +} + +func testFn(t *testing.T, grad Gradient) { + n := len(grad.Colors(9)) + if n != 9 { + t.Errorf("Expected 9, got %v", n) + } +} diff --git a/gradset_test.go b/gradset_test.go new file mode 100644 index 0000000..d0779ef --- /dev/null +++ b/gradset_test.go @@ -0,0 +1,36 @@ +package colorgrad + +import ( + "testing" +) + +func TestPreset(t *testing.T) { + testGrad(t, Inferno(), "#000004", "#fcffa4") + testGrad(t, Magma(), "#000004", "#fcfdbf") + testGrad(t, Plasma(), "#0d0887", "#f0f921") + testGrad(t, Spectral(), "#9e0142", "#5e4fa2") + testGrad(t, Viridis(), "#440154", "#fee825") + + testGrad(t, Blues(), "#f7fbff", "#08306b") + testGrad(t, Greens(), "#f7fcf5", "#00441b") + testGrad(t, Greys(), "#ffffff", "#000000") + testGrad(t, Oranges(), "#fff5eb", "#7f2704") + testGrad(t, Purples(), "#fcfbfd", "#3f007d") + testGrad(t, Reds(), "#fff5f0", "#67000d") +} + +func testGrad(t *testing.T, grad Gradient, start, end string) { + if grad == nil { + t.Errorf("Grad is nil") + } + + a := grad.At(0).Hex() + if a != start { + t.Errorf("Expected %v, got %v", start, a) + } + + b := grad.At(1).Hex() + if b != end { + t.Errorf("Expected %v, got %v", end, b) + } +} diff --git a/gradx_test.go b/gradx_test.go new file mode 100644 index 0000000..ffe22ca --- /dev/null +++ b/gradx_test.go @@ -0,0 +1,35 @@ +package colorgrad + +import ( + "image/color" + "math" + "testing" +) + +func TestX(t *testing.T) { + grad, _ := NewGradient().Build() + grad2 := Classes(grad, 7) + testStr(t, grad2.At(0).Hex(), "#000000") + testStr(t, grad2.At(1).Hex(), "#ffffff") + + testStr(t, grad2.At(math.NaN()).Hex(), "#000000") + testStr(t, grad2.At(-0.01).Hex(), "#000000") + testStr(t, grad2.At(1.01).Hex(), "#ffffff") + + colors := grad2.Colors(7) + if len(colors) != 7 { + t.Errorf("Expected 7, got %v", len(colors)) + } + testStr(t, colors[0].Hex(), "#000000") + testStr(t, colors[6].Hex(), "#ffffff") + + colors1 := grad.Colors(5) // []colorful.Color + colors2 := IntoColors(colors1) // []color.Color + + for i, c2 := range colors2 { + var c1 color.Color = colors1[i] + if c1 != c2 { + t.Errorf("%v != %v", c1, c2) + } + } +}