Revision f17d6cb5 kamaki/cli/argument/test.py

b/kamaki/cli/argument/test.py
33 33

  
34 34
#from mock import patch, call
35 35
from unittest import TestCase
36
from StringIO import StringIO
36 37
#from itertools import product
37 38

  
38 39
from kamaki.cli import argument
......
43 44
    def test___init__(self):
44 45
        self.assertRaises(ValueError, argument.Argument, 'non-integer')
45 46
        self.assertRaises(AssertionError, argument.Argument, 1)
47
        self.assertRaises(AssertionError, argument.Argument, 0, 'noname')
48
        self.assertRaises(AssertionError, argument.Argument, 0, '--no name')
49
        self.assertRaises(AssertionError, argument.Argument, 0, ['-n', 'n m'])
46 50
        for arity, help, parsed_name, default in (
47 51
                (0, 'help 0', '--zero', None),
48 52
                (1, 'help 1', ['--one', '-o'], 'lala'),
......
60 64
            exp_default = default or (None if arity else False)
61 65
            self.assertEqual(exp_default, a.default)
62 66

  
67
    def test_value(self):
68
        a = argument.Argument(1, parsed_name='--value')
69
        for value in (None, '', 0, 0.1, -12, [1, 'a', 2.8], (3, 'lala'), 'pi'):
70
            a.value = value
71
            self.assertEqual(value, a.value)
72

  
73
    def test_update_parser(self):
74
        for i, arity in enumerate((-1, 0, 1)):
75
            arp = argument.ArgumentParser()
76
            pname, aname = '--pname%s' % i, 'a_name_%s' % i
77
            a = argument.Argument(arity, 'args', pname, 42)
78
            a.update_parser(arp, aname)
79

  
80
            f = StringIO()
81
            arp.print_usage(file=f), f.seek(0)
82
            usage, exp = f.readline(), '[%s%s]\n' % (
83
                pname, (' %s' % aname.upper()) if arity else '')
84
            self.assertEqual(usage[-len(exp):], exp)
85
            del arp
86

  
63 87

  
64 88
if __name__ == '__main__':
65 89
    from sys import argv

Also available in: Unified diff