102 lines
2.4 KiB
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)
|
|
}
|
|
})
|
|
}
|
|
}
|