Exemplo n.º 1
0
 def test_point_lower(self):
     _check_permutations(self, [
         Case(
             point(3),
             LowerLimit(5),
             union=PosNeg(LowerLimit(3), UpperLimit(3 - 1)),
             intersection=PosNeg(empty, unlimited),
         ),
         Case(
             point(4),
             LowerLimit(5),
             union=PosNeg(LowerLimit(4), UpperLimit(4 - 1)),
             intersection=PosNeg(empty, unlimited),
         ),
         Case(
             point(5),
             LowerLimit(5),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(point(5), unlimited),
         ),
         Case(
             point(6),
             LowerLimit(5),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(point(6), unlimited),
         ),
         Case(
             point(7),
             LowerLimit(5),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(point(7), unlimited),
         ),
     ])
Exemplo n.º 2
0
 def test_lower_upper(self):
     _check_permutations(self, [
         Case(
             LowerLimit(3),
             UpperLimit(5),
             union=PosNeg(unlimited, empty),
             intersection=PosNeg(Finite(3, 5), unlimited),
         ),
         Case(
             LowerLimit(4),
             UpperLimit(5),
             union=PosNeg(unlimited, empty),
             intersection=PosNeg(Finite(4, 5), unlimited),
         ),
         Case(
             LowerLimit(5),
             UpperLimit(5),
             union=PosNeg(unlimited, empty),
             intersection=PosNeg(point(5), unlimited),
         ),
         Case(
             LowerLimit(6),
             UpperLimit(5),
             union=PosNeg(unlimited, empty),
             intersection=PosNeg(empty, unlimited),
         ),
         Case(
             LowerLimit(7),
             UpperLimit(5),
             union=PosNeg(unlimited, empty),
             intersection=PosNeg(empty, unlimited),
         ),
     ])
Exemplo n.º 3
0
 def test_lower_lower(self):
     _check_permutations(self, [
         Case(
             LowerLimit(3),
             LowerLimit(5),
             union=PosNeg(LowerLimit(3), UpperLimit(3 - 1)),
             intersection=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
         ),
         Case(
             LowerLimit(4),
             LowerLimit(5),
             union=PosNeg(LowerLimit(4), UpperLimit(4 - 1)),
             intersection=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
         ),
         Case(
             LowerLimit(5),
             LowerLimit(5),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
         ),
         Case(
             LowerLimit(6),
             LowerLimit(5),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(LowerLimit(6), UpperLimit(6 - 1)),
         ),
         Case(
             LowerLimit(7),
             LowerLimit(5),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(LowerLimit(7), UpperLimit(7 - 1)),
         ),
     ])
Exemplo n.º 4
0
 def test_upper_unlimited(self):
     _check_permutations(self, [
         Case(
             UpperLimit(7),
             unlimited,
             union=PosNeg(unlimited, empty),
             intersection=PosNeg(UpperLimit(7), LowerLimit(7 + 1)),
         ),
     ])
