rgba_test.go raw
1 // SPDX-License-Identifier: Unlicense OR MIT
2
3 package f32color
4
5 import (
6 "image/color"
7 "testing"
8 )
9
10 func TestNRGBAToLinearRGBA_Boundary(t *testing.T) {
11 for col := 0; col <= 0xFF; col++ {
12 for alpha := 0; alpha <= 0xFF; alpha++ {
13 in := color.NRGBA{R: uint8(col), A: uint8(alpha)}
14 premul := NRGBAToLinearRGBA(in)
15 if premul.A != uint8(alpha) {
16 t.Errorf("%v: got %v expected %v", in, premul.A, alpha)
17 }
18 if premul.R > premul.A {
19 t.Errorf("%v: R=%v > A=%v", in, premul.R, premul.A)
20 }
21 }
22 }
23 }
24
25 func TestLinearToRGBARoundtrip(t *testing.T) {
26 for col := 0; col <= 0xFF; col++ {
27 for alpha := 0; alpha <= 0xFF; alpha++ {
28 want := color.NRGBA{R: uint8(col), A: uint8(alpha)}
29 if alpha == 0 {
30 want.R = 0
31 }
32 got := LinearFromSRGB(want).SRGB()
33 if want != got {
34 t.Errorf("got %v expected %v", got, want)
35 }
36 }
37 }
38 }
39