add tests for the encoder, fix a fatal bug