fix bug && add test case