Refactor tests from ba2ed6becf6e2bc3260c6d3203fbb9c3e5029794

Put tests for individual methods into their own test class.
Use convention of assert actual == expected
Add a test for NotImplemented error