these are the tech spec of the engine:
- bitboard move generator with piecelist to help the generation
- full legal move generator ( I don't like pseudolegal one)
- working in both linux/windows environment
- full working perft/divide function
- 32 bit tested code (I still lack a 64 bit test setup)
- faster than Vajolet 2.03 generator (36Mnodes/s on a 2 years old machine)
The answer is the use of the perft function. The first thing to do is test the engine against the positions on this page; when I was satisfied with the results I tested my engine against a bigger testsuite verifying the correctness of the result with stockfish.
The last thing that I have done is implementing a uci "go" command that return as bestmove a random move from the legalMove list and make the engine play against himself for some hours with the cutechess-cli program and check at the end that there are no game ended because of an "illegal" move.