lvgl/tests
Mariotaku e7736f2c32
feat(fragment): add fragment manager (a UI Controller concept) (#2940)
* adding lv_obj_controller

* adding examples for lv_obj_controller

* added some docs

* formatted code

* updated controller docs

* updated controller docs

* updated sample controller field

* changed lv_controller_manager_parent to lv_controller_manager_get_parent

* updated unmanaged controller creation/deletion

* renamed lv_controller_manager_t

* rename: controller -> fragment

* formatted code

* Update examples/others/fragment/lv_example_fragment.h

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>

* Update src/extra/others/fragment/lv_fragment.c

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>

* Update src/extra/others/fragment/lv_fragment.c

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>

* Update src/extra/others/fragment/lv_fragment.c

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>

* code cleanup

* fragment creation rework

* (wip) fragment manager

* (wip) fragment manager

* refactoring fragment

* lifecycle fixes

* updated fragment event callback

* exposed states of fragment

* added some docs

* updated lv_fragment_managed_states_t name

* updated docs

* updated docs

* updated lv_fragment_manager_dispatch_event docs

* removed msgbox fragment

* updated fragment docs

* updated fragment docs

* updated docs

* updating examples

* fixed example

* reformatted code

* fixed obj_created set timing

* simplified fragment

* improved fragment view del assertion

* fixed a typo

* fixed event_cb check in lv_obj_remove_event_cb_with_user_data

* fixing fragment obj assertion

* regenerated config

* fixed fragment examples

* fixed fragment examples

* added missing examples

* updated docs

* fragment api cleanup

* rename fragment struct names

* added missing param doc

* enabled test for 32bit build

* feat(porting): add a macro lv_run_timer_handler_in_period to simplify porting (#3063)

* feat(porting): add a macro lv_run_timer_handler_in_period to simplify porting

* feat: update helper function and doc

* doc(porting): update function names

* revise to the original os.md

* fix: fix typo

* fix: mitigate warnings

* chore: fix code formatting

* fix(fsdrv): replacing sprintf with lv_snprintf for safety (#3079)

* fix(Kconfig) remove duplicate LV_BUILD_EXAMPLES configuration

* feat(refr) add reset of FPS statistics

* fix(conf) mismatched macro judgment

* feat(fsdrv) replacing sprintf with lv_snprintf for safety

* feat(fsdrv) update stdio and win32

Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>

* fix warnings

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Co-authored-by: Gabriel Wang <embedded_zhuoran@Hotmail.com>
Co-authored-by: _VIFEXTech <1290176185@qq.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2022-02-11 12:43:08 +01:00
..
ref_imgs feat(obj) place the scrollbar to the left with RTL base dir. 2021-08-19 12:51:29 +02:00
src chore(test): format test cases (#3071) 2022-02-03 09:59:55 +01:00
unity test add support for using system heap 2022-01-23 09:58:55 -05:00
.gitignore test convert Makefile to CMake (#2495) 2021-08-27 15:49:31 +02:00
CMakeLists.txt feat(fragment): add fragment manager (a UI Controller concept) (#2940) 2022-02-11 12:43:08 +01:00
config.yml feat(test) first experiement with Unity test engine 2021-06-18 14:13:41 +02:00
main.py test(demo) add tests for widget and stress demos 2022-01-24 10:55:32 -05:00
README.md chore: many trivial spelling and layout fixes (#3008) 2022-01-17 08:10:23 -05:00

Tests for LVGL

The tests in the folder can be run locally and automatically by GitHub CI.

Running locally

Requirements (Linux)

Install requirements by:

scripts/install-prerequisites.sh

Run test

  1. Run all executable tests with ./tests/main.py test.
  2. Build all build-only tests with ./tests/main.py build.
  3. Clean prior test build, build all build-only tests, run executable tests, and generate code coverage report ./tests/main.py --clean --report build test.

For full information on running tests run: ./tests/main.py --help.

Running automatically

GitHub's CI automatically runs these tests on pushes and pull requests to master and releasev8.* branches.

Directory structure

  • src Source files of the tests
    • test_cases The written tests,
    • test_runners Generated automatically from the files in test_cases.
    • other miscellaneous files and folders
  • ref_imgs - Reference images for screenshot compare
  • report - Coverage report. Generated if the report flag was passed to ./main.py
  • unity Source files of the test engine

Add new tests

Create new test file

New test needs to be added into the src/test_cases folder. The name of the files should look like test_<name>.c. The basic skeleton of a test file copy _test_template.c.

Asserts

See the list of asserts here.

There are some custom, LVGL specific asserts:

  • TEST_ASSERT_EQUAL_SCREENSHOT("image1.png") Render the active screen and compare its content with an image in the ref_imgs folder. If the compare fails lvgl/test_screenshot_error.h is created with the content of the frame buffer as an image. To see the that image #include "test_screenshot_error.h" and call test_screenshot_error_show();.
  • TEST_ASSERT_EQUAL_COLOR(color1, color2) Compare two colors.

Adding new reference images

The reference images can be taken by copy-pasting the test code in to LVGL simulator and saving the screen. LVGL needs to

  • 800x480 resolution
  • 32 bit color depth
  • LV_USE_PERF_MONITOR and LV_USE_MEM_MONITOR disabled
  • use the default theme, with the default color (don't set a theme manually)