First Commit
This commit is contained in:
73
99 Work/0 OneSec/OneSecNotes/00 Daily/2023-10-26.md
Normal file
73
99 Work/0 OneSec/OneSecNotes/00 Daily/2023-10-26.md
Normal file
@@ -0,0 +1,73 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-26
|
||||
---
|
||||
## Tasks
|
||||
- [ ] #todo/b finish file format implementation (v0.2, unit tests)
|
||||
- [ ] #todo/b Add automated unit tests in the gitlab
|
||||
- [ ] #todo/b use the fileformat in the 3d map implementation
|
||||
- [ ] #todo/p start exam_generator project. Is this a software that can actually make profit?
|
||||
- [ ] #todo/p mario games auf tutti
|
||||
- [x] Add v0.2 samples to testing #todo/b ⏫ 📅 2023-10-27 ✅ 2023-10-27
|
||||
- [x] Implement the gitlab CI for the unit tests of the fileformat project #todo/b 🔽 📅 2023-10-27 ✅ 2023-10-27
|
||||
|
||||
## Quick Notes
|
||||
|
||||
|
||||
## Learnings
|
||||
#learning/investing
|
||||
- Compound interest is key to building wealth. The average yearly return of the S&P 500 over the last 30 years was 9.9% (or 7.2% inflation-adjusted).
|
||||
|
||||
#learning/cpp
|
||||
* how long is `"hi"` as a char array? ;; Length 3. In addition all char arrays in C and C++ contain the null terminator indicating the end of this string: `"h", "i", "\0"`
|
||||
<!--SR:!2023-12-10,14,290-->
|
||||
|
||||
[[GTest Framework|GoogleTest]] is actually a great method to test your code during development. I should always start with google test instead of a dummy main function that executes stuff and immediately shows if its working or not.
|
||||
It is also surprisingly easy to get started with the google test library in C++. You just need to define the following [[CMake|CMakeLists.txt]] in your `test` subfolder:
|
||||
```cmake
|
||||
# 1. integrate GTest
|
||||
include(FetchContent)
|
||||
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
GIT_REPOSITORY https://github.com/google/googletest.git
|
||||
GIT_TAG release-1.11.0
|
||||
)
|
||||
|
||||
FetchContent_MakeAvailable(googletest)
|
||||
add_library(GTest::GTest INTERFACE IMPORTED)
|
||||
target_link_libraries(GTest::GTest INTERFACE gtest_main)
|
||||
|
||||
# 2. add test executable
|
||||
set(test_exe_name ${library_name}_test)
|
||||
add_executable(${test_exe_name} test_onesec3d_cpp.cpp)
|
||||
|
||||
target_link_libraries(${test_exe_name}
|
||||
PRIVATE
|
||||
${library_name}
|
||||
GTest::gtest
|
||||
GTest::gtest_main
|
||||
)
|
||||
|
||||
add_test(onesec3d_tests ${test_exe_name})
|
||||
set_tests_properties(onesec3d_tests PROPERTIES
|
||||
ENVIRONMENT
|
||||
DATADIR=${CMAKE_CURRENT_SOURCE_DIR}/sample_3d_files/
|
||||
)
|
||||
```
|
||||
Once this is done you can implement your test in the specified executable test file. For example:
|
||||
```cpp
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(test_onesec3d, test_read_rewrite_equal_hash)
|
||||
{
|
||||
// ... do your testing stuff
|
||||
// execute tests
|
||||
ASSERT_EQ(1, 1);
|
||||
}
|
||||
|
||||
```
|
||||
The `DATADIR` environment variable in `set_test_properties` is a smart way to pass the test folder of the build to the test file in order to use assets such as files etc in your tests.
|
||||
|
||||
#learning/cpp this seems a good learning resource for cpp: https://matgomes.com/integrate-google-test-into-cmake/
|
||||
Reference in New Issue
Block a user