Question 1 - 3

Question 1 - Test cases
Question 2 - implementation and test cases
Question 3 - implementation and test cases