.. Hydroflow documentation file, created by Pierre-Yves Gousenbourger on Wed Aug 2, 2023. .. _testing: Test the code ============= Testing the code is super important when launching the app for the first time but also when modifying it. Prerequisites ------------- The following prerequisites are mandatory: - Python 3.11 is installed, and you activated the python environment with the requirements specified in `requirements.txt`; - You compiled the code properly with CMake (see :ref:`Compile the code `) Run the tests ------------- Run the tests by hitting the following lines. On Windows: .. code-block:: .\tests\meshchecker_tests.exe .\tests\hydroflow_tests.exe python tests/pytest_runner.py On linux or MacOS: .. code-block:: tests/meshchecker_tests tests/hydroflow_tests python3 tests/pytest_runner.py All the tests should pass before you commit and push anything. Add tests to Watlab ------------------- The test folder is organized as follows. .. code-block:: tests ├── cpp_cases # test cases related to hydroflow.cpp ├── data # benchmarks for watlab testing purposes ├── meshchecker # test cases related to meshchecker.cpp ├── meshes # meshed used for testing watlab ├── py_cases # test cases for watlab ├── rasters # raster cards for end-to-end testing ├── scripts # deprecated ├── hydroflow-tests # runs all the c++ tests related to hydroflow ├── meshchecker-tests # runs all the c++ tests related to meshchecker ├── pytest_runner.py # runs all the python tests The tests are groupes in files containing the same elements. For instance, the tests for `meshchercker` are grouped in the so-named folder. Each file of this folder tests a class or a group of features. Please consider placing your new test in the right file, or create a new file if you created a new class. Each feature should be tested before it is pushed. Tests in python ~~~~~~~~~~~~~~~ Python tests are run with `unittest`. Documentation is available in `here `_. If you add a new class of test, consider adding it to the suite of the file `tests/pytest_runner.py`. Tests with C++ ~~~~~~~~~~~~~~ Tests are written with Google's framework `Google Test _` and compiled with CMake (and not Bazel, but if you want to, feel free). Each class is tested in one file. The tests are automatically added to the `main()`.