From 260333583fe7a6bf0d123fafcf7828807a23339f Mon Sep 17 00:00:00 2001 From: lhdjply Date: Sat, 24 Feb 2024 23:02:09 +0800 Subject: [PATCH] feat(test_keyboard): add keyboard test (#5739) Signed-off-by: lhdjply --- tests/ref_imgs/widgets/keyboard_1.png | Bin 0 -> 12536 bytes tests/ref_imgs/widgets/keyboard_2.png | Bin 0 -> 12904 bytes tests/ref_imgs/widgets/keyboard_3.png | Bin 0 -> 12870 bytes tests/ref_imgs/widgets/keyboard_4.png | Bin 0 -> 7842 bytes tests/src/test_cases/widgets/test_keyboard.c | 41 +++++++++++++++++++ 5 files changed, 41 insertions(+) create mode 100644 tests/ref_imgs/widgets/keyboard_1.png create mode 100644 tests/ref_imgs/widgets/keyboard_2.png create mode 100644 tests/ref_imgs/widgets/keyboard_3.png create mode 100644 tests/ref_imgs/widgets/keyboard_4.png create mode 100644 tests/src/test_cases/widgets/test_keyboard.c diff --git a/tests/ref_imgs/widgets/keyboard_1.png b/tests/ref_imgs/widgets/keyboard_1.png new file mode 100644 index 0000000000000000000000000000000000000000..97e7a1a60f0d6e815315f37346ecbb01c262d28b GIT binary patch literal 12536 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

ltDn$JA4fe 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 Z7b>)}QXzc90xp6Oe<&@IEv)VRe*j&>#Sj1h literal 0 HcmV?d00001 diff --git a/tests/ref_imgs/widgets/keyboard_2.png b/tests/ref_imgs/widgets/keyboard_2.png new file mode 100644 index 0000000000000000000000000000000000000000..976ed4ee0d0a193936a9d5d98449c0ead7b9058d GIT binary patch literal 12904 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ⅈB7;s&NYLb=4^dX4EG#OzY-D7Vgt?ZB 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 DZCF11 literal 0 HcmV?d00001 diff --git a/tests/ref_imgs/widgets/keyboard_4.png b/tests/ref_imgs/widgets/keyboard_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ef91dbf613f2e86b3c2615fa1e4ef62be12e37 GIT binary patch literal 7842 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 literal 0 HcmV?d00001 diff --git a/tests/src/test_cases/widgets/test_keyboard.c b/tests/src/test_cases/widgets/test_keyboard.c new file mode 100644 index 0000000000..f892c30fae --- /dev/null +++ b/tests/src/test_cases/widgets/test_keyboard.c @@ -0,0 +1,41 @@ +#if LV_BUILD_TEST +#include "../lvgl.h" + +#include "unity/unity.h" + +static lv_obj_t * active_screen = NULL; + +void setUp(void) +{ + active_screen = lv_screen_active(); +} + +void tearDown(void) +{ + lv_obj_clean(active_screen); +} + +void test_keyboard_mode(void) +{ + lv_obj_t * keyboard = lv_keyboard_create(active_screen); + lv_obj_set_size(keyboard, LV_PCT(100), LV_PCT(50)); + lv_obj_align(keyboard, LV_ALIGN_BOTTOM_MID, 0, 0); + lv_obj_set_style_text_font(keyboard, &lv_font_dejavu_16_persian_hebrew, LV_PART_MAIN); + lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_TEXT_LOWER); + + TEST_ASSERT_EQUAL_SCREENSHOT("widgets/keyboard_1.png"); + + lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_TEXT_UPPER); + + TEST_ASSERT_EQUAL_SCREENSHOT("widgets/keyboard_2.png"); + + lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_SPECIAL); + + TEST_ASSERT_EQUAL_SCREENSHOT("widgets/keyboard_3.png"); + + lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_NUMBER); + + TEST_ASSERT_EQUAL_SCREENSHOT("widgets/keyboard_4.png"); +} + +#endif