fix bug & add test case