Using hand-made join instead of boost::join
Made join visible from outside and added some tests for it
Using expect instead of assert so that all checks are executed even if one of them fails
Using std::stoi instead of atoi
Renamed some functions and using map to reduce code
Removed loop using foreach algorithm
Moved a declaration and passed a literal to a test
Formatted code