[libc][NFC] Move aligned access implementations to separate header
[llvm-project.git] / libc / docs / dev / api_test.rst
blob85239bbe78941cb1bf525a0b7cea99ce8c34a757
1 .. _api_test:
3 ========
4 API Test
5 ========
6 The implementation of libc-project is unique because our public C header files
7 are generated using information from ground truth captured in TableGen files.
8 Unit tests only exercise the internal C++ implementations and don't ensure the
9 headers were generated by the build system and that the generated header files
10 contain the expected declarations and definitions. A simple solution is to have
11 contributors write an integration test for each individual function as a C
12 program; however, this would place a large burden on contributors and duplicates
13 some effort from the unit tests.
15 Instead we automate the generation of what we call as an API test. This API test
16 ensures that public facing symbols are visible, that the header files are
17 generated as expected, and that each libc function has the correct function
18 prototype as specified by the standards. The API test cmake rules are located in
19 ``test/src/CMakeLists.txt``. The source file for the API test is generated in
20 ``<build directory>/projects/libc/test/src/public_api_test.cpp``