Example #1
0
 def test_multi_value_max_values_double(self):
     options = core.Options(
         arguments.MultiValueArgument('myarg', max_values=2))
     dummy_tokens = DummyTokens('myval', 'myval2')
     kwargs, blocks = options.parse(dummy_parser, dummy_tokens)
     self.assertEqual(blocks, {})
     self.assertEqual(len(kwargs), 1)
     dummy_context = {}
     self.assertEqual(kwargs['myarg'].resolve(dummy_context),
                      ['myval', 'myval2'])
Example #2
0
 def test_multi_value_three_values(self):
     options = core.Options(arguments.MultiValueArgument('myarg'))
     # test triple token MVA
     dummy_tokens = DummyTokens('myval', 'myval2', 'myval3')
     kwargs, blocks = options.parse(dummy_parser, dummy_tokens)
     self.assertEqual(blocks, {})
     self.assertEqual(len(kwargs), 1)
     dummy_context = {}
     self.assertEqual(kwargs['myarg'].resolve(dummy_context),
                      ['myval', 'myval2', 'myval3'])
Example #3
0
 def test_multi_value_no_resolve(self):
     # test no resolve
     options = core.Options(
         arguments.MultiValueArgument('myarg', resolve=False))
     argparser = parser.Parser(options)
     dummy_tokens = DummyTokens('myval', "'myval2'")
     kwargs, blocks = argparser.parse(dummy_parser, dummy_tokens)
     self.assertEqual(blocks, {})
     dummy_context = {}
     self.assertEqual(kwargs['myarg'].resolve(dummy_context),
                      ['myval', 'myval2'])
Example #4
0
 def test_multi_value_defaults(self):
     # test default
     options = core.Options(
         arguments.MultiValueArgument('myarg', default=['hello',
                                                        'world']), )
     argparser = parser.Parser(options)
     dummy_tokens = DummyTokens()
     kwargs, blocks = argparser.parse(dummy_parser, dummy_tokens)
     self.assertEqual(blocks, {})
     dummy_context = {}
     self.assertEqual(kwargs['myarg'].resolve(dummy_context),
                      ['hello', 'world'])
Example #5
0
 def test_multi_value_single_value(self):
     """
     Test simple multi value arguments
     """
     options = core.Options(arguments.MultiValueArgument('myarg'))
     # test single token MVA
     dummy_tokens = DummyTokens('myval')
     kwargs, blocks = options.parse(dummy_parser, dummy_tokens)
     self.assertEqual(blocks, {})
     self.assertEqual(len(kwargs), 1)
     dummy_context = {}
     # test resolving to list
     self.assertEqual(kwargs['myarg'].resolve(dummy_context), ['myval'])
Example #6
0
 def test_complext_first_and_last_argument(self):
     options = core.Options(
         arguments.Argument('singlearg'),
         arguments.MultiValueArgument('multiarg', required=False), 'as',
         arguments.Argument('varname', required=False), 'safe',
         arguments.Flag('safe', true_values=['on', 'true'], default=False))
     # test first argument and last argument given
     dummy_tokens = DummyTokens(2, 'safe', 'false')
     dummy_context = {}
     kwargs, blocks = options.parse(dummy_parser, dummy_tokens)
     self.assertEqual(blocks, {})
     self.assertEqual(len(kwargs), 4)
     expected = [('singlearg', 2), ('multiarg', []), ('varname', None),
                 ('safe', False)]
     for key, value in expected:
         self.assertEqual(kwargs[key].resolve(dummy_context), value)
Example #7
0
        class Cycle(core.Tag):
            name = 'classy_cycle'

            options = core.Options(
                arguments.MultiValueArgument('values'),
                'as',
                arguments.Argument('varname', required=False, resolve=False),
            )

            def render_tag(self, context, values, varname):
                if self not in context.render_context:
                    context.render_context[self] = itertools_cycle(values)
                cycle_iter = context.render_context[self]
                value = compat_next(cycle_iter)
                if varname:
                    context[varname] = value
                return value
Example #8
0
 def test_complex_all_arguments(self):
     """
     test a complex tag option parser
     """
     options = core.Options(
         arguments.Argument('singlearg'),
         arguments.MultiValueArgument('multiarg', required=False), 'as',
         arguments.Argument('varname', required=False), 'safe',
         arguments.Flag('safe', true_values=['on', 'true'], default=False))
     # test simple 'all arguments given'
     dummy_tokens = DummyTokens(1, 2, 3, 'as', 4, 'safe', 'true')
     dummy_context = {}
     kwargs, blocks = options.parse(dummy_parser, dummy_tokens)
     self.assertEqual(blocks, {})
     self.assertEqual(len(kwargs), 4)
     expected = [('singlearg', 1), ('multiarg', [2, 3]), ('varname', 4),
                 ('safe', True)]
     for key, value in expected:
         self.assertEqual(kwargs[key].resolve(dummy_context), value)
Example #9
0
 def test_multi_value_max_values_too_many(self):
     options = core.Options(
         arguments.MultiValueArgument('myarg', max_values=2))
     dummy_tokens = DummyTokens('myval', 'myval2', 'myval3')
     self.assertRaises(exceptions.TooManyArguments, options.parse,
                       dummy_parser, dummy_tokens)