with some test cases