go-opengl-pixel/compose_test.go

102 lines
2.4 KiB
Go

package pixel_test
import (
"reflect"
"testing"
"github.com/faiface/pixel"
)
func TestComposeMethod_Compose(t *testing.T) {
type args struct {
a pixel.RGBA
b pixel.RGBA
}
a := pixel.RGBA{R: 200, G: 200, B: 200, A: .8}
b := pixel.RGBA{R: 100, G: 100, B: 100, A: .5}
c := pixel.RGBA{R: 200, G: 200, B: 200, A: .5}
tests := []struct {
name string
cm pixel.ComposeMethod
args args
want pixel.RGBA
}{
{
name: "ComposeMethod.Compose: ComposeOver",
cm: pixel.ComposeOver,
args: args{a: a, b: b},
want: pixel.RGBA{R: 220, G: 220, B: 220, A: .9},
},
{
name: "ComposeMethod.Compose: ComposeIn",
cm: pixel.ComposeIn,
args: args{a: a, b: b},
want: pixel.RGBA{R: 100, G: 100, B: 100, A: .4},
},
{
name: "ComposeMethod.Compose: ComposeOut",
cm: pixel.ComposeOut,
args: args{a: a, b: b},
want: pixel.RGBA{R: 100, G: 100, B: 100, A: .4},
},
{
name: "ComposeMethod.Compose: ComposeAtop",
cm: pixel.ComposeAtop,
args: args{a: a, b: b},
want: pixel.RGBA{R: 120, G: 120, B: 120, A: .5},
},
{
name: "ComposeMethod.Compose: ComposeRover",
cm: pixel.ComposeRover,
args: args{a: a, b: b},
want: pixel.RGBA{R: 200, G: 200, B: 200, A: .9},
},
{
name: "ComposeMethod.Compose: ComposeRin",
cm: pixel.ComposeRin,
args: args{a: a, b: b},
want: pixel.RGBA{R: 80, G: 80, B: 80, A: .4},
},
{
name: "ComposeMethod.Compose: ComposeRout",
cm: pixel.ComposeRout,
// Using 'c' here to make the "want"ed RGBA rational
args: args{a: c, b: b},
want: pixel.RGBA{R: 50, G: 50, B: 50, A: .25},
},
{
name: "ComposeMethod.Compose: ComposeRatop",
cm: pixel.ComposeRatop,
args: args{a: a, b: b},
want: pixel.RGBA{R: 180, G: 180, B: 180, A: .8},
},
{
name: "ComposeMethod.Compose: ComposeXor",
cm: pixel.ComposeXor,
args: args{a: a, b: b},
want: pixel.RGBA{R: 120, G: 120, B: 120, A: .5},
},
{
name: "ComposeMethod.Compose: ComposePlus",
cm: pixel.ComposePlus,
args: args{a: a, b: b},
want: pixel.RGBA{R: 300, G: 300, B: 300, A: 1.3},
},
{
name: "ComposeMethod.Compose: ComposeCopy",
cm: pixel.ComposeCopy,
args: args{a: a, b: b},
want: pixel.RGBA{R: 200, G: 200, B: 200, A: .8},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := tt.cm.Compose(tt.args.a, tt.args.b); !reflect.DeepEqual(got, tt.want) {
t.Errorf("ComposeMethod.Compose() = %v, want %v", got, tt.want)
}
})
}
}