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