Helping with implementing unit tests

Todo items are in the (code of the) current unit tests. They are not at all very difficult. They are small (some todo tests are less than five lines of code). It's easy to add them. All the infrastructure and code is already there. Pre-typed for you. You just need to implement the tests themselves.

example1, example2

While implementing a unit test, never forget that a unit test isn't intended to pass existing implementation. A unit test is intended to act as test for the contract of an interface versus an implementation of that interface. You can ask Philip (or another developer) what this contract should be if it's unclear for a specific interface.

If it's unclear, it actually also means that I didn't document the design enough. So your question will also trigger the developers into upgrading the design and implementation documentation.

If the contract conflicts with the current implementation, then that's because the developer is an idiot who should have implemented a unit test before writing code (what Philip sometimes did, he confesses). It also means that his implementation is wrong and that you can prove that by implementing a unit test.

Compiling tinymail with unit tests

Install Check (it's very easy, promised. Some distributions also have packages for it)

./autogen.sh --enable-unit-tests --prefix=/opt/tinymail
make check

How to implement a unit test, a detailed description