add test code & fix the bug