96 lines
2.5 KiB
C
96 lines
2.5 KiB
C
#if LV_BUILD_TEST
|
|
#include "../lvgl.h"
|
|
#include "../lv_test_indev.h"
|
|
#include "unity/unity.h"
|
|
|
|
#define TEST_HOVER_COUNTS 20
|
|
|
|
typedef struct _test_hover_t {
|
|
/* data */
|
|
uint32_t id;
|
|
uint32_t counts;
|
|
} test_hover_t;
|
|
|
|
static test_hover_t label_hovered;
|
|
static test_hover_t btn_hovered;
|
|
|
|
static const lv_point_t pointer1[] = {
|
|
{0, 0}, {110, 20}, {150, 26}, {120, 19}, {0, 0},
|
|
};
|
|
|
|
static const lv_point_t pointer2[] = {
|
|
{0, 0}, {60, 100}, {80, 100}, {120, 120}, {0, 0},
|
|
};
|
|
|
|
void setUp(void)
|
|
{
|
|
/* Function run before every test */
|
|
}
|
|
|
|
void tearDown(void)
|
|
{
|
|
/* Function run after every test */
|
|
lv_obj_clean(lv_screen_active());
|
|
}
|
|
|
|
static void hovered_event_cb(lv_event_t * e)
|
|
{
|
|
test_hover_t * hover = (test_hover_t *)e->user_data;
|
|
lv_log("Object(ID:%d) hovered %d/%d times.\n", hover->id, hover->counts, TEST_HOVER_COUNTS);
|
|
}
|
|
|
|
static void test_move_mouse(lv_point_t * point, uint8_t size)
|
|
{
|
|
lv_point_t * p = point;
|
|
|
|
for(uint8_t j = 0; j < TEST_HOVER_COUNTS; j++) {
|
|
for(uint8_t i = 0; i < size; i++) {
|
|
lv_test_mouse_move_to(p[i].x, p[i].y);
|
|
lv_test_indev_wait(50);
|
|
}
|
|
}
|
|
}
|
|
|
|
void test_hover_basic(void)
|
|
{
|
|
lv_obj_t * label = lv_label_create(lv_screen_active());
|
|
lv_obj_set_size(label, 200, 20);
|
|
lv_label_set_text(label, "Clickable text can be hovered!");
|
|
lv_obj_set_pos(label, 100, 20);
|
|
lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE);
|
|
lv_obj_set_style_text_color(label, lv_color_hex(0x5be1b6), LV_PART_MAIN | LV_STATE_HOVERED);
|
|
|
|
/*Set hover callback*/
|
|
label_hovered.id = (lv_uintptr_t)label->id;
|
|
label_hovered.counts = 0;
|
|
lv_obj_add_event_cb(label, hovered_event_cb, LV_EVENT_HOVER_OVER, &label_hovered);
|
|
|
|
lv_obj_t * btn = lv_button_create(lv_screen_active());
|
|
lv_obj_set_pos(btn, 64, 100);
|
|
lv_obj_set_size(btn, 128, 48);
|
|
lv_obj_set_style_bg_opa(btn, 128, LV_PART_MAIN | LV_STATE_HOVERED);
|
|
|
|
/*Set hover callback*/
|
|
btn_hovered.id = (lv_uintptr_t)btn->id;
|
|
btn_hovered.counts = 0;
|
|
lv_obj_add_event_cb(btn, hovered_event_cb, LV_EVENT_HOVER_OVER, &btn_hovered);
|
|
|
|
test_move_mouse((lv_point_t *)pointer1, 5);
|
|
test_move_mouse((lv_point_t *)pointer2, 5);
|
|
}
|
|
|
|
void test_hover_delete(void)
|
|
{
|
|
lv_obj_t * button = lv_button_create(lv_screen_active());
|
|
lv_obj_set_size(button, 200, 100);
|
|
|
|
lv_test_indev_wait(50);
|
|
lv_test_mouse_move_to(50, 50);
|
|
lv_test_indev_wait(50);
|
|
lv_obj_delete(button); /*No crash while deleting the hovered button*/
|
|
lv_test_indev_wait(50);
|
|
}
|
|
|
|
|
|
#endif
|