split many test cases, and add some new cases