add test suite

is it neccessary to be all of them accessors? Maybe `attr_reader` is enough as this interface is quite dangerous that someone change attribute and break consistency of object.