def test_getters(self):
        """Tests the getters of the RetirementCalculator class"""
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Age
        # expected: 30
        self.assertEqual(self.control_age,
                         self.retirement_calculator.get_age())

        # Case: Salary
        # expected: 80,000
        self.assertEqual(self.control_salary,
                         self.retirement_calculator.get_salary())

        # Case: Percent Saved per Year
        # expected: 0.12
        self.assertEqual(self.control_percent_savings,
                         self.retirement_calculator.get_percent_savings())

        # Case: Goal
        # expected: 700,000
        self.assertEqual(self.control_goal,
                         self.retirement_calculator.get_goal())
예제 #2
0
 def test_retirement_control(self):
     """Calculation with setUp variables"""
     # Case: Control
     # expected: savings age 55, goal is reachable
     self.retirement_calculator = RetirementCalculator(self.control_age,
                                                       self.control_salary,
                                                       self.control_percent_savings,
                                                       self.control_goal)
     self.assertEqual(55,
                      self.retirement_calculator.calculate_savings_age())
     self.assertTrue(self.retirement_calculator.is_goal_reachable())
 def test_diff_types(self):
     """Tests initializing the Retirement Calculator object with
     erroneous types passed in. """
     # Case: String for age
     # expected: TypeError
     with self.assertRaises(TypeError):
         self.retirement_calculator = RetirementCalculator(
             "test", self.control_salary, self.control_percent_savings,
             self.control_goal)
     # Case: String for salary
     # expected: TypeError
     with self.assertRaises(TypeError):
         self.retirement_calculator = RetirementCalculator(
             self.control_age, "test", self.control_percent_savings,
             self.control_goal)
     # Case: String for savings per year
     # expected: TypeError
     with self.assertRaises(TypeError):
         self.retirement_calculator = RetirementCalculator(
             self.control_age, self.control_salary, "test",
             self.control_goal)
     # Case: String for goal
     # expected: TypeError
     with self.assertRaises(TypeError):
         self.retirement_calculator = RetirementCalculator(
             self.control_age, self.control_salary,
             self.control_percent_savings, "test")
예제 #4
0
    def test_retirement_percent_savings(self):
        """Tests calculations at varying percent saved per year"""
        # Case: Percent Savings = 0.08
        # expected: savings age 82, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          0.08,
                                                          self.control_goal)
        self.assertEqual(82,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: 0.093 (edge)
        # expected: savings age 70, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          0.093,
                                                          self.control_goal)
        self.assertEqual(70,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: Percent Savings = 0.15
        # expected: savings age 44, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          0.15,
                                                          self.control_goal)
        self.assertEqual(44,
                         self.retirement_calculator.calculate_savings_age())
        self.assertTrue(self.retirement_calculator.is_goal_reachable())
예제 #5
0
    def test_retirement_salary(self):
        """Tests calculations at varying salaries"""
        # Case: Salary = 55,000
        # expected: savings age 79, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          55000,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(79,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case:Salary = 61,729 (edge)
        # expected: savings age 70, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          61729,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(70,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: Age = 100,000 (control)
        # expected: savings age 55, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          100000,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(44,
                         self.retirement_calculator.calculate_savings_age())
        self.assertTrue(self.retirement_calculator.is_goal_reachable())
