Example #1
0
class Tests(unittest.TestCase):
    """
    some test cases
    """
    def setUp(self):
        self.parser = MyParser()

    def test_one_option_defined(self):
        self.parser.add_option('--key', dtype='int', is_flag=True)
        ans = self.parser.check_options(['./test', '--key=123'])
        self.assertEqual({'--key': '123'}, ans)

    def test_two_options_defined(self):
        self.parser.add_option('--key', dtype='int', is_flag=True)
        self.parser.add_option('--name', dtype='str', is_flag=True)
        ans = self.parser.check_options(
            ['./test', '--key=12345', '--name=kaustubh'])
        self.assertEqual({'--key': '12345', '--name': 'kaustubh'}, ans)

    def test_three_options_defined(self):
        self.parser.add_option('--key', dtype='int', is_flag=True)
        self.parser.add_option('--local', dtype='str', is_flag=False)
        self.parser.add_option('--remote', dtype='str', is_flag=False)
        ans = self.parser.check_options(
            ['./test', '--key=19', '--local', '--remote'])
        self.assertEqual({
            '--key': '19',
            '--local': 'True',
            '--remote': 'True'
        }, ans)

    def test_option_with_invalid_datatype(self):
        self.parser.add_option('--key', dtype='int', is_flag=True)
        with self.assertRaises(MyParserError) as context:
            self.parser.check_options(['./test', '--key=cat'])
        self.assertEqual('The field has invalid value.',
                         str(context.exception))

    def test_unexpexted_option(self):
        self.parser.add_option('--local', dtype='str', is_flag=False)
        with self.assertRaises(MyParserError) as context:
            self.parser.check_options(['./test', '--local', '--remote'])
        self.assertEqual("Unexpected field given.", str(context.exception))

    def test_too_less_arguments_given(self):
        self.parser.add_option('--age', dtype='int', is_flag=True)
        with self.assertRaises(MyParserError) as context:
            self.parser.check_options(['./test', '--age'])
        self.assertEqual('Too less arguments.', str(context.exception))

    def test_too_many_arguments_given(self):
        self.parser.add_option('--key', dtype='int', is_flag=True)
        self.parser.add_option('--local', dtype='str', is_flag=False)
        with self.assertRaises(MyParserError) as context:
            self.parser.check_options(['./test', '--key=19', '--local=abc'])
        self.assertEqual('Too many arguments.', str(context.exception))

    def test_no_options_defined(self):
        self.parser.add_option('--key', dtype='int', is_flag=True)
        with self.assertRaises(MyParserError) as context:
            self.parser.check_options(['./test'])
        self.assertEqual('No options given.', str(context.exception))