Exemplo n.º 5
0
 def test_non_complex(self):
     _check_adaption_variant_cases(
         self,
         interval_of_unknown_class=unlimited_with_unlimited_inversion(),
         cases=[
             CaseWAdaptionVariants(
                 'constant F',
                 Negation(_constant_wo_interval(False)),
                 [
                     _without_adaption(_equals_interval(Unlimited())),
                     _w_max_upper_adaption(
                         20, _equals_interval(UpperLimit(20))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'constant T',
                 Negation(_constant_wo_interval(True)),
                 [
                     _without_adaption(_equals_interval(Empty())),
                     _w_max_upper_adaption(20, _equals_interval(Empty())),
                 ],
             ),
             CaseWAdaptionVariants(
                 'matcher w interval / point',
                 Negation(_MatcherWInterval(point(5))),
                 [
                     _without_adaption(_equals_negation_of(point(5))),
                     _w_max_upper_adaption(
                         20, _equals_interval(UpperLimit(20))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'matcher w interval / upper limit',
                 Negation(_MatcherWInterval(UpperLimit(10))),
                 [
                     _without_adaption(_equals_interval(
                         LowerLimit(10 + 1))),
                     _w_max_upper_adaption(
                         20, _equals_interval(Finite(10 + 1, 20))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'matcher wo interval',
                 Negation(_matcher_wo_interval()),
                 [
                     _without_adaption(
                         _equals_interval(
                             unlimited_with_unlimited_inversion())),
                     _w_max_upper_adaption(
                         20, _equals_interval(UpperLimit(20))),
                 ],
             ),
         ])
Exemplo n.º 6
0
 def runTest(self):
     _check_adaption_variant_cases(
         self,
         interval_of_unknown_class=UpperLimit(100),
         cases=[
             CaseWAdaptionVariants('wo interval', _matcher_wo_interval(), [
                 _without_adaption(_equals_interval(UpperLimit(100))),
                 _w_max_upper_adaption(
                     50, asrt_interval.matches_upper_limit(50)),
             ]),
         ],
     )
Exemplo n.º 7
0
 def test_lower_finite(self):
     _check_permutations(self, [
         Case(
             LowerLimit(3),
             Finite(5, 9),
             union=PosNeg(LowerLimit(3), UpperLimit(3 - 1)),
             intersection=PosNeg(Finite(5, 9), unlimited),
         ),
         Case(
             LowerLimit(4),
             Finite(5, 9),
             union=PosNeg(LowerLimit(4), UpperLimit(4 - 1)),
             intersection=PosNeg(Finite(5, 9), unlimited),
         ),
         Case(
             LowerLimit(5),
             Finite(5, 9),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(Finite(5, 9), unlimited),
         ),
         Case(
             LowerLimit(6),
             Finite(5, 9),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(Finite(6, 9), unlimited),
         ),
         Case(
             LowerLimit(7),
             Finite(5, 9),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(Finite(7, 9), unlimited),
         ),
         Case(
             LowerLimit(8),
             Finite(5, 9),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(Finite(8, 9), unlimited),
         ),
         Case(
             LowerLimit(9),
             Finite(5, 9),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(point(9), unlimited),
         ),
         Case(
             LowerLimit(10),
             Finite(5, 9),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(empty, unlimited),
         ),
         Case(
             LowerLimit(11),
             Finite(5, 9),
             union=PosNeg(LowerLimit(5), UpperLimit(5 - 1)),
             intersection=PosNeg(empty, unlimited),
         ),
     ])
Exemplo n.º 8
0
 def test_lower_empty(self):
     _check_permutations(self, [
         Case(
             LowerLimit(7),
             empty,
             union=PosNeg(LowerLimit(7), UpperLimit(7 - 1)),
             intersection=PosNeg(empty, unlimited),
         ),
     ])
Exemplo n.º 9
0
    def ret_val(x: IntIntervalWInversion) -> IntIntervalWInversion:
        if x.is_empty:
            return x

        if x.lower is None:
            if x.upper is None:
                # both None
                return UpperLimit(max_upper)
            else:
                # lower None, upper not None
                return UpperLimit(min(x.upper, max_upper))
        else:
            if x.upper is None:
                # lower not None, upper None
                return (Empty() if x.lower > max_upper else Finite(
                    x.lower, max_upper))
            else:
                # lower not None, upper not None
                return (Empty() if x.lower > max_upper else Finite(
                    x.lower, min(x.upper, max_upper)))
Exemplo n.º 10
0
 def runTest(self):
     _check_adaption_variant_cases(
         self,
         interval_of_unknown_class=point(72),
         cases=[
             CaseWAdaptionVariants(
                 'point',
                 _MatcherWInterval(point(5)),
                 [
                     _without_adaption(_equals_interval(point(5))),
                     _w_max_upper_adaption(3, _equals_interval(Empty())),
                 ],
             ),
             CaseWAdaptionVariants(
                 'upper limit',
                 _MatcherWInterval(UpperLimit(12)),
                 [
                     _without_adaption(_equals_interval(UpperLimit(12))),
                     _w_max_upper_adaption(
                         10, _equals_interval(UpperLimit(10))),
                 ],
             ),
         ])
Exemplo n.º 11
0
def _of(lower: Optional[int], upper: Optional[int]) -> IntIntervalWInversion:
    """
    lower < upper, if both are not None
    """
    if lower is None:
        if upper is None:
            return Unlimited()
        else:
            return UpperLimit(upper)
    else:
        if upper is None:
            return LowerLimit(lower)
        else:
            return Finite(lower, upper)
Exemplo n.º 12
0
 def runTest(self):
     _check_adaption_variant_cases(
         self,
         interval_of_unknown_class=point(72),
         cases=[
             CaseWAdaptionVariants(
                 str(False),
                 _constant_wo_interval(False),
                 [
                     _without_adaption(_equals_interval(Empty())),
                     _w_max_upper_adaption(50, _equals_interval(Empty())),
                 ],
             ),
             CaseWAdaptionVariants(
                 str(True),
                 _constant_wo_interval(True),
                 [
                     _without_adaption(_equals_interval(Unlimited())),
                     _w_max_upper_adaption(
                         50, _equals_interval(UpperLimit(50))),
                 ],
             ),
         ])
Exemplo n.º 13
0
 def test_double_negation(self):
     _check_adaption_variant_cases(
         self,
         interval_of_unknown_class=unlimited_with_unlimited_inversion(),
         cases=[
             CaseWAdaptionVariants(
                 'constant F',
                 Negation(Negation(_constant_wo_interval(False))),
                 [
                     _without_adaption(_equals_interval(Empty())),
                     _w_max_upper_adaption(20, _equals_interval(Empty())),
                 ],
             ),
             CaseWAdaptionVariants(
                 'constant T',
                 Negation(Negation(_constant_wo_interval(True))),
                 [
                     _without_adaption(_equals_interval(Unlimited())),
                     _w_max_upper_adaption(
                         20, _equals_interval(UpperLimit(20))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'matcher w interval / point',
                 Negation(Negation(_MatcherWInterval(point(5)))),
                 [
                     _without_adaption(_equals_interval(point(5))),
                     _w_max_upper_adaption(0, _equals_interval(Empty())),
                 ],
             ),
             CaseWAdaptionVariants(
                 'matcher w interval / upper limit',
                 Negation(Negation(_MatcherWInterval(UpperLimit(10)))),
                 [
                     _without_adaption(_equals_interval(UpperLimit(10))),
                     _w_max_upper_adaption(5, _equals_interval(
                         UpperLimit(5))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'matcher wo interval',
                 Negation(Negation(_matcher_wo_interval())),
                 [
                     _without_adaption(
                         _equals_interval(
                             unlimited_with_unlimited_inversion())),
                     _w_max_upper_adaption(
                         20, _equals_interval(UpperLimit(20))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'conjunction, all w interval',
                 Negation(
                     Negation(
                         Conjunction([
                             _MatcherWInterval(UpperLimit(10)),
                             _MatcherWInterval(UpperLimit(10 + 5)),
                         ]))),
                 [
                     _without_adaption(_equals_interval(UpperLimit(10))),
                     _w_max_upper_adaption(5, _equals_interval(
                         UpperLimit(5))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'conjunction, one w unlimited-negation',
                 Negation(
                     Negation(
                         Conjunction([
                             _MatcherWInterval(UpperLimit(10)),
                             _matcher_wo_interval(),
                         ]))),
                 [
                     _without_adaption(_equals_interval(UpperLimit(10))),
                     _w_max_upper_adaption(5, _equals_interval(
                         UpperLimit(5))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'disjunction, all w interval',
                 Negation(
                     Negation(
                         Disjunction([
                             _MatcherWInterval(UpperLimit(10)),
                             _MatcherWInterval(UpperLimit(10 + 5)),
                         ]))),
                 [
                     _without_adaption(_equals_interval(
                         UpperLimit(10 + 5))),
                     _w_max_upper_adaption(5, _equals_interval(
                         UpperLimit(5))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'disjunction, one w unlimited-negation',
                 Negation(
                     Negation(
                         Disjunction([
                             _MatcherWInterval(UpperLimit(10)),
                             _matcher_wo_interval(),
                         ]))),
                 [
                     _without_adaption(_equals_interval(Unlimited())),
                     _w_max_upper_adaption(5, _equals_interval(
                         UpperLimit(5))),
                 ],
             ),
         ])
Exemplo n.º 14
0
 def test_upper_finite(self):
     _check_permutations(self, [
         Case(
             UpperLimit(3),
             Finite(5, 9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(empty, unlimited),
         ),
         Case(
             UpperLimit(4),
             Finite(5, 9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(empty, unlimited),
         ),
         Case(
             UpperLimit(5),
             Finite(5, 9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(point(5), unlimited),
         ),
         Case(
             UpperLimit(6),
             Finite(5, 9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(Finite(5, 6), unlimited),
         ),
         Case(
             UpperLimit(7),
             Finite(5, 9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(Finite(5, 7), unlimited),
         ),
         Case(
             UpperLimit(8),
             Finite(5, 9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(Finite(5, 8), unlimited),
         ),
         Case(
             UpperLimit(9),
             Finite(5, 9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(Finite(5, 9), unlimited),
         ),
         Case(
             UpperLimit(10),
             Finite(5, 9),
             union=PosNeg(UpperLimit(10), LowerLimit(10 + 1)),
             intersection=PosNeg(Finite(5, 9), unlimited),
         ),
         Case(
             UpperLimit(11),
             Finite(5, 9),
             union=PosNeg(UpperLimit(11), LowerLimit(11 + 1)),
             intersection=PosNeg(Finite(5, 9), unlimited),
         ),
     ])
Exemplo n.º 15
0
 def test_upper_upper(self):
     _check_permutations(self, [
         Case(
             UpperLimit(3),
             UpperLimit(5),
             union=PosNeg(UpperLimit(5), LowerLimit(5 + 1)),
             intersection=PosNeg(UpperLimit(3), LowerLimit(3 + 1)),
         ),
         Case(
             UpperLimit(4),
             UpperLimit(5),
             union=PosNeg(UpperLimit(5), LowerLimit(5 + 1)),
             intersection=PosNeg(UpperLimit(4), LowerLimit(4 + 1)),
         ),
         Case(
             UpperLimit(5),
             UpperLimit(5),
             union=PosNeg(UpperLimit(5), LowerLimit(5 + 1)),
             intersection=PosNeg(UpperLimit(5), LowerLimit(5 + 1)),
         ),
         Case(
             UpperLimit(6),
             UpperLimit(5),
             union=PosNeg(UpperLimit(6), LowerLimit(6 + 1)),
             intersection=PosNeg(UpperLimit(5), LowerLimit(5 + 1)),
         ),
         Case(
             UpperLimit(7),
             UpperLimit(5),
             union=PosNeg(UpperLimit(7), LowerLimit(7 + 1)),
             intersection=PosNeg(UpperLimit(5), LowerLimit(5 + 1)),
         ),
     ])
Exemplo n.º 16
0
 def test_negation_of_disjunction_should_distribute_negation(self):
     _check_adaption_variant_cases(
         self,
         interval_of_unknown_class=unlimited_with_unlimited_inversion(),
         cases=[
             CaseWAdaptionVariants(
                 'two operands, all w normal negation',
                 Negation(
                     Disjunction([
                         _MatcherWInterval(UpperLimit(10)),
                         _MatcherWInterval(UpperLimit(10 + 5)),
                     ])),
                 [
                     _without_adaption(
                         _equals_interval(LowerLimit(10 + 5 + 1))),
                     _w_max_upper_adaption(
                         20, _equals_interval(Finite(10 + 5 + 1, 20))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'two operands, one w unlimited-w-unlimited-negation',
                 Negation(
                     Disjunction([
                         _MatcherWInterval(UpperLimit(0)),
                         _matcher_wo_interval(),
                     ])),
                 [
                     _without_adaption(_equals_interval(LowerLimit(0 + 1))),
                     _w_max_upper_adaption(
                         20, _equals_interval(Finite(0 + 1, 20))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'nested negation of disjunction, one w unlimited-w-unlimited-negation',
                 Negation(
                     Disjunction([
                         Negation(
                             Disjunction([
                                 _MatcherWInterval(UpperLimit(0)),
                                 _matcher_wo_interval(),
                             ])),
                         _MatcherWInterval(UpperLimit(10 - 1)),
                     ])),
                 [
                     _without_adaption(_equals_interval(LowerLimit(10))),
                     _w_max_upper_adaption(
                         20, _equals_interval(Finite(10, 20))),
                 ],
             ),
             CaseWAdaptionVariants(
                 'nested negation of conjunction, one w unlimited-w-unlimited-negation',
                 Negation(
                     Disjunction([
                         Negation(
                             Conjunction([
                                 _MatcherWInterval(UpperLimit(20)),
                                 _matcher_wo_interval(),
                             ])),
                         _MatcherWInterval(UpperLimit(10)),
                     ])),
                 [
                     _without_adaption(_equals_interval(Finite(10 + 1,
                                                               20))),
                     _w_max_upper_adaption(
                         15, _equals_interval(Finite(10 + 1, 15))),
                 ],
             ),
         ])
Exemplo n.º 17
0
 def test__unknown_class_is_limited(self):
     _check_adaption_variant_cases(
         self,
         interval_of_unknown_class=UpperLimit(100),
         cases=[
             CaseWAdaptionVariants(
                 'two operands',
                 Conjunction([
                     _MatcherWInterval(Finite(-72, 69 + 5)),
                     _MatcherWInterval(Finite(-72 - 9, 69)),
                 ]),
                 [
                     _without_adaption(_equals_interval(Finite(-72, 69))),
                     _w_max_upper_adaption(
                         50, asrt_interval.matches_finite(-72, 50)),
                 ],
             ),
             CaseWAdaptionVariants(
                 'two operands, one wo interval',
                 Conjunction([
                     _MatcherWInterval(Finite(-70, 200)),
                     _matcher_wo_interval(),
                 ]),
                 [
                     _without_adaption(
                         asrt_interval.matches_finite(-70, 100)),
                     _w_max_upper_adaption(
                         50, asrt_interval.matches_finite(-70, 50)),
                 ],
             ),
             CaseWAdaptionVariants(
                 'two operands, all wo interval',
                 Conjunction([
                     _matcher_wo_interval(),
                     _matcher_wo_interval(),
                 ]),
                 [
                     _without_adaption(
                         asrt_interval.matches_upper_limit(100)),
                     _w_max_upper_adaption(
                         200, asrt_interval.matches_upper_limit(100)),
                 ],
             ),
             CaseWAdaptionVariants(
                 'three operands',
                 Conjunction([
                     _MatcherWInterval(LowerLimit(-3)),
                     _MatcherWInterval(LowerLimit(-11)),
                     _MatcherWInterval(LowerLimit(-7)),
                 ]),
                 [
                     _without_adaption(_equals_interval(LowerLimit(-3))),
                     _w_max_upper_adaption(
                         50, asrt_interval.matches_finite(-3, 50)),
                 ],
             ),
             CaseWAdaptionVariants(
                 'three operands, one wo interval',
                 Conjunction([
                     _MatcherWInterval(LowerLimit(-3)),
                     _matcher_wo_interval(),
                     _MatcherWInterval(LowerLimit(-7)),
                 ]),
                 [
                     _without_adaption(_equals_interval(Finite(-3, 100))),
                     _w_max_upper_adaption(
                         50, asrt_interval.matches_finite(-3, 50)),
                 ],
             ),
         ])
Exemplo n.º 18
0
 def test_point_upper(self):
     _check_permutations(self, [
         Case(
             point(-3),
             UpperLimit(0),
             union=PosNeg(UpperLimit(0), LowerLimit(0 + 1)),
             intersection=PosNeg(point(-3), unlimited),
         ),
         Case(
             point(6),
             UpperLimit(9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(point(6), unlimited),
         ),
         Case(
             point(7),
             UpperLimit(9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(point(7), unlimited),
         ),
         Case(
             point(8),
             UpperLimit(9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(point(8), unlimited),
         ),
         Case(
             point(9),
             UpperLimit(9),
             union=PosNeg(UpperLimit(9), LowerLimit(9 + 1)),
             intersection=PosNeg(point(9), unlimited),
         ),
         Case(
             point(10),
             UpperLimit(9),
             union=PosNeg(UpperLimit(10), LowerLimit(10 + 1)),
             intersection=PosNeg(empty, unlimited),
         ),
         Case(
             point(11),
             UpperLimit(9),
             union=PosNeg(UpperLimit(11), LowerLimit(11 + 1)),
             intersection=PosNeg(empty, unlimited),
         ),
     ])