tests: display: cfb: added tests for draw_circle API
Added tests for the newly added cfb_draw_circle API. Signed-off-by: Yishai Jaffe <yishai1999@gmail.com>
This commit is contained in:
parent
077ba1078b
commit
40123c6775
@ -14,6 +14,7 @@ if(CONFIG_TEST_MSB_FIRST_FONT)
|
||||
src/draw_point.c
|
||||
src/draw_line.c
|
||||
src/draw_rect.c
|
||||
src/draw_circle.c
|
||||
src/draw_text_rectspace1016.c
|
||||
src/invert.c
|
||||
src/invert_area.c
|
||||
@ -26,6 +27,7 @@ else()
|
||||
src/draw_point.c
|
||||
src/draw_line.c
|
||||
src/draw_rect.c
|
||||
src/draw_circle.c
|
||||
src/draw_text_rectspace1016.c
|
||||
src/invert.c
|
||||
src/invert_area.c
|
||||
|
||||
155
tests/subsys/display/cfb/basic/src/draw_circle.c
Normal file
155
tests/subsys/display/cfb/basic/src/draw_circle.c
Normal file
@ -0,0 +1,155 @@
|
||||
/*
|
||||
* Copyright (c) 2024 TOKITA Hiroshi
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr/drivers/display.h>
|
||||
#include <zephyr/ztest.h>
|
||||
#include <zephyr/device.h>
|
||||
#include <zephyr/logging/log.h>
|
||||
#include <zephyr/display/cfb.h>
|
||||
|
||||
#include "testdata.h"
|
||||
#include "utils.h"
|
||||
|
||||
LOG_MODULE_REGISTER(draw_circle, CONFIG_DISPLAY_LOG_LEVEL);
|
||||
|
||||
static const struct device *dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_display));
|
||||
static const uint32_t display_width = DT_PROP(DT_CHOSEN(zephyr_display), width);
|
||||
static const uint32_t display_height = DT_PROP(DT_CHOSEN(zephyr_display), height);
|
||||
|
||||
/**
|
||||
* Fill the buffer with 0 before running tests.
|
||||
*/
|
||||
static void cfb_test_before(void *text_fixture)
|
||||
{
|
||||
struct display_buffer_descriptor desc = {
|
||||
.height = display_height,
|
||||
.pitch = display_width,
|
||||
.width = display_width,
|
||||
.buf_size = display_height * display_width / 8,
|
||||
};
|
||||
|
||||
memset(read_buffer, 0, sizeof(read_buffer));
|
||||
zassert_ok(display_write(dev, 0, 0, &desc, read_buffer));
|
||||
|
||||
zassert_ok(display_blanking_off(dev));
|
||||
|
||||
zassert_ok(cfb_framebuffer_init(dev));
|
||||
}
|
||||
|
||||
static void cfb_test_after(void *test_fixture)
|
||||
{
|
||||
cfb_framebuffer_deinit(dev);
|
||||
}
|
||||
|
||||
/*
|
||||
* normal rendering
|
||||
*/
|
||||
ZTEST(draw_circle, test_draw_circle_10_at_0_0)
|
||||
{
|
||||
struct cfb_position center = {0, 0};
|
||||
uint16_t radius = 10;
|
||||
|
||||
zassert_ok(cfb_draw_circle(dev, ¢er, radius), "");
|
||||
zassert_ok(cfb_framebuffer_finalize(dev), "");
|
||||
|
||||
zassert_true(verify_image(0, 0, circle10, 20, 20), "");
|
||||
}
|
||||
|
||||
ZTEST(draw_circle, test_draw_circle_10_at_1_1)
|
||||
{
|
||||
struct cfb_position center = {1, 1};
|
||||
uint16_t radius = 10;
|
||||
|
||||
zassert_ok(cfb_draw_circle(dev, ¢er, radius), "");
|
||||
zassert_ok(cfb_framebuffer_finalize(dev), "");
|
||||
|
||||
zassert_true(verify_image(1, 1, circle10, 20, 20), "");
|
||||
}
|
||||
|
||||
/* tile border case */
|
||||
ZTEST(draw_circle, test_draw_circle_10_at_9_15)
|
||||
{
|
||||
struct cfb_position center = {9, 15};
|
||||
uint16_t radius = 10;
|
||||
|
||||
zassert_ok(cfb_draw_circle(dev, ¢er, radius), "");
|
||||
zassert_ok(cfb_framebuffer_finalize(dev), "");
|
||||
|
||||
zassert_true(verify_image(9, 15, circle10, 20, 20), "");
|
||||
}
|
||||
|
||||
ZTEST(draw_circle, test_draw_circle_10_at_10_16)
|
||||
{
|
||||
struct cfb_position center = {10, 16};
|
||||
uint16_t radius = 10;
|
||||
|
||||
zassert_ok(cfb_draw_circle(dev, ¢er, radius), "");
|
||||
zassert_ok(cfb_framebuffer_finalize(dev), "");
|
||||
|
||||
zassert_true(verify_image(10, 16, circle10, 20, 20), "");
|
||||
}
|
||||
|
||||
ZTEST(draw_circle, test_draw_circle_10_at_11_17)
|
||||
{
|
||||
struct cfb_position center = {11, 17};
|
||||
uint16_t radius = 10;
|
||||
|
||||
zassert_ok(cfb_draw_circle(dev, ¢er, radius), "");
|
||||
zassert_ok(cfb_framebuffer_finalize(dev), "");
|
||||
|
||||
zassert_true(verify_image(11, 17, circle10, 20, 20), "");
|
||||
}
|
||||
|
||||
/*
|
||||
* Case of including coordinates outside the area
|
||||
*/
|
||||
ZTEST(draw_circle, test_draw_circle_10_outside_top_left)
|
||||
{
|
||||
struct cfb_position center = {-(20 - 3), -(20 - 4)};
|
||||
uint16_t radius = 10;
|
||||
|
||||
zassert_ok(cfb_draw_circle(dev, ¢er, radius), "");
|
||||
zassert_ok(cfb_framebuffer_finalize(dev), "");
|
||||
|
||||
zassert_true(verify_image(0, 0, outside_top_left, 3, 4), "");
|
||||
}
|
||||
|
||||
ZTEST(draw_circle, test_draw_circle_10_outside_top_right)
|
||||
{
|
||||
struct cfb_position center = {display_width - 5, -(20 - 8)};
|
||||
uint16_t radius = 10;
|
||||
|
||||
zassert_ok(cfb_draw_circle(dev, ¢er, radius), "");
|
||||
zassert_ok(cfb_framebuffer_finalize(dev), "");
|
||||
|
||||
zassert_true(verify_image(display_width - 5, 0, outside_top_right, 5, 8), "");
|
||||
}
|
||||
|
||||
ZTEST(draw_circle, test_draw_circle_10_outside_bottom_right)
|
||||
{
|
||||
struct cfb_position center = {display_width - 3, display_height - 5};
|
||||
uint16_t radius = 10;
|
||||
|
||||
zassert_ok(cfb_draw_circle(dev, ¢er, radius), "");
|
||||
zassert_ok(cfb_framebuffer_finalize(dev), "");
|
||||
|
||||
zassert_true(
|
||||
verify_image(display_width - 3, display_height - 5, outside_bottom_right, 3, 5),
|
||||
"");
|
||||
}
|
||||
|
||||
ZTEST(draw_circle, test_draw_circle_10_outside_bottom_left)
|
||||
{
|
||||
struct cfb_position center = {-(20 - 3), display_height - 14};
|
||||
uint16_t radius = 10;
|
||||
|
||||
zassert_ok(cfb_draw_circle(dev, ¢er, radius), "");
|
||||
zassert_ok(cfb_framebuffer_finalize(dev), "");
|
||||
|
||||
zassert_true(verify_image(0, display_height - 14, outside_bottom_left, 3, 14), "");
|
||||
}
|
||||
|
||||
ZTEST_SUITE(draw_circle, NULL, NULL, cfb_test_before, cfb_test_after, NULL);
|
||||
@ -677,6 +677,67 @@ uint32_t rectspace1123[] = {
|
||||
0xffffffff,
|
||||
};
|
||||
|
||||
uint32_t circle10[] = {
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xff000000U, 0xff000000U, 0xff000000U, 0xff000000U, 0xff000000U, 0xff000000U,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U, 0xff000000U, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xff000000U, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xff000000U, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU, 0xffffffffU, 0xff000000U, 0xff000000U, 0xffffffffU, 0xffffffffU, 0xffffffffU,
|
||||
0xffffffffU,
|
||||
};
|
||||
|
||||
#ifdef MAIN
|
||||
|
||||
#include <stdio.h>
|
||||
@ -719,6 +780,7 @@ int main(int argc, char *argv[])
|
||||
to_ppm("outside_top_right.ppm", outside_top_right, 5, 8);
|
||||
to_ppm("rectspace1016.ppm", rectspace1016, 10, 16);
|
||||
to_ppm("rectspace1123.ppm", rectspace1123, 11, 23);
|
||||
to_ppm("circle10.ppm", circle10, 20, 20);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -19,5 +19,6 @@ extern uint32_t outside_top_left[];
|
||||
extern uint32_t outside_top_right[];
|
||||
extern uint32_t rectspace1016[];
|
||||
extern uint32_t rectspace1123[];
|
||||
extern uint32_t circle10[];
|
||||
|
||||
#endif /* TESTS_SUBSYS_DISPLAY_CFB_DRAW_TEXT_AND_PRINT_SRC_TESTDATA_H__ */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user