예제 #6
0
    def test_retirement_age(self):
        """Tests calculations at varying ages"""
        # Case: Age = 55
        # expected: savings age 55, goal not reachable
        self.retirement_calculator = RetirementCalculator(55,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(55,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: Age = 45 (edge)
        # expected: savings age 55, goal not reachable
        self.retirement_calculator = RetirementCalculator(45,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(55,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: Age = 25
        # expected: savings age 55, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(55,
                         self.retirement_calculator.calculate_savings_age())
        self.assertTrue(self.retirement_calculator.is_goal_reachable())
예제 #7
0
    def test_retirement_goal(self):
        """Tests calculations at varying goals"""
        # Case: Goal = 1,000,000
        # expected: savings age 78, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          1000000)
        self.assertEqual(78,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: 907,200 (edge)
        # expected: savings age 70, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          907200)
        self.assertEqual(70,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: 500,000
        # expected: savings age 39, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          500000)
        self.assertEqual(39,
                         self.retirement_calculator.calculate_savings_age())
        self.assertTrue(self.retirement_calculator.is_goal_reachable())
예제 #8
0
class TestRetirementCalculation(unittest.TestCase):
    def setUp(self):
        """Setup function that will apply to all other functions in the class.
        The items entered here must always result in a reachable goal.
        """
        # Age that must be valid
        self.control_age = 30
        # Salary that must be valid
        self.control_salary = 80000
        # Salary percentage saved per year that must be valid
        self.control_percent_savings = .12
        # Goal that must be valid
        self.control_goal = 700000

    def test_retirement_age(self):
        """Tests calculations at varying ages"""
        # Case: Age = 55
        # expected: savings age 55, goal not reachable
        self.retirement_calculator = RetirementCalculator(55,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(55,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: Age = 45 (edge)
        # expected: savings age 55, goal not reachable
        self.retirement_calculator = RetirementCalculator(45,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(55,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: Age = 25
        # expected: savings age 55, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(55,
                         self.retirement_calculator.calculate_savings_age())
        self.assertTrue(self.retirement_calculator.is_goal_reachable())

    def test_retirement_salary(self):
        """Tests calculations at varying salaries"""
        # Case: Salary = 55,000
        # expected: savings age 79, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          55000,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(79,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case:Salary = 61,729 (edge)
        # expected: savings age 70, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          61729,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(70,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: Age = 100,000 (control)
        # expected: savings age 55, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          100000,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(44,
                         self.retirement_calculator.calculate_savings_age())
        self.assertTrue(self.retirement_calculator.is_goal_reachable())

    def test_retirement_percent_savings(self):
        """Tests calculations at varying percent saved per year"""
        # Case: Percent Savings = 0.08
        # expected: savings age 82, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          0.08,
                                                          self.control_goal)
        self.assertEqual(82,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: 0.093 (edge)
        # expected: savings age 70, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          0.093,
                                                          self.control_goal)
        self.assertEqual(70,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: Percent Savings = 0.15
        # expected: savings age 44, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          0.15,
                                                          self.control_goal)
        self.assertEqual(44,
                         self.retirement_calculator.calculate_savings_age())
        self.assertTrue(self.retirement_calculator.is_goal_reachable())

    def test_retirement_goal(self):
        """Tests calculations at varying goals"""
        # Case: Goal = 1,000,000
        # expected: savings age 78, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          1000000)
        self.assertEqual(78,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: 907,200 (edge)
        # expected: savings age 70, goal not reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          907200)
        self.assertEqual(70,
                         self.retirement_calculator.calculate_savings_age())
        self.assertFalse(self.retirement_calculator.is_goal_reachable())

        # Case: 500,000
        # expected: savings age 39, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          500000)
        self.assertEqual(39,
                         self.retirement_calculator.calculate_savings_age())
        self.assertTrue(self.retirement_calculator.is_goal_reachable())

    def test_retirement_control(self):
        """Calculation with setUp variables"""
        # Case: Control
        # expected: savings age 55, goal is reachable
        self.retirement_calculator = RetirementCalculator(self.control_age,
                                                          self.control_salary,
                                                          self.control_percent_savings,
                                                          self.control_goal)
        self.assertEqual(55,
                         self.retirement_calculator.calculate_savings_age())
        self.assertTrue(self.retirement_calculator.is_goal_reachable())
    def test_retirement_salary(self):
        """Tests initializing the RetirementCalculator object at varying
        salaries """
        # Case: Salary is -500
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, -500, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Salary must be greater than 0 and no greater than "
            "500,000 USD.")

        # Case: Salary is 0
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, 0, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Salary must be greater than 0 and no greater than "
            "500,000 USD.")

        # Case: Salary is 1 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, 1, self.control_percent_savings,
            self.control_goal)

        # Case: Salary is 80000 (control)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Salary is 500000 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, 500000, self.control_percent_savings,
            self.control_goal)

        # Case: Salary is 500001
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, 500001, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Salary must be greater than 0 and no greater than "
            "500,000 USD.")

        # Case: Salary is 1000000
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, 1000000, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Salary must be greater than 0 and no greater than "
            "500,000 USD.")
    def test_retirement_age_init(self):
        """Tests initializing the RetirementCalculator object at varying
        ages. """
        # Case: Age is -500
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                -500, self.control_salary, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Age must be no less than 0 and no greater than 99 "
            "years.")

        # Case: Age is -1
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                -1, self.control_salary, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Age must be no less than 0 and no greater than 99 "
            "years.")

        # Case: Age is 0 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            0, self.control_salary, self.control_percent_savings,
            self.control_goal)

        # Case: Age is 30 (control)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Age is 99 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            99, self.control_salary, self.control_percent_savings,
            self.control_goal)

        # Case: Age is 100
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                100, self.control_salary, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Age must be no less than 0 and no greater than 99 "
            "years.")

        # Case: Age is 500
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                500, self.control_salary, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Age must be no less than 0 and no greater than 99 "
            "years.")
    def test_retirement_goal(self):
        """Tests initializing the RetirementCalculator object at varying
        goals """
        # Case: Goal is -1000
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary,
                self.control_percent_savings, -1000)
        self.assertEqual(
            str(context.exception),
            "Savings goal must be greater than 0 and no greater "
            "than 2,000,000 USD.")

        # Case: Goal is 0
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary,
                self.control_percent_savings, 0)
        self.assertEqual(
            str(context.exception),
            "Savings goal must be greater than 0 and no greater "
            "than 2,000,000 USD.")

        # Case: Goal is 1 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, 1)

        # Case: Goal is 700000 (control)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Goal is 2000000 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, 2000000)

        # Case: Goal is 2000001
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary,
                self.control_percent_savings, 2000001)
        self.assertEqual(
            str(context.exception),
            "Savings goal must be greater than 0 and no greater "
            "than 2,000,000 USD.")

        # Case: Goal is 10000000
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary,
                self.control_percent_savings, 10000000)
        self.assertEqual(
            str(context.exception),
            "Savings goal must be greater than 0 and no greater "
            "than 2,000,000 USD.")
    def test_retirement_percent_savings(self):
        """Tests initializing the RetirementCalculator object at varying
        percent saved per year """
        # Case: Savings per year is -10
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary, -10, self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Savings per year must be greater than 0 and less "
            "than 1.")

        # Case: Savings per year is 0
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary, 0, self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Savings per year must be greater than 0 and less "
            "than 1.")

        # Case: Savings per year is 0.01
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary, 0.01, self.control_goal)

        # Case: Savings per year is 0.12 (control)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Savings per year is 0.99
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary, 0.99, self.control_goal)

        # Case: Savings per year is 1
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary, 1, self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Savings per year must be greater than 0 and less "
            "than 1.")

        # Case: Savings per year is 10
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary, 10, self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Savings per year must be greater than 0 and less "
            "than 1.")
