Adding missing unit tests.
Abstract class is now more rigid.