add test cases
add gitignore