예제 #1
0
 def test_get_description(self):
     """
     InputArgument.get_description() returns the message description
     """
     argument = InputArgument('foo', None, 'Some description')
     self.assertEqual('Some description', argument.get_description(),
                      msg='.get_description() returns the message description')
예제 #2
0
 def test_get_default(self):
     """
     InputArgument.get_default() returns the default value
     """
     argument = InputArgument('foo', InputArgument.OPTIONAL, '', 'default')
     self.assertEqual('default', argument.get_default(),
                      msg='.get_default() returns the default value')
예제 #3
0
    def test_merge_application_definition(self):
        """
        Command.merge_application_definition() merges command and application.
        """
        application1 = Application()
        application1.get_definition().add_arguments([InputArgument('foo')])
        application1.get_definition().add_options([InputOption('bar')])
        command = SomeCommand()
        command.set_application(application1)
        command.set_definition(
            InputDefinition([
                InputArgument('bar'),
                InputOption('foo')
            ])
        )

        command.merge_application_definition()
        self.assertTrue(command.get_definition().has_argument('foo'))
        self.assertTrue(command.get_definition().has_option('foo'))
        self.assertTrue(command.get_definition().has_argument('bar'))
        self.assertTrue(command.get_definition().has_option('bar'))

        # It should not merge the definitions twice
        command.merge_application_definition()
        self.assertEqual(3, command.get_definition().get_argument_count())
예제 #4
0
 def test_get_default(self):
     """
     InputArgument.get_default() returns the default value
     """
     argument = InputArgument('foo', InputArgument.OPTIONAL, '', 'default')
     self.assertEqual('default',
                      argument.get_default(),
                      msg='.get_default() returns the default value')
예제 #5
0
 def test_get_description(self):
     """
     InputArgument.get_description() returns the message description
     """
     argument = InputArgument('foo', None, 'Some description')
     self.assertEqual(
         'Some description',
         argument.get_description(),
         msg='.get_description() returns the message description')
예제 #6
0
    def test_is_list(self):
        """
        InputArgument.is_list() returns true if the argument can be an array'
        """
        argument = InputArgument('foo', InputArgument.IS_LIST)
        self.assertTrue(argument.is_list())

        argument = InputArgument(
            'foo', InputArgument.OPTIONAL | InputArgument.IS_LIST)
        self.assertTrue(argument.is_list())

        argument = InputArgument('foo', InputArgument.OPTIONAL)
        self.assertFalse(argument.is_list())
예제 #7
0
    def test_set_default(self):
        """
        InputArgument.set_default() sets the default value
        """
        argument = InputArgument('foo', InputArgument.OPTIONAL, '', 'default')
        argument.set_default(None)
        self.assertEqual(
            None,
            argument.get_default(),
            msg='.set_default() can reset the default value by passing None')
        argument.set_default('another')
        self.assertEqual('another',
                         argument.get_default(),
                         msg='.set_default() changes the default value')

        argument = InputArgument('foo', InputArgument.REQUIRED)
        self.assertRaises(Exception, argument.set_default, 'default')
예제 #8
0
    def test_set_default(self):
        """
        InputArgument.set_default() sets the default value
        """
        argument = InputArgument('foo', InputArgument.OPTIONAL, '', 'default')
        argument.set_default(None)
        self.assertEqual(None, argument.get_default(),
                         msg='.set_default() can reset the default value by passing None')
        argument.set_default('another')
        self.assertEqual('another', argument.get_default(),
                         msg='.set_default() changes the default value')

        argument = InputArgument('foo', InputArgument.REQUIRED)
        self.assertRaises(Exception, argument.set_default, 'default')
예제 #9
0
 def test_set_get_definition(self):
     """
     Command.get/set_definition properly sets and gets definition
     """
     command = SomeCommand()
     definition = InputDefinition()
     ret = command.set_definition(definition)
     self.assertEqual(command, ret, msg='.set_definition() implements a fluent interface')
     self.assertEqual(definition, command.get_definition(),
                      msg='.set_definition() sets the current InputDefinition instance')
     command.set_definition([InputArgument('foo'), InputOption('bar')])
     self.assertTrue(command.get_definition().has_argument('foo'),
                     msg='.set_definition() also takes an array of InputArguments and InputOptions as an argument')
     self.assertTrue(command.get_definition().has_option('bar'),
                     msg='.set_definition() also takes an array of InputArguments and InputOptions as an argument')
     command.set_definition(InputDefinition())
예제 #10
0
    def test_is_list(self):
        """
        InputArgument.is_list() returns true if the argument can be an array'
        """
        argument = InputArgument('foo', InputArgument.IS_LIST)
        self.assertTrue(argument.is_list())

        argument = InputArgument('foo', InputArgument.OPTIONAL | InputArgument.IS_LIST)
        self.assertTrue(argument.is_list())

        argument = InputArgument('foo', InputArgument.OPTIONAL)
        self.assertFalse(argument.is_list())
예제 #11
0
    def test_merge_application_definition_without_args_then_with_args_adds_args(self):
        application1 = Application()
        application1.get_definition().add_arguments([InputArgument('foo')])
        application1.get_definition().add_options([InputOption('bar')])
        command = SomeCommand()
        command.set_application(application1)
        command.set_definition(InputDefinition())

        command.merge_application_definition(False)
        self.assertFalse(command.get_definition().has_argument('foo'))
        self.assertTrue(command.get_definition().has_option('bar'))

        command.merge_application_definition(True)
        self.assertTrue(command.get_definition().has_argument('foo'))

        # It should not merge the definitions twice
        command.merge_application_definition()
        self.assertEqual(2, command.get_definition().get_argument_count())
예제 #12
0
    def test_from_dict_plain_dict(self):
        """
        InputArgument.from_dict() returns an InputArgument instance given a dict.
        """
        validator = Integer()
        argument_dict = {
            'name': 'foo',
            'description': 'The foo argument.',
            'required': False,
            'list': True,
            'default': ['default'],
            'validator': validator
        }

        argument = InputArgument.from_dict(argument_dict)
        self.assertTrue(InputArgument, argument)
        self.assertEqual('foo', argument.get_name())
        self.assertEqual('The foo argument.', argument.get_description())
        self.assertEqual(['default'], argument.get_default())
        self.assertTrue(argument.is_list())
        self.assertFalse(argument.is_required())
        self.assertEqual(validator, argument.get_validator())
예제 #13
0
    def test_from_dict_plain_dict(self):
        """
        InputArgument.from_dict() returns an InputArgument instance given a dict.
        """
        validator = Integer()
        argument_dict = {
            'name': 'foo',
            'description': 'The foo argument.',
            'required': False,
            'list': True,
            'default': ['default'],
            'validator': validator
        }

        argument = InputArgument.from_dict(argument_dict)
        self.assertTrue(InputArgument, argument)
        self.assertEqual('foo', argument.get_name())
        self.assertEqual('The foo argument.', argument.get_description())
        self.assertEqual(['default'], argument.get_default())
        self.assertTrue(argument.is_list())
        self.assertFalse(argument.is_required())
        self.assertEqual(validator, argument.get_validator())
예제 #14
0
    def test_init(self):
        """
        InputArgument.__init__() behaves properly
        """
        argument = InputArgument('foo')
        self.assertEqual('foo', argument.get_name(), msg='__init__() takes a name as its first argument')

        # mode argument
        argument = InputArgument('foo')
        self.assertFalse(argument.is_required(), msg='__init__() gives a "InputArgument.OPTIONAL" mode by default')

        argument = InputArgument('foo', None)
        self.assertFalse(argument.is_required(), msg='__init__() can take "InputArgument.OPTIONAL" as its mode')

        argument = InputArgument('foo', InputArgument.OPTIONAL)
        self.assertFalse(argument.is_required(), msg='__init__() can take "InputArgument.OPTIONAL" as its mode')

        argument = InputArgument('foo', InputArgument.REQUIRED)
        self.assertTrue(argument.is_required(), msg='__init__() can take "InputArgument.REQUIRED" as its mode')

        self.assertRaises(Exception, InputArgument, 'foo', 'ANOTHER_MODE')
        self.assertRaises(Exception, InputArgument, 'foo', -1)

        validator = Integer()
        argument = InputArgument('foo', None, validator=validator)
        self.assertEqual(validator, argument.get_validator())

        # Named validator
        validator = 'integer'
        argument = InputArgument('foo', None, validator=validator)
        self.assertIsInstance(argument.get_validator(), Integer)

        # Native type
        validator = int
        argument = InputArgument('foo', None, validator=validator)
        self.assertIsInstance(argument.get_validator(), Integer)
예제 #15
0
    def test_init(self):
        """
        InputArgument.__init__() behaves properly
        """
        argument = InputArgument('foo')
        self.assertEqual('foo',
                         argument.get_name(),
                         msg='__init__() takes a name as its first argument')

        # mode argument
        argument = InputArgument('foo')
        self.assertFalse(
            argument.is_required(),
            msg='__init__() gives a "InputArgument.OPTIONAL" mode by default')

        argument = InputArgument('foo', None)
        self.assertFalse(
            argument.is_required(),
            msg='__init__() can take "InputArgument.OPTIONAL" as its mode')

        argument = InputArgument('foo', InputArgument.OPTIONAL)
        self.assertFalse(
            argument.is_required(),
            msg='__init__() can take "InputArgument.OPTIONAL" as its mode')

        argument = InputArgument('foo', InputArgument.REQUIRED)
        self.assertTrue(
            argument.is_required(),
            msg='__init__() can take "InputArgument.REQUIRED" as its mode')

        self.assertRaises(Exception, InputArgument, 'foo', 'ANOTHER_MODE')
        self.assertRaises(Exception, InputArgument, 'foo', -1)

        validator = Integer()
        argument = InputArgument('foo', None, validator=validator)
        self.assertEqual(validator, argument.get_validator())

        # Named validator
        validator = 'integer'
        argument = InputArgument('foo', None, validator=validator)
        self.assertIsInstance(argument.get_validator(), Integer)

        # Native type
        validator = int
        argument = InputArgument('foo', None, validator=validator)
        self.assertIsInstance(argument.get_validator(), Integer)