def test_get_description(self):
     """
     InputOption.get_description() returns the message description
     """
     option = InputOption("foo", "f", None, "Some description")
     self.assertEqual(
         "Some description", option.get_description(), msg=".get_description() returns the message description"
     )
    def test_set_default(self):
        """
        InputOption.set_default() sets the default value
        """
        option = InputOption("foo", "f", InputOption.VALUE_REQUIRED, "", "default")
        option.set_default(None)
        self.assertEqual(None, option.get_default(), msg=".set_default() can reset the default value by passing None")
        option.set_default("another")
        self.assertEqual("another", option.get_default(), msg=".set_default() changes the default value")

        option = InputOption("foo", "f", InputOption.VALUE_NONE)
        self.assertRaises(Exception, option.set_default, "default")
 def test_get_default(self):
     """
     InputOption.get_default() returns the default value
     """
     option = InputOption("foo", "f", InputOption.VALUE_OPTIONAL, "", "default")
     self.assertEqual("default", option.get_default(), msg=".get_default() returns the default value")
     option = InputOption("foo", "f", InputOption.VALUE_REQUIRED, "", "default")
     self.assertEqual("default", option.get_default(), msg=".get_default() returns the default value")
     option = InputOption("foo", "f", InputOption.VALUE_REQUIRED)
     self.assertEqual(
         None, option.get_default(), msg=".get_default() returns None if no default value is configured"
     )
     option = InputOption("foo", "f", InputOption.VALUE_NONE)
     self.assertEqual(
         False, option.get_default(), msg=".get_default() returns False if the option does not take a value"
     )
    def test_init(self):
        """
        InputOption.__init__() behaves properly
        """
        option = InputOption("foo")
        self.assertEqual("foo", option.get_name(), msg="__init__() takes a name as its first argument")
        option = InputOption("--foo")
        self.assertEqual("foo", option.get_name(), msg="__init__() removes the leading -- of the option name")

        # shortcut argument
        option = InputOption("foo", "f")
        self.assertEqual("f", option.get_shortcut(), msg="__init__() can take a shortcut as its second argument")
        option = InputOption("foo", "-f")
        self.assertEqual("f", option.get_shortcut(), msg="__init__() removes the leading - of the shortcut")
        option = InputOption("foo")
        self.assertEqual(None, option.get_shortcut(), msg="__init__() makes the shortcut null by default")

        # mode argument
        option = InputOption("foo", "f")
        self.assertFalse(option.accept_value(), msg='__init__() gives a "InputOption.VALUE_NONE" mode by default')
        self.assertFalse(option.is_value_required(), msg='__init__() gives a "InputOption.VALUE_NONE" mode by default')
        self.assertFalse(option.is_value_optional(), msg='__init__() gives a "InputOption.VALUE_NONE" mode by default')

        option = InputOption("foo", "f", None)
        self.assertFalse(option.accept_value(), msg='__init__() can take "InputOption.VALUE_NONE" as its mode')
        self.assertFalse(option.is_value_required(), msg='__init__() can take "InputOption.VALUE_NONE" as its mode')
        self.assertFalse(option.is_value_optional(), msg='__init__() can take "InputOption.VALUE_NONE" as its mode')

        option = InputOption("foo", "f", InputOption.VALUE_NONE)
        self.assertFalse(option.accept_value(), msg='__init__() can take "InputOption.VALUE_NONE" as its mode')
        self.assertFalse(option.is_value_required(), msg='__init__() can take "InputOption.VALUE_NONE" as its mode')
        self.assertFalse(option.is_value_optional(), msg='__init__() can take "InputOption.VALUE_NONE" as its mode')

        option = InputOption("foo", "f", InputOption.VALUE_REQUIRED)
        self.assertTrue(option.accept_value(), msg='__init__() can take "InputOption.VALUE_REQUIRED" as its mode')
        self.assertTrue(option.is_value_required(), msg='__init__() can take "InputOption.VALUE_REQUIRED" as its mode')
        self.assertFalse(option.is_value_optional(), msg='__init__() can take "InputOption.VALUE_REQUIRED" as its mode')

        option = InputOption("foo", "f", InputOption.VALUE_OPTIONAL)
        self.assertTrue(option.accept_value(), msg='__init__() can take "InputOption.VALUE_OPTIONAL" as its mode')
        self.assertFalse(option.is_value_required(), msg='__init__() can take "InputOption.VALUE_OPTIONAL" as its mode')
        self.assertTrue(option.is_value_optional(), msg='__init__() can take "InputOption.VALUE_OPTIONAL" as its mode')

        self.assertRaises(Exception, InputOption, "foo", "f", "ANOTHER_MODE")
        self.assertRaises(Exception, InputOption, "foo", "f", -1)