mirror of
https://github.com/lvgl/lvgl.git
synced 2024-11-24 02:03:53 +08:00
ci(win): add unit test (#3717)
This commit is contained in:
parent
059952607a
commit
d80e86711d
BIN
tests/ref_imgs/win_01.png
Normal file
BIN
tests/ref_imgs/win_01.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
tests/ref_imgs/win_02.png
Normal file
BIN
tests/ref_imgs/win_02.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
174
tests/src/test_cases/test_win.c
Normal file
174
tests/src/test_cases/test_win.c
Normal file
@ -0,0 +1,174 @@
|
||||
#if LV_BUILD_TEST
|
||||
#include "../lvgl.h"
|
||||
#include "unity/unity.h"
|
||||
|
||||
static lv_obj_t * active_screen = NULL;
|
||||
static lv_obj_t * win = NULL;
|
||||
static lv_obj_t * header = NULL;
|
||||
static lv_obj_t * content = NULL;
|
||||
|
||||
const char * dummy_text = "Hello LVGL!";
|
||||
|
||||
void setUp(void)
|
||||
{
|
||||
active_screen = lv_scr_act();
|
||||
}
|
||||
|
||||
void tearDown(void)
|
||||
{
|
||||
lv_obj_clean(active_screen);
|
||||
}
|
||||
|
||||
|
||||
void test_win_should_have_valid_documented_defualt_values(void)
|
||||
{
|
||||
// Header Height must be provided
|
||||
int win_header_height = 60;
|
||||
|
||||
// Create the win object and update layout
|
||||
win = lv_win_create(active_screen, win_header_height);
|
||||
lv_obj_update_layout(win);
|
||||
|
||||
// Check that the window has been created
|
||||
TEST_ASSERT_NOT_NULL(win);
|
||||
|
||||
// Check that the correct children have been created
|
||||
TEST_ASSERT_EQUAL(2, lv_obj_get_child_cnt(win));
|
||||
|
||||
header = lv_win_get_header(win);
|
||||
content = lv_win_get_content(win);
|
||||
|
||||
TEST_ASSERT_EQUAL(header, lv_obj_get_child(win, 0));
|
||||
TEST_ASSERT_EQUAL(content, lv_obj_get_child(win, 1));
|
||||
|
||||
// Check that the header is correctly sized and empty
|
||||
TEST_ASSERT_EQUAL(win_header_height, lv_obj_get_height(header));
|
||||
TEST_ASSERT_EQUAL(0, lv_obj_get_child_cnt(header));
|
||||
|
||||
// Check that the content is empty
|
||||
TEST_ASSERT_EQUAL(0, lv_obj_get_child_cnt(content));
|
||||
}
|
||||
|
||||
void test_win_add_title_single(void)
|
||||
{
|
||||
// Header Height must be provided
|
||||
int win_header_height = 60;
|
||||
|
||||
// Create the win object, get the header and update layout
|
||||
win = lv_win_create(active_screen, win_header_height);
|
||||
header = lv_win_get_header(win);
|
||||
lv_obj_update_layout(win);
|
||||
|
||||
// Add a title to the window
|
||||
lv_win_add_title(win, dummy_text);
|
||||
|
||||
// Check that no additional children have been created under win
|
||||
// Instead the child should be created under header
|
||||
TEST_ASSERT_EQUAL(2, lv_obj_get_child_cnt(win));
|
||||
TEST_ASSERT_EQUAL(1, lv_obj_get_child_cnt(header));
|
||||
|
||||
// Check that the title is a label and has been created properly
|
||||
lv_obj_t * title = lv_obj_get_child(header, 0);
|
||||
TEST_ASSERT_EQUAL_STRING(dummy_text, lv_label_get_text(title));
|
||||
TEST_ASSERT_EQUAL(1, lv_label_get_long_mode(title));
|
||||
}
|
||||
|
||||
void test_win_add_title_multiple(void)
|
||||
{
|
||||
// Header Height must be provided
|
||||
int win_header_height = 60;
|
||||
|
||||
// Create the win object, get the header and update layout
|
||||
win = lv_win_create(active_screen, win_header_height);
|
||||
header = lv_win_get_header(win);
|
||||
lv_obj_update_layout(win);
|
||||
|
||||
// Add two titles to the window
|
||||
lv_win_add_title(win, dummy_text);
|
||||
lv_win_add_title(win, dummy_text);
|
||||
|
||||
// Check that no additional children have been created under win
|
||||
// Instead the child should be created under header
|
||||
TEST_ASSERT_EQUAL(2, lv_obj_get_child_cnt(win));
|
||||
TEST_ASSERT_EQUAL(2, lv_obj_get_child_cnt(header));
|
||||
}
|
||||
|
||||
void test_win_add_btn(void)
|
||||
{
|
||||
// Header Height must be provided
|
||||
int win_header_height = 60;
|
||||
int win_btn_width = 50;
|
||||
|
||||
// Create the win object, get the header and update layout
|
||||
win = lv_win_create(active_screen, win_header_height);
|
||||
header = lv_win_get_header(win);
|
||||
lv_obj_update_layout(win);
|
||||
|
||||
// Add a button to the window header
|
||||
lv_win_add_btn(win, LV_SYMBOL_OK, win_btn_width);
|
||||
lv_obj_update_layout(win);
|
||||
|
||||
// Check that no additional children have been created under win
|
||||
// Instead the child should be created under header
|
||||
TEST_ASSERT_EQUAL(2, lv_obj_get_child_cnt(win));
|
||||
TEST_ASSERT_EQUAL(1, lv_obj_get_child_cnt(header));
|
||||
|
||||
// Check that the button has been created properly
|
||||
lv_obj_t * btn = lv_obj_get_child(header, 0);
|
||||
TEST_ASSERT_EQUAL(1, lv_obj_get_child_cnt(btn));
|
||||
TEST_ASSERT_EQUAL(win_btn_width, lv_obj_get_width(btn));
|
||||
|
||||
// Check the output remains visualy consistent
|
||||
TEST_ASSERT_EQUAL_SCREENSHOT("win_01.png");
|
||||
}
|
||||
|
||||
void test_win_add_multiple_elements(void)
|
||||
{
|
||||
lv_obj_t * btn;
|
||||
lv_obj_t * title;
|
||||
|
||||
// Header Height must be provided
|
||||
int win_header_height = 60;
|
||||
int win_btn_width = 50;
|
||||
int win_btn_close_width = 60;
|
||||
|
||||
// Create the win object, get the header and update layout
|
||||
win = lv_win_create(active_screen, win_header_height);
|
||||
lv_win_add_btn(win, LV_SYMBOL_LEFT, win_btn_width);
|
||||
lv_win_add_title(win, dummy_text);
|
||||
lv_win_add_btn(win, LV_SYMBOL_RIGHT, win_btn_width);
|
||||
lv_win_add_btn(win, LV_SYMBOL_CLOSE, win_btn_close_width);
|
||||
|
||||
header = lv_win_get_header(win);
|
||||
lv_obj_update_layout(win);
|
||||
|
||||
// Check that no additional children have been created under win
|
||||
// Instead the child should be created under header
|
||||
TEST_ASSERT_EQUAL(2, lv_obj_get_child_cnt(win));
|
||||
TEST_ASSERT_EQUAL(4, lv_obj_get_child_cnt(header));
|
||||
|
||||
// Check that the left button has been created properly
|
||||
btn = lv_obj_get_child(header, 0);
|
||||
TEST_ASSERT_EQUAL(1, lv_obj_get_child_cnt(btn));
|
||||
TEST_ASSERT_EQUAL(win_btn_width, lv_obj_get_width(btn));
|
||||
|
||||
// Check that the title is a label and has been created properly
|
||||
title = lv_obj_get_child(header, 1);
|
||||
TEST_ASSERT_EQUAL_STRING(dummy_text, lv_label_get_text(title));
|
||||
TEST_ASSERT_EQUAL(1, lv_label_get_long_mode(title));
|
||||
|
||||
// Check that the right button has been created properly
|
||||
btn = lv_obj_get_child(header, 2);
|
||||
TEST_ASSERT_EQUAL(1, lv_obj_get_child_cnt(btn));
|
||||
TEST_ASSERT_EQUAL(win_btn_width, lv_obj_get_width(btn));
|
||||
|
||||
// Check that the close button has been created properly
|
||||
btn = lv_obj_get_child(header, 3);
|
||||
TEST_ASSERT_EQUAL(1, lv_obj_get_child_cnt(btn));
|
||||
TEST_ASSERT_EQUAL(win_btn_close_width, lv_obj_get_width(btn));
|
||||
|
||||
// Check the output remains visualy consistent
|
||||
TEST_ASSERT_EQUAL_SCREENSHOT("win_02.png");
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user