Add test cases
Refactor
Update README.md and .gitignore
Support legacy C++ language dialect