예제 #1
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),
     ))
예제 #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_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,
     )
예제 #4
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,
     )
예제 #5
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=[],
         ),
     ])
예제 #6
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,
     )