def test_returns_false_when_at_least_one_check_is_not_met(self):
        condition = Condition(
            foo=True,
            bar=False,
            baz__gt=99,
            baz__lt=103,
            herp__gte=10,
            herp__lte=20,
            derp__ne=2,
            derp__in=[2, 43, 5, 8],
            derp__not_in=[8, 1000],
        )

        self.assertFalse(
            condition.check(foo=True, bar=False, baz=101, herp=21, derp=5))
    def test_returns_true_when_all_checks_are_met(self):
        condition = Condition(
            foo=True,
            bar=False,
            baz__gt=99,
            baz__lt=103,
            herp__gte=10,
            herp__lte=20,
            derp__ne=2,
            derp__in=[2, 43, 5, 8],
            derp__not_in=[8, 1000],
        )

        self.assertTrue(
            condition.check(foo=True, bar=False, baz=101, herp=20, derp=5))
    def test_can_check_set_membership_true(self):
        condition = Condition(foo__in=[1, 2, 3])

        self.assertTrue(condition.check(foo=3))
    def test_can_check_negation_false(self):
        condition = Condition(foo__ne="abc")

        self.assertFalse(condition.check(foo="abc"))
    def test_can_check_negation_true(self):
        condition = Condition(foo__ne="abc")

        self.assertTrue(condition.check(foo="def"))
    def test_can_check_less_than_or_equal_true_when_equal(self):
        condition = Condition(foo__lte=5)

        self.assertTrue(condition.check(foo=5))
    def test_can_check_less_than_or_equal_false(self):
        condition = Condition(foo__lte=5)

        self.assertFalse(condition.check(foo=8))
    def test_can_check_less_than_false_when_equal(self):
        condition = Condition(foo__lt=5)

        self.assertFalse(condition.check(foo=5))
    def test_can_check_less_than_true(self):
        condition = Condition(foo__lt=5)

        self.assertTrue(condition.check(foo=4))
    def test_can_check_greater_than_or_equal_false(self):
        condition = Condition(foo__gte=5)

        self.assertFalse(condition.check(foo=4))
    def test_can_check_greater_than_or_equal_true(self):
        condition = Condition(foo__gte=5)

        self.assertTrue(condition.check(foo=11))
    def test_can_check_equality_false(self):
        condition = Condition(foo=True)

        self.assertFalse(condition.check(foo=False))
    def test_can_check_equality_true(self):
        condition = Condition(foo=True)

        self.assertTrue(condition.check(foo=True))
    def test_can_check_negated_set_membership_false(self):
        condition = Condition(foo__not_in=[1, 2, 3])

        self.assertFalse(condition.check(foo=3))