class TestRetirementInit(unittest.TestCase):
    def setUp(self):
        """Setup function that will apply to all other functions in the
        class. """
        # Age that must be valid
        self.control_age = 30
        # Salary that must be valid
        self.control_salary = 80000
        # Salary percentage saved per year that must be valid
        self.control_percent_savings = .12
        # Goal that must be valid
        self.control_goal = 700000

    def test_retirement_age_init(self):
        """Tests initializing the RetirementCalculator object at varying
        ages. """
        # Case: Age is -500
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                -500, self.control_salary, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Age must be no less than 0 and no greater than 99 "
            "years.")

        # Case: Age is -1
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                -1, self.control_salary, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Age must be no less than 0 and no greater than 99 "
            "years.")

        # Case: Age is 0 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            0, self.control_salary, self.control_percent_savings,
            self.control_goal)

        # Case: Age is 30 (control)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Age is 99 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            99, self.control_salary, self.control_percent_savings,
            self.control_goal)

        # Case: Age is 100
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                100, self.control_salary, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Age must be no less than 0 and no greater than 99 "
            "years.")

        # Case: Age is 500
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                500, self.control_salary, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Age must be no less than 0 and no greater than 99 "
            "years.")

    def test_retirement_salary(self):
        """Tests initializing the RetirementCalculator object at varying
        salaries """
        # Case: Salary is -500
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, -500, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Salary must be greater than 0 and no greater than "
            "500,000 USD.")

        # Case: Salary is 0
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, 0, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Salary must be greater than 0 and no greater than "
            "500,000 USD.")

        # Case: Salary is 1 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, 1, self.control_percent_savings,
            self.control_goal)

        # Case: Salary is 80000 (control)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Salary is 500000 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, 500000, self.control_percent_savings,
            self.control_goal)

        # Case: Salary is 500001
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, 500001, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Salary must be greater than 0 and no greater than "
            "500,000 USD.")

        # Case: Salary is 1000000
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, 1000000, self.control_percent_savings,
                self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Salary must be greater than 0 and no greater than "
            "500,000 USD.")

    def test_retirement_percent_savings(self):
        """Tests initializing the RetirementCalculator object at varying
        percent saved per year """
        # Case: Savings per year is -10
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary, -10, self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Savings per year must be greater than 0 and less "
            "than 1.")

        # Case: Savings per year is 0
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary, 0, self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Savings per year must be greater than 0 and less "
            "than 1.")

        # Case: Savings per year is 0.01
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary, 0.01, self.control_goal)

        # Case: Savings per year is 0.12 (control)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Savings per year is 0.99
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary, 0.99, self.control_goal)

        # Case: Savings per year is 1
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary, 1, self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Savings per year must be greater than 0 and less "
            "than 1.")

        # Case: Savings per year is 10
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary, 10, self.control_goal)
        self.assertEqual(
            str(context.exception),
            "Savings per year must be greater than 0 and less "
            "than 1.")

    def test_retirement_goal(self):
        """Tests initializing the RetirementCalculator object at varying
        goals """
        # Case: Goal is -1000
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary,
                self.control_percent_savings, -1000)
        self.assertEqual(
            str(context.exception),
            "Savings goal must be greater than 0 and no greater "
            "than 2,000,000 USD.")

        # Case: Goal is 0
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary,
                self.control_percent_savings, 0)
        self.assertEqual(
            str(context.exception),
            "Savings goal must be greater than 0 and no greater "
            "than 2,000,000 USD.")

        # Case: Goal is 1 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, 1)

        # Case: Goal is 700000 (control)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Goal is 2000000 (boundary)
        # expected: pass
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, 2000000)

        # Case: Goal is 2000001
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary,
                self.control_percent_savings, 2000001)
        self.assertEqual(
            str(context.exception),
            "Savings goal must be greater than 0 and no greater "
            "than 2,000,000 USD.")

        # Case: Goal is 10000000
        # expected: ValueError
        with self.assertRaises(ValueError) as context:
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary,
                self.control_percent_savings, 10000000)
        self.assertEqual(
            str(context.exception),
            "Savings goal must be greater than 0 and no greater "
            "than 2,000,000 USD.")

    def test_diff_types(self):
        """Tests initializing the Retirement Calculator object with
        erroneous types passed in. """
        # Case: String for age
        # expected: TypeError
        with self.assertRaises(TypeError):
            self.retirement_calculator = RetirementCalculator(
                "test", self.control_salary, self.control_percent_savings,
                self.control_goal)
        # Case: String for salary
        # expected: TypeError
        with self.assertRaises(TypeError):
            self.retirement_calculator = RetirementCalculator(
                self.control_age, "test", self.control_percent_savings,
                self.control_goal)
        # Case: String for savings per year
        # expected: TypeError
        with self.assertRaises(TypeError):
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary, "test",
                self.control_goal)
        # Case: String for goal
        # expected: TypeError
        with self.assertRaises(TypeError):
            self.retirement_calculator = RetirementCalculator(
                self.control_age, self.control_salary,
                self.control_percent_savings, "test")

    def test_getters(self):
        """Tests the getters of the RetirementCalculator class"""
        self.retirement_calculator = RetirementCalculator(
            self.control_age, self.control_salary,
            self.control_percent_savings, self.control_goal)

        # Case: Age
        # expected: 30
        self.assertEqual(self.control_age,
                         self.retirement_calculator.get_age())

        # Case: Salary
        # expected: 80,000
        self.assertEqual(self.control_salary,
                         self.retirement_calculator.get_salary())

        # Case: Percent Saved per Year
        # expected: 0.12
        self.assertEqual(self.control_percent_savings,
                         self.retirement_calculator.get_percent_savings())

        # Case: Goal
        # expected: 700,000
        self.assertEqual(self.control_goal,
                         self.retirement_calculator.get_goal())