acid-drop- Hacking the planet from a LilyGo T-Deck using custom firmware |
git clone git://git.acid.vegas/acid-drop.git |
Log | Files | Refs | Archive | README | LICENSE |
test_slider.c (6144B)
1 #if LV_BUILD_TEST 2 #include "../lvgl.h" 3 4 #include "unity/unity.h" 5 #include "lv_test_indev.h" 6 7 static lv_obj_t * active_screen = NULL; 8 static lv_obj_t * slider = NULL; 9 static lv_obj_t * sliderRangeMode = NULL; 10 static lv_obj_t * sliderNormalMode = NULL; 11 static lv_obj_t * sliderSymmetricalMode = NULL; 12 static lv_group_t * g = NULL; 13 14 void setUp(void) 15 { 16 active_screen = lv_scr_act(); 17 slider = lv_slider_create(active_screen); 18 sliderRangeMode = lv_slider_create(active_screen); 19 sliderNormalMode = lv_slider_create(active_screen); 20 sliderSymmetricalMode = lv_slider_create(active_screen); 21 22 lv_slider_set_mode(sliderRangeMode, LV_SLIDER_MODE_RANGE); 23 lv_slider_set_mode(sliderNormalMode, LV_SLIDER_MODE_NORMAL); 24 lv_slider_set_mode(sliderSymmetricalMode, LV_SLIDER_MODE_SYMMETRICAL); 25 26 g = lv_group_create(); 27 lv_indev_set_group(lv_test_encoder_indev, g); 28 } 29 30 void tearDown(void) 31 { 32 lv_obj_clean(active_screen); 33 } 34 35 void test_textarea_should_have_valid_documented_default_values(void) 36 { 37 lv_coord_t objw = lv_obj_get_width(slider); 38 lv_coord_t objh = lv_obj_get_height(slider); 39 40 /* Horizontal slider */ 41 TEST_ASSERT_TRUE(objw >= objh); 42 TEST_ASSERT_FALSE(lv_obj_has_flag(slider, LV_OBJ_FLAG_SCROLL_CHAIN)); 43 TEST_ASSERT_FALSE(lv_obj_has_flag(slider, LV_OBJ_FLAG_SCROLLABLE)); 44 } 45 46 void test_slider_event_keys_right_and_up_increment_value_by_one(void) 47 { 48 char key = LV_KEY_RIGHT; 49 lv_slider_set_value(slider, 10, LV_ANIM_OFF); 50 int32_t value = lv_slider_get_value(slider); 51 52 lv_event_send(slider, LV_EVENT_KEY, (void *) &key); 53 54 int32_t new_value = lv_slider_get_value(slider); 55 TEST_ASSERT_EQUAL_INT32(value + 1, new_value); 56 57 key = LV_KEY_UP; 58 lv_event_send(slider, LV_EVENT_KEY, (void *) &key); 59 TEST_ASSERT_EQUAL_INT32(new_value + 1, lv_slider_get_value(slider)); 60 } 61 62 void test_slider_event_keys_left_and_down_decrement_value_by_one(void) 63 { 64 char key = LV_KEY_LEFT; 65 lv_slider_set_value(slider, 10, LV_ANIM_OFF); 66 int32_t value = lv_slider_get_value(slider); 67 68 lv_event_send(slider, LV_EVENT_KEY, (void *) &key); 69 70 int32_t new_value = lv_slider_get_value(slider); 71 TEST_ASSERT_EQUAL_INT32(value - 1, new_value); 72 73 key = LV_KEY_DOWN; 74 lv_event_send(slider, LV_EVENT_KEY, (void *) &key); 75 TEST_ASSERT_EQUAL_INT32(new_value - 1, lv_slider_get_value(slider)); 76 } 77 78 void test_slider_event_invalid_key_should_not_change_values(void) 79 { 80 char key = LV_KEY_ENTER; 81 lv_slider_set_value(slider, 10, LV_ANIM_OFF); 82 int32_t value = lv_slider_get_value(slider); 83 84 lv_event_send(slider, LV_EVENT_KEY, (void *) &key); 85 86 TEST_ASSERT_EQUAL_INT32(value, lv_slider_get_value(slider)); 87 } 88 89 void test_slider_range_mode_should_leave_edit_mode_if_released(void) 90 { 91 lv_slider_t * ptr = (lv_slider_t *) sliderRangeMode; 92 93 /* Setup group and encoder indev */ 94 lv_group_add_obj(g, sliderNormalMode); 95 lv_group_set_editing(g, true); 96 97 lv_test_encoder_click(); 98 99 /* Always executed when handling LV_EVENT_RELEASED or 100 * LV_EVENT_PRESS_LOST */ 101 TEST_ASSERT_FALSE(ptr->dragging); 102 TEST_ASSERT_NULL(ptr->value_to_set); 103 TEST_ASSERT_EQUAL(0U, ptr->left_knob_focus); 104 105 /* Group leaved edit mode */ 106 TEST_ASSERT_FALSE(lv_group_get_editing(g)); 107 } 108 109 void test_slider_range_mode_should_not_leave_edit_mode_if_released_with_no_left_knob_focus(void) 110 { 111 lv_slider_t * ptr = (lv_slider_t *) sliderRangeMode; 112 113 /* Setup group and encoder indev */ 114 lv_group_add_obj(g, sliderRangeMode); 115 lv_group_set_editing(g, true); 116 117 lv_test_encoder_release(); 118 lv_test_indev_wait(50); 119 120 /* Always executed when handling LV_EVENT_RELEASED or 121 * LV_EVENT_PRESS_LOST */ 122 TEST_ASSERT_FALSE(ptr->dragging); 123 TEST_ASSERT_NULL(ptr->value_to_set); 124 125 TEST_ASSERT(lv_group_get_editing(g)); 126 } 127 128 void test_slider_normal_mode_should_leave_edit_mode_if_released(void) 129 { 130 lv_slider_t * ptr = (lv_slider_t *) sliderNormalMode; 131 ptr->left_knob_focus = 1; 132 133 /* Setup group and encoder indev */ 134 lv_group_add_obj(g, sliderNormalMode); 135 lv_group_set_editing(g, true); 136 137 lv_test_encoder_click(); 138 139 /* Always executed when handling LV_EVENT_RELEASED or 140 * LV_EVENT_PRESS_LOST */ 141 TEST_ASSERT_FALSE(ptr->dragging); 142 TEST_ASSERT_NULL(ptr->value_to_set); 143 TEST_ASSERT_EQUAL(0U, ptr->left_knob_focus); 144 145 /* Group leaved edit mode */ 146 TEST_ASSERT_FALSE(lv_group_get_editing(g)); 147 } 148 149 void test_ranged_mode_adjust_with_encoder(void) 150 { 151 lv_slider_set_value(sliderRangeMode, 90, LV_ANIM_OFF); 152 lv_slider_set_left_value(sliderRangeMode, 10, LV_ANIM_OFF); 153 154 /* Setup group and encoder indev */ 155 lv_group_add_obj(g, sliderRangeMode); 156 lv_group_set_editing(g, false); 157 158 /*Go the edit mode*/ 159 lv_test_encoder_click(); 160 161 /*Adjust the right knob*/ 162 lv_test_encoder_turn(-10); 163 TEST_ASSERT_EQUAL(80, lv_slider_get_value(sliderRangeMode)); /*Updated?*/ 164 TEST_ASSERT_EQUAL(10, lv_slider_get_left_value(sliderRangeMode)); /*Maintained?*/ 165 166 /*Focus the left knob*/ 167 lv_test_encoder_click(); 168 169 /*Adjust the left knob*/ 170 lv_test_encoder_turn(5); 171 TEST_ASSERT_EQUAL(80, lv_slider_get_value(sliderRangeMode)); /*Maintained?*/ 172 TEST_ASSERT_EQUAL(15, lv_slider_get_left_value(sliderRangeMode)); /*Updated?*/ 173 174 } 175 176 void test_normal_mode_slider_hit_test(void) 177 { 178 /* Validate if point 0,0 can click in the slider */ 179 lv_point_t point = { 180 .x = 0, 181 .y = 0 182 }; 183 184 lv_hit_test_info_t info = { 185 .res = false, 186 .point = &point 187 }; 188 189 lv_slider_set_value(sliderNormalMode, 100, LV_ANIM_OFF); 190 lv_event_send(sliderNormalMode, LV_EVENT_HIT_TEST, (void *) &info); 191 192 /* point can click slider */ 193 TEST_ASSERT(info.res); 194 } 195 196 void test_slider_range_event_hit_test(void) 197 { 198 /* Validate if point 0,0 can click in the slider */ 199 lv_point_t point = { 200 .x = 0, 201 .y = 0 202 }; 203 204 lv_hit_test_info_t info = { 205 .res = false, 206 .point = &point 207 }; 208 lv_event_send(sliderRangeMode, LV_EVENT_HIT_TEST, (void *) &info); 209 210 /* point can click slider in the left knob */ 211 TEST_ASSERT(info.res); 212 } 213 214 #endif