Files

46 lines
1001 B
Go

package screenshot
import (
"encoding/binary"
"testing"
)
func newTenBitBuffer(t *testing.T, format PixelFormat, v uint32) *ShmBuffer {
t.Helper()
buf, err := CreateShmBuffer(1, 1, 4)
if err != nil {
t.Fatal(err)
}
t.Cleanup(func() { buf.Close() })
buf.Format = format
binary.LittleEndian.PutUint32(buf.Data(), v)
return buf
}
func TestBufferToImageWithFormat10Bit(t *testing.T) {
const r10, g10, b10 = uint32(1023), uint32(512), uint32(0)
cases := []struct {
name string
format PixelFormat
v uint32
}{
{"XRGB2101010", FormatXRGB2101010, r10<<20 | g10<<10 | b10},
{"XBGR2101010", FormatXBGR2101010, b10<<20 | g10<<10 | r10},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
buf := newTenBitBuffer(t, tc.format, tc.v)
img := BufferToImageWithFormat(buf, uint32(tc.format))
want := [4]uint8{255, 128, 0, 255}
var got [4]uint8
copy(got[:], img.Pix)
if got != want {
t.Errorf("pixel = %v, want %v", got, want)
}
})
}
}