Added enum abstract class and tests with mock implementations to test with.