Fix bug, Add test case( do not pass yet. )