Introduction ============ OpenViBE SDK is a core software platform for the design, test and use of Brain-Computer Interfaces. It aims to have a certifiable kernel to be used in medical devices. Repository organisation ======================= The project repository is composed of several software modules. The repository basically looks like this : ``` + (API / specifications) + (kernel implementation) + (development help components) + (OpenViBE user applications) + (OpenViBE plugin collections) + + + ... + (abstraction and portability components) + + + ... +-- cmake-modules (cmake FindXXX and helpers) + + (configuration data) + (test resources) + + (code-level unit tests) + (internal unit testing framework) + (integration/validation tests) + ``` Each software module is organized as a UNIX-like tree (empty folders not included): ``` + (any pre-compiled binaries) + (target folder for API headers) + (any pre-compiled libraries) + (shared file folder for all data) + (source code of the module) + (documentation files for the module) + (unit test source code for the module) ``` Copying ======= Please refer to the COPYING.md file to get details regarding the OpenViBE license. Install ======= Please refer to the INSTALL.md file for instructions on how to build the platform. Naming rules ============ WARNING: These are the initial naming rules of the project. For an updated version, pleaser refer to OpenViBE Coding Rules. #### CMake - Openvibe-related variable: OV_MY_VARIABLE - Test-related variable: OVT_MY_VARIABLE #### Tools - CMake project and target name: openvibe-test-*mytool* (e.g. *openvibe-test-accuracy*) - File name: ovt + OpenViBE naming rules - Main namespace: OpenViBE::Test - Macro naming: OVT_MYMACRO #### Unit Tests - OpenViBE tested modules: module (e.g. *openvibe-kernel*) - Unit test directory name: module (e.g. *openvibe-kernel*) - CMake target name: module-test (e.g. *openvibe-kernel-test*) - Test file name: uo/ur + test identifier + Test (e.g. *uoKernelContextTest.cpp*) - u = unit - o = open (used for public test transferred from open-source OpenViBE) - r = restricted (used for test implemented within OpenViBE SDK project) - Test name: identical to file name #### Validation Tests - OpenViBE tested module: module (e.g. *openvibe-plugins-classification*) - Validation test directory: module (e.g. *openvibe-plugins-classification*) - CMake target name: module-test (e.g *openvibe-plugins-classification-test*) - Test name: vo/vr + module identifier + test identifier + Test (e.g. *voClassificationLDATest*) - v = validation - o/r: see Unit Tests #### Headers Use AGPL-3 header for public tests and confidential header for private tests. Contribution ============ ### Adding Unit Test #### Add Tests to Existing Driver To add tests to a module that is already tested, just add the test file and modify the test driver CMakeLists.txt accordingly. #### Creating a Test Driver If you wish to test a new module, you will have to create a new test driver in unit-test/. Create a new directory with some tests and a CMakeLists.txt (just look at other tests to get insights on tests structure). Add driver directory to directory to be processed in root directory CMakeLists.txt. ### Updating CTest Validation Test #### Enhance Existing Test Just add data in the test directory and modify test CMakeLists.txt accordingly. #### Add New Test There should be no reason to add ctest validation tests. New validation tests use Robot Framework. @FIXME CERT Rename repository ? Check "Adding Robot Framework Test" section in certivibe-test repository for more details.