コード例 #1
0
def _cases_for_lower_limit(model_w_10_elems: ModelAndArguments,
                           lower_limit: IntSymbol):
    return ([
        model_w_10_elems.case__n(
            [lower_limit.value(5)],
            max_num_lines_from_iter=10,
            expected_output_lines=_from_to(5, 10),
        ),
        model_w_10_elems.case__n(
            [lower_limit.value(10)],
            max_num_lines_from_iter=10,
            expected_output_lines=[10],
        ),
        model_w_10_elems.case__n(
            [lower_limit.value(10 + 1)],
            max_num_lines_from_iter=10,
            expected_output_lines=[],
        ),
    ] + model_w_10_elems.equivalent_cases__n(
        [
            [lower_limit.value(-2)],
            [lower_limit.value(1)],
        ],
        max_num_lines_from_iter=10,
        expected_output_lines=_from_to(1, 10),
    ))
コード例 #2
0
 def test_point(self):
     int_sym = IntSymbol('eq_value')
     arguments = tr.filter_line_num(
         im_args.comparison(comparators.EQ,
                            SymbolReferenceWReferenceSyntax(int_sym.name)))
     m10 = ModelAndArguments(tr.model_lines(10), arguments)
     tr.check_cases__named(self, [
         m10.case__n(
             [int_sym.value(1)],
             max_num_lines_from_iter=1,
             expected_output_lines=[1],
         ),
         m10.case__n(
             [int_sym.value(5)],
             max_num_lines_from_iter=5,
             expected_output_lines=[5],
         ),
         m10.case__n(
             [int_sym.value(10)],
             max_num_lines_from_iter=10,
             expected_output_lines=[10],
         ),
         m10.case__n(
             [int_sym.value(11)],
             max_num_lines_from_iter=10,
             expected_output_lines=[],
         ),
     ] + m10.equivalent_cases__n(
         [
             [int_sym.value(0)],
             [int_sym.value(-1)],
         ],
         max_num_lines_from_iter=0,
         expected_output_lines=[],
     ))
コード例 #3
0
 def test_upper_limit(self):
     upper_limit = IntSymbol('UPPER_LIMIT')
     arguments = tr.filter_line_num(
         im_args.comparison(
             comparators.LTE,
             SymbolReferenceWReferenceSyntax(upper_limit.name)))
     m10 = ModelAndArguments(tr.model_lines(10), arguments)
     tr.check_cases__named(self, [
         m10.case__n(
             [upper_limit.value(-3)],
             max_num_lines_from_iter=0,
             expected_output_lines=[],
         ),
         m10.case__n(
             [upper_limit.value(1)],
             max_num_lines_from_iter=1,
             expected_output_lines=[1],
         ),
         m10.case__n(
             [upper_limit.value(5)],
             max_num_lines_from_iter=5,
             expected_output_lines=_from_to(1, 5),
         ),
     ] + m10.equivalent_cases__n(
         [
             [upper_limit.value(10)],
             [upper_limit.value(10 + 1)],
         ],
         max_num_lines_from_iter=10,
         expected_output_lines=_from_to(1, 10),
     ))
コード例 #4
0
 def test_negation_of_disjunction(self):
     # ARRANGE #
     model = [
         '1st\n',
         '2nd\n',
         '3rd\n',
     ]
     neg_open_lower_limit = IntSymbol('lower_limit')
     arguments = tr.filter_lm(
         arg_rend.negation(
             arg_rend.within_paren(
                 arg_rend.disjunction([
                     lm_arg.Contents(
                         sm_args.Equals(FileOrString.of_string('2nd'))),
                     lm_arg.LineNum2(
                         im_args.comparison(
                             comparators.GT,
                             SymbolReferenceWReferenceSyntax(
                                 neg_open_lower_limit.name))),
                 ]))))
     model_and_args = ModelAndArguments(model, arguments)
     # ACT & ASSET #
     tr.check_cases__named(
         self,
         [
             model_and_args.case__n(
                 [neg_open_lower_limit.value(1)],
                 max_num_lines_from_iter=3,
                 expected_output_lines=[1],
             ),
             model_and_args.case__n(
                 [neg_open_lower_limit.value(2)],
                 max_num_lines_from_iter=3,
                 expected_output_lines=[1],
             ),
             model_and_args.case__n(
                 [neg_open_lower_limit.value(3)],
                 max_num_lines_from_iter=3,
                 expected_output_lines=[1, 3],
             ),
         ],
     )
コード例 #5
0
 def test_lower_limit(self):
     lower_limit = IntSymbol('LOWER_LIMIT')
     arguments = tr.filter_line_num(
         im_args.comparison(
             comparators.GTE,
             SymbolReferenceWReferenceSyntax(lower_limit.name)))
     m10 = ModelAndArguments(tr.model_lines(10), arguments)
     cases = _cases_for_lower_limit(m10, lower_limit)
     tr.check_cases__named(
         self,
         cases,
     )
コード例 #6
0
 def test_disjunction(self):
     # ARRANGE #
     model = [
         '1st\n',
         '2nd\n',
         '3rd\n',
     ]
     num_model_elements = len(model)
     upper_limit = IntSymbol('upper_limit')
     arguments = tr.filter_lm__within_parens(
         arg_rend.disjunction([
             lm_arg.Contents(sm_args.Equals(FileOrString.of_string('2nd'))),
             lm_arg.LineNum2(
                 im_args.comparison(
                     comparators.LTE,
                     SymbolReferenceWReferenceSyntax(upper_limit.name))),
         ]))
     model_and_args = ModelAndArguments(model, arguments)
     # ACT & ASSET #
     tr.check_cases__named(
         self,
         [
             model_and_args.case__n(
                 [upper_limit.value(-3)],
                 max_num_lines_from_iter=num_model_elements,
                 expected_output_lines=[2],
             ),
             model_and_args.case__n(
                 [upper_limit.value(2)],
                 max_num_lines_from_iter=num_model_elements,
                 expected_output_lines=_from_to(1, 2),
             ),
             model_and_args.case__n(
                 [upper_limit.value(10)],
                 max_num_lines_from_iter=num_model_elements,
                 expected_output_lines=_from_to(1, 3),
             ),
         ],
     )
コード例 #7
0
 def test_negation_of_line_matcher(self):
     lower_limit = IntSymbol('NEGATED_UPPER_LIMIT__OPEN')
     arguments = tr.filter_line_num(
         arg_rend.negation(
             im_args.comparison(
                 comparators.LT,
                 SymbolReferenceWReferenceSyntax(lower_limit.name))))
     m10 = ModelAndArguments(tr.model_lines(10), arguments)
     cases = _cases_for_lower_limit(m10, lower_limit)
     tr.check_cases__named(
         self,
         cases,
     )
コード例 #8
0
 def test_finite_w_conjunction_of_integer_matchers(self):
     # ARRANGE #
     lower_limit = IntSymbol('lower_limit')
     upper_limit = IntSymbol('upper_limit')
     arguments = tr.filter_lm(
         lm_arg.LineNum2(
             arg_rend.within_paren(
                 arg_rend.conjunction([
                     im_args.comparison(
                         comparators.GTE,
                         SymbolReferenceWReferenceSyntax(lower_limit.name)),
                     im_args.comparison(
                         comparators.LTE,
                         SymbolReferenceWReferenceSyntax(upper_limit.name)),
                 ]))))
     m10 = ModelAndArguments(tr.model_lines(10), arguments)
     cases = self._finite_w_conjunction__cases(m10, lower_limit,
                                               upper_limit)
     # ACT & ASSET #
     tr.check_cases__named(
         self,
         cases,
     )
コード例 #9
0
 def _finite_w_conjunction__cases(
     model_w_10_elems: ModelAndArguments,
     lower_limit: IntSymbol,
     upper_limit: IntSymbol,
 ) -> Sequence[NameAndValue[Case]]:
     return ([
         model_w_10_elems.case__n(
             [lower_limit.value(-2),
              upper_limit.value(1)],
             max_num_lines_from_iter=1,
             expected_output_lines=[1],
         ),
         model_w_10_elems.case__n(
             [lower_limit.value(-2),
              upper_limit.value(5)],
             max_num_lines_from_iter=5,
             expected_output_lines=_from_to(1, 5),
         ),
         model_w_10_elems.case__n(
             [lower_limit.value(-2),
              upper_limit.value(10)],
             max_num_lines_from_iter=10,
             expected_output_lines=_from_to(1, 10),
         ),
         model_w_10_elems.case__n(
             [lower_limit.value(-2),
              upper_limit.value(10 + 1)],
             max_num_lines_from_iter=10,
             expected_output_lines=_from_to(1, 10),
         ),
         model_w_10_elems.case__n(
             [lower_limit.value(1),
              upper_limit.value(3)],
             max_num_lines_from_iter=3,
             expected_output_lines=_from_to(1, 3),
         ),
         model_w_10_elems.case__n(
             [lower_limit.value(2),
              upper_limit.value(3)],
             max_num_lines_from_iter=3,
             expected_output_lines=_from_to(2, 3),
         ),
         model_w_10_elems.case__n(
             [lower_limit.value(10),
              upper_limit.value(10 + 1)],
             max_num_lines_from_iter=10,
             expected_output_lines=[10],
         ),
         model_w_10_elems.case__n(
             [lower_limit.value(10 + 1),
              upper_limit.value(10 + 2)],
             max_num_lines_from_iter=10,
             expected_output_lines=[],
         ),
     ] + model_w_10_elems.equivalent_cases__n(
         [
             [lower_limit.value(1 - 2),
              upper_limit.value(10)],
             [lower_limit.value(1 - 2),
              upper_limit.value(10 + 1)],
             [lower_limit.value(1),
              upper_limit.value(10)],
             [lower_limit.value(1),
              upper_limit.value(10 + 2)],
         ],
         max_num_lines_from_iter=10,
         expected_output_lines=_from_to(1, 10),
     ) + model_w_10_elems.equivalent_cases__n(
         [
             [lower_limit.value(-2),
              upper_limit.value(0)],
             [lower_limit.value(5),
              upper_limit.value(3)],
         ],
         max_num_lines_from_iter=0,
         expected_output_lines=[],
     ))
コード例 #10
0
 def test_disjunction_of_line_matchers(self):
     eq_1 = IntSymbol('EQ_1')
     eq_2 = IntSymbol('EQ_2')
     arguments = tr.filter_lm__within_parens(
         arg_rend.disjunction([
             lm_arg.LineNum2(
                 im_args.comparison(
                     comparators.EQ,
                     SymbolReferenceWReferenceSyntax(eq_1.name))),
             lm_arg.LineNum2(
                 im_args.comparison(
                     comparators.EQ,
                     SymbolReferenceWReferenceSyntax(eq_2.name))),
         ]))
     m10 = ModelAndArguments(tr.model_lines(10), arguments)
     tr.check_cases__named(self, [
         m10.case__n(
             [eq_1.value(-10), eq_2.value(-5)],
             max_num_lines_from_iter=0,
             expected_output_lines=[],
         ),
         m10.case__n(
             [eq_1.value(-10), eq_2.value(5)],
             max_num_lines_from_iter=5,
             expected_output_lines=[5],
         ),
         m10.case__n(
             [eq_1.value(-10), eq_2.value(10 + 1)],
             max_num_lines_from_iter=10,
             expected_output_lines=[],
         ),
         m10.case__n(
             [eq_1.value(2), eq_2.value(5)],
             max_num_lines_from_iter=5,
             expected_output_lines=[2, 5],
         ),
         m10.case__n(
             [eq_1.value(2), eq_2.value(10 + 1)],
             max_num_lines_from_iter=10,
             expected_output_lines=[2],
         ),
         m10.case__n(
             [eq_1.value(10 + 1), eq_2.value(10 + 2)],
             max_num_lines_from_iter=10,
             expected_output_lines=[],
         ),
     ])