Comments (2)
Another aspect to this we should consider: Once we have some unit tests, we should get them outputting gcov information when the game is built by the CI servers. This will allow us to use things like coveralls to measure code coverage.
Here's an example of a C++ project that has CI with Travis and Appveyor set up, along with unit tests using Catch and code coverage with coveralls. Their unit tests are all in one giant 10k line cpp file, which is less than ideal for sure, but is a good reference point when discussing how to structure our changes.
from recastnavigation.
Haha, we're going to get along well Graham :) This is something I was considering doing already.
My personal favourite unit test framework for C++ is UnitTest++ (https://github.com/unittest-cpp/unittest-cpp). I'd be perfectly happy with Catch or something else simple too though.
I'm not sure where in the repo they should live - each sub-project (Detour, DetourCrowd etc) is already in its own directory (which is nice), so either a completely parallel 'tests' directory or a 'tests' directory within each sub-project? And yes, easy to run is key - I make unit tests part of my build script. I'm sure we can get premake to run the tests.
Agreed on first things to test.
Also completely agreed on gcov or similar. Should be easy enough to work in. I've also got a long list of fun things I'd like to do with tests (fuzz testing, clang sanitizers etc).
I wonder what we should do with larger-scale functional tests? It would be nice to have automated tests that run through the whole process of building a navmesh, and/or pathfinding on it. Not as part of the unit test suite of course, but given the codebase's functional style it would be simple to use the same framework to write them and just include running them as an optional build target.
from recastnavigation.
Related Issues (20)
- Inconsistent naming of HeightField and Heightfield across the codebase
- Typedef integer flag types as appropriate
- Why use dtMathFloorf to calculate tx1/ty1 (max_x/max_y) but not dtMathCeilf in dtTileCache::queryTiles HOT 1
- Bug when culling out off-mesh start locations?
- Infinite loop in triangulateHull when detailSampleDist == 0
- Small optimizations for CalculateDistanceField() in RecastRegion.cpp HOT 1
- Nullptr dereference leading to a crash in closestPointOnDetailEdges<true> HOT 2
- TempObstacles problem on stair HOT 1
- Can I add Android, IOS, and Linux libraries?
- The "min region size" does not take effect when constructing the navmesh using the TempObstacles mode. HOT 2
- Triangles looks strange. HOT 2
- [Detour] Incorrect layout of tile links in DT_POLYREF64 mode HOT 3
- cannot load new geometry file in RecastDemo HOT 1
- rcFilterLowHangingWalkableObstacles Study HOT 2
- Add revision to the generated navmesh HOT 1
- maxTiles value in the navmesh initialization parameters HOT 1
- dividePoly crashes on the attempt to add 8th point HOT 2
- Bug while loading vertices/indices HOT 4
- [Github Action] Segmentation fault, process completed with exit code 139 HOT 2
- Unable to Export Off-Mesh Links in recastdemo Temp Obstacles HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from recastnavigation.