fix some bugs, add more test and coverage

偶然看到，就fork下来试了试，test太少，覆盖率没上去，自己添加了一些测试，还有几处小bug，你把false拼错了。