def test_min_operator_non_probability_outcome(self): probability_outcome = ProbabilityOutcome( value=1234567890, constraint_set=self._constraint_sets[1]) for name, value in self._non_probability_outcome.items(): with self.subTest(name): with self.assertRaises(TypeError): _ = probability_outcome.min_operator(value)
def test_and_non_probability_outcome(self): probability_outcome = ProbabilityOutcome( value=1, constraint_set=self._constraint_sets[1]) for name, value in self._non_probability_outcome.items(): with self.subTest(name): with self.assertRaises(TypeError): _ = probability_outcome.__and__(value)
def test_hash_not_the_same_value(self, values): probability_outcome_one = ProbabilityOutcome( value=values[0], constraint_set=self._constraint_sets[0]) probability_outcome_two = ProbabilityOutcome( value=values[1], constraint_set=self._constraint_sets[0]) self.assertNotEqual(hash(probability_outcome_one), hash(probability_outcome_two))
def test_is_possible(self, constraint_is_possible: bool): self._constraint_sets[ 0].is_possible.return_value = constraint_is_possible probability_outcome = ProbabilityOutcome( value=1, constraint_set=self._constraint_sets[0]) self.assertEqual(constraint_is_possible, probability_outcome.is_possible())
def test_not(self, value): probability_outcome = ProbabilityOutcome( value=value, constraint_set=self._constraint_sets[1]) abs_probability_outcome = probability_outcome.not_operator() self.assertEqual( 0 if value > 0 else 1, abs_probability_outcome.value, )
def test_floordiv_div_zero(self, value_one: int): probability_outcome_one = ProbabilityOutcome( value=value_one, constraint_set=self._constraint_sets[0]) probability_outcome_two = ProbabilityOutcome( value=0, constraint_set=self._constraint_sets[1]) with self.assertRaises(ZeroDivisionError): _ = probability_outcome_one // probability_outcome_two
def test_sub(self): probability_outcome_one = ProbabilityOutcome( value=1234567890, constraint_set=self._constraint_sets[0]) probability_outcome_two = ProbabilityOutcome( value=987654321, constraint_set=self._constraint_sets[1]) new_probability_outcome = probability_outcome_one - probability_outcome_two self.assertEqual(1234567890 - 987654321, new_probability_outcome.value) self.assertEqual(str(self._constraint_sets[-1]), str(new_probability_outcome.constraint_set))
def test_sub(self, value_one: int, value_two: int): probability_outcome_one = ProbabilityOutcome( value=value_one, constraint_set=self._constraint_sets[0]) probability_outcome_two = ProbabilityOutcome( value=value_two, constraint_set=self._constraint_sets[1]) new_probability_outcome = probability_outcome_one - probability_outcome_two self.assertEqual(value_one - value_two, new_probability_outcome.value) self.assertEqual(str(self._constraint_sets[-1]), str(new_probability_outcome.constraint_set))
def test_floordiv(self, value_one: int, value_two: int): assume(value_two != 0) probability_outcome_one = ProbabilityOutcome( value=value_one, constraint_set=self._constraint_sets[0]) probability_outcome_two = ProbabilityOutcome( value=value_two, constraint_set=self._constraint_sets[1]) new_probability_outcome = probability_outcome_one // probability_outcome_two self.assertEqual(value_one // value_two, new_probability_outcome.value) self.assertEqual(str(self._constraint_sets[-1]), str(new_probability_outcome.constraint_set))
def test_or(self, value_one: int, value_two: int): probability_outcome_one = ProbabilityOutcome( value=value_one, constraint_set=self._constraint_sets[0]) probability_outcome_two = ProbabilityOutcome( value=value_two, constraint_set=self._constraint_sets[1]) new_probability_outcome = probability_outcome_one.__or__( probability_outcome_two) self.assertEqual(1 if value_one > 0 or value_two > 0 else 0, new_probability_outcome.value) self.assertEqual(str(self._constraint_sets[-1]), str(new_probability_outcome.constraint_set))
def test_min_operator(self): probability_outcome_one = ProbabilityOutcome( value=1234567890, constraint_set=self._constraint_sets[0]) probability_outcome_two = ProbabilityOutcome( value=987654321, constraint_set=self._constraint_sets[1]) new_probability_outcome = probability_outcome_one.min_operator( probability_outcome_two) self.assertEqual(min(1234567890, 987654321), new_probability_outcome.value) self.assertEqual(str(self._constraint_sets[-1]), str(new_probability_outcome.constraint_set))
def test_min_operator(self, value_one: int, value_two: int): probability_outcome_one = ProbabilityOutcome( value=value_one, constraint_set=self._constraint_sets[0]) probability_outcome_two = ProbabilityOutcome( value=value_two, constraint_set=self._constraint_sets[1]) new_probability_outcome = probability_outcome_one.min_operator( probability_outcome_two) self.assertEqual(min(value_one, value_two), new_probability_outcome.value) self.assertEqual(str(self._constraint_sets[-1]), str(new_probability_outcome.constraint_set))
def test_abs(self, value): probability_outcome = ProbabilityOutcome( value=value, constraint_set=self._constraint_sets[1]) abs_probability_outcome = abs(probability_outcome) self.assertEqual( abs(value), abs_probability_outcome.value, )
def test_type_error_on_non_int_value(self): for name, value in self._non_probability_outcome.items(): if name == "int": continue with self.subTest(name): with self.assertRaises(TypeError): _ = ProbabilityOutcome( value=value, constraint_set=self._constraint_sets[0])
def create_empty(self, value: int) -> IProbabilityOutcome: return ProbabilityOutcome( value, self._constraint_set_factory.create_constraint_set())
def test_constraint_set(self, index: int): probability_outcome = ProbabilityOutcome( value=1, constraint_set=self._constraint_sets[index]) self.assertEqual(self._constraint_sets[index], probability_outcome.constraint_set)
def test_value(self, int_value: int): probability_outcome = ProbabilityOutcome( value=int_value, constraint_set=self._constraint_sets[0]) self.assertEqual(int_value, probability_outcome.value)
def test_repr(self, value): probability_outcome = ProbabilityOutcome( value=value, constraint_set=self._constraint_sets[1]) self.assertEqual( f"ProbabilityOutcome: value={value}, constraint_set={self._constraint_sets[1]}", repr(probability_outcome))
def test_eq_false_constraint_set(self, value): probability_outcome_one = ProbabilityOutcome( value=value, constraint_set=self._constraint_sets[0]) probability_outcome_two = ProbabilityOutcome( value=value, constraint_set=self._constraint_sets[1]) self.assertNotEqual(probability_outcome_one, probability_outcome_two)
def test_eq_true_same_object(self): probability_outcome = ProbabilityOutcome( value=1, constraint_set=self._constraint_sets[0]) self.assertEqual(probability_outcome, probability_outcome)