Will write more test cases later, but the existing tests are a start.