ethz-asl/libpointmatcher — pull request #25 by oleg-alexandrov (2014-01-10 06:10:19+00:00)
Title: New unit tests and inplace filters

There are two commits in this pull request, the first adds unit tests for all filters, and the second is the implementation of in-place filters.

The purpose of the new unit tests is to verify that the implementation of in-place filters (which is now invoked everywhere in ICP instead of the original filters) did not break anything. So, ideally the unit tests commit should be applied first, tests should be run, and if they pass, the in-place filters commit should be applied, and test results should not change.

It is important to note that the new unit tests have a caveat. Since filters cannot be tested on their own, what the unit tests do is load point clouds, apply filters, run ICP, and compare the obtained rotation+translation transform to the reference result saved on disk (utest/utest.cpp has more info).

The problem here is that the transform obtained by ICP can differ slightly on different platforms, as multiple transforms can align equally well a cloud to another. As such, the first time you will run 'make test' after merging the unit tests commit, they are pretty much guaranteed to fail. Well, that is not a show stopper, since the newly computed transforms (which are being saved to disk) can be copied on top of the reference results and declared to be the new standard to measure future tests against.

So it is up to you whether to incorporate these unit tests I made. They are much more thorough than the existing tests, which is useful in continuous integration, but for code shipped to the user they probably would need to be disabled since again the reference results stored as part of the repository will not be the same as what the user will see.