Added a bunch of test cases and fixed bugs
Refactored and added more test cases
Added null values in test cases and fixed bugs
Added final tests and fixed bugs