mirror of
				https://github.com/MarioSpore/Grinch-AP.git
				synced 2025-10-21 20:21:32 -06:00 
			
		
		
		
	 acf85eb9ab
			
		
	
	acf85eb9ab
	
	
	
		
			
			* Speedups: remove dependency on c++ * Speedups: intset: handle malloc failing * Speedups: intset: fix corner case for int64 on 32bit systems original idea was to only use bucket->val if int<pointer, but we always have a union now anyway * Speedups: add size comment to player_set bucket configuration * test: more tests for LocationStore.find_item * test: require _speedups in CI This kind of tests that the build succeeds. * test: even more tests for LocationStore.find_item * Speedups: intset uniform comment style * Speedups: intset: avoid memory leak when realloc fails * Speedups: intset: make `gcc -pedantic -std=c99 -fanalyzer` without warnings Unnamed unions are not in C99, this got fixed. The overhead of setting count=0 is minimal or optimized-out and silences -fanalizer (see comment). * Speedups: don't leak memory in case of exception * Speedups: intset: validate alloc and free This won't happen in our cython, but it's still a good addition. * CI: add test framework for C/C++ code * CI: ctest: fix cwd * Speedups: intset: ignore msvc warning * Tests: intset: revert attempt at no-asan We solve this with env vars in ctest now, and this fails for msvc. * Test: cpp: docs: fix typo * Test: cpp: docs: fix another typo * Test: intset: proper bucket count for Negative test INTxx_MIN % 1 would not produce a negative number, so the test was flawed.
		
			
				
	
	
		
			33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # C++ tests
 | |
| 
 | |
| Test framework for C and C++ code in AP.
 | |
| 
 | |
| ## Adding a Test
 | |
| 
 | |
| ### GoogleTest
 | |
| 
 | |
| Adding GoogleTests is as simple as creating a directory with
 | |
| * one or more `test_*.cpp` files that define tests using
 | |
|   [GoogleTest API](https://google.github.io/googletest/)
 | |
| * a `CMakeLists.txt` that adds the .cpp files to `test_default` target using
 | |
|   [target_sources](https://cmake.org/cmake/help/latest/command/target_sources.html)
 | |
| 
 | |
| ### CTest
 | |
| 
 | |
| If either GoogleTest is not suitable for the test or the build flags / sources / libraries are incompatible,
 | |
| you can add another CTest to the project using add_target and add_test, similar to how it's done for `test_default`.
 | |
| 
 | |
| ## Running Tests
 | |
| 
 | |
| * Install [CMake](https://cmake.org/).
 | |
| * Build and/or install GoogleTest and make sure
 | |
|   [CMake can find it](https://cmake.org/cmake/help/latest/module/FindGTest.html), or
 | |
|   [create a parent `CMakeLists.txt` that fetches GoogleTest](https://google.github.io/googletest/quickstart-cmake.html).
 | |
| * Enter the directory with the top-most `CMakeLists.txt` and run
 | |
|   ```sh
 | |
|   mkdir build
 | |
|   cmake -S . -B build/ -DCMAKE_BUILD_TYPE=Release
 | |
|   cmake --build build/ --config Release && \
 | |
|   ctest --test-dir build/ -C Release --output-on-failure
 | |
|   ```
 |