test: pixels: Add a unit test for pixel32_to_cpixel

pull/63/head
Andri Yngvason 2022-02-12 12:01:00 +00:00
parent 1f043d6992
commit 4dcf8ec25b
1 changed files with 39 additions and 1 deletions

View File

@ -1,4 +1,5 @@
#include "pixels.h" #include "pixels.h"
#include "rfb-proto.h"
#include <stdio.h> #include <stdio.h>
#include <stdint.h> #include <stdint.h>
@ -21,6 +22,42 @@
#define UDIV_UP(a, b) (((a) + (b) - 1) / (b)) #define UDIV_UP(a, b) (((a) + (b) - 1) / (b))
#define ARRAY_LEN(a) (sizeof(a) / (sizeof(a[0]))) #define ARRAY_LEN(a) (sizeof(a) / (sizeof(a[0])))
static bool test_pixel32_to_cpixel_4bpp(void)
{
uint32_t src = u32_le(0x11223344);
uint32_t dst;
struct rfb_pixel_format dstfmt = { 0 }, srcfmt = { 0 };
rfb_pixfmt_from_fourcc(&dstfmt, DRM_FORMAT_RGBA8888);
dst = 0;
rfb_pixfmt_from_fourcc(&srcfmt, DRM_FORMAT_RGBA8888);
pixel32_to_cpixel((uint8_t*)&dst, &dstfmt, &src, &srcfmt, 4, 1);
if ((src & 0xffffff00) != (dst & 0xffffff00))
return false;
dst = 0;
rfb_pixfmt_from_fourcc(&dstfmt, DRM_FORMAT_ABGR8888);
pixel32_to_cpixel((uint8_t*)&dst, &dstfmt, &src, &srcfmt, 4, 1);
if (dst != u32_le(0x00332211))
return false;
dst = 0;
rfb_pixfmt_from_fourcc(&dstfmt, DRM_FORMAT_ARGB8888);
pixel32_to_cpixel((uint8_t*)&dst, &dstfmt, &src, &srcfmt, 4, 1);
if (dst != u32_le(0x00112233))
return false;
dst = 0;
rfb_pixfmt_from_fourcc(&dstfmt, DRM_FORMAT_BGRA8888);
pixel32_to_cpixel((uint8_t*)&dst, &dstfmt, &src, &srcfmt, 4, 1);
if (dst != u32_le(0x33221100))
return false;
return true;
}
static bool test_fourcc_to_pixman_fmt(void) static bool test_fourcc_to_pixman_fmt(void)
{ {
pixman_format_code_t r; pixman_format_code_t r;
@ -95,7 +132,8 @@ static bool test_extract_alpha_mask_rgba8888(void)
int main() int main()
{ {
bool ok = test_fourcc_to_pixman_fmt() && bool ok = test_pixel32_to_cpixel_4bpp() &&
test_fourcc_to_pixman_fmt() &&
test_extract_alpha_mask_rgba8888(); test_extract_alpha_mask_rgba8888();
return ok ? 0 : 1; return ok ? 0 : 1;
} }