def test_two_calls_compute_budgets_raise_exception(self): budget_accountant = PLDBudgetAccountant(total_epsilon=1, total_delta=1e-6) budget_accountant.request_budget(mechanism_type=MechanismType.LAPLACE) budget_accountant.compute_budgets() with self.assertRaises(Exception): # Budget can be computed only once. budget_accountant.compute_budgets()
def test_request_after_compute_raise_exception(self): budget_accountant = PLDBudgetAccountant(total_epsilon=1, total_delta=1e-6) budget_accountant.request_budget(mechanism_type=MechanismType.LAPLACE) budget_accountant.compute_budgets() with self.assertRaises(Exception): # Budget can not be requested after it has been already computed. budget_accountant.request_budget( mechanism_type=MechanismType.LAPLACE)
def test_invalid_gaussian_delta(self): accountant = PLDBudgetAccountant(total_epsilon=1, total_delta=0) with self.assertRaises(AssertionError): accountant.request_budget(MechanismType.GAUSSIAN)
def test_compute_budgets_none_noise(self): accountant = PLDBudgetAccountant(total_epsilon=3, total_delta=1e-5) accountant.compute_budgets() self.assertEqual(None, accountant.minimum_noise_std)
def test_invalid_delta(self): with self.assertRaises(ValueError): PLDBudgetAccountant(total_epsilon=1, total_delta=-1e-5)