23
23
from fire import testutils
24
24
25
25
26
- class A (object ):
26
+ class NoDefaults (object ):
27
27
28
28
@decorators .SetParseFns (count = int )
29
29
def double (self , count ):
@@ -43,7 +43,7 @@ def double(count):
43
43
return 2 * count
44
44
45
45
46
- class B (object ):
46
+ class WithDefaults (object ):
47
47
48
48
@decorators .SetParseFns (float )
49
49
def example1 (self , arg1 = 10 ):
@@ -54,14 +54,14 @@ def example2(self, arg1=10):
54
54
return arg1 , type (arg1 )
55
55
56
56
57
- class C (object ):
57
+ class MixedArguments (object ):
58
58
59
59
@decorators .SetParseFns (float , arg2 = str )
60
60
def example3 (self , arg1 , arg2 ):
61
61
return arg1 , arg2
62
62
63
63
64
- class D (object ):
64
+ class PartialParseFn (object ):
65
65
66
66
@decorators .SetParseFns (arg1 = str )
67
67
def example4 (self , arg1 , arg2 ):
@@ -72,7 +72,7 @@ def example5(self, arg1, arg2):
72
72
return arg1 , arg2
73
73
74
74
75
- class E (object ):
75
+ class WithKwargs (object ):
76
76
77
77
@decorators .SetParseFns (mode = str , count = int )
78
78
def example6 (self , ** kwargs ):
@@ -82,7 +82,7 @@ def example6(self, **kwargs):
82
82
)
83
83
84
84
85
- class F (object ):
85
+ class WithVarArgs (object ):
86
86
87
87
@decorators .SetParseFn (str )
88
88
def example7 (self , arg1 , arg2 = None , * varargs , ** kwargs ):
@@ -92,59 +92,64 @@ def example7(self, arg1, arg2=None, *varargs, **kwargs):
92
92
class FireDecoratorsTest (testutils .BaseTestCase ):
93
93
94
94
def testSetParseFnsNamedArgs (self ):
95
- self .assertEqual (core .Fire (A , 'double 2' ), 4 )
96
- self .assertEqual (core .Fire (A , 'triple 4' ), 12.0 )
95
+ self .assertEqual (core .Fire (NoDefaults , 'double 2' ), 4 )
96
+ self .assertEqual (core .Fire (NoDefaults , 'triple 4' ), 12.0 )
97
97
98
98
def testSetParseFnsPositionalArgs (self ):
99
- self .assertEqual (core .Fire (A , 'quadruple 5' ), 20 )
99
+ self .assertEqual (core .Fire (NoDefaults , 'quadruple 5' ), 20 )
100
100
101
101
def testSetParseFnsFnWithPositionalArgs (self ):
102
102
self .assertEqual (core .Fire (double , '5' ), 10 )
103
103
104
104
def testSetParseFnsDefaultsFromPython (self ):
105
105
# When called from Python, function should behave normally.
106
- self .assertTupleEqual (B ().example1 (), (10 , int ))
107
- self .assertEqual (B ().example1 (5 ), (5 , int ))
108
- self .assertEqual (B ().example1 (12.0 ), (12 , float ))
106
+ self .assertTupleEqual (WithDefaults ().example1 (), (10 , int ))
107
+ self .assertEqual (WithDefaults ().example1 (5 ), (5 , int ))
108
+ self .assertEqual (WithDefaults ().example1 (12.0 ), (12 , float ))
109
109
110
110
def testSetParseFnsDefaultsFromFire (self ):
111
111
# Fire should use the decorator to know how to parse string arguments.
112
- self .assertEqual (core .Fire (B , 'example1' ), (10 , int ))
113
- self .assertEqual (core .Fire (B , 'example1 10' ), (10 , float ))
114
- self .assertEqual (core .Fire (B , 'example1 13' ), (13 , float ))
115
- self .assertEqual (core .Fire (B , 'example1 14.0' ), (14 , float ))
112
+ self .assertEqual (core .Fire (WithDefaults , 'example1' ), (10 , int ))
113
+ self .assertEqual (core .Fire (WithDefaults , 'example1 10' ), (10 , float ))
114
+ self .assertEqual (core .Fire (WithDefaults , 'example1 13' ), (13 , float ))
115
+ self .assertEqual (core .Fire (WithDefaults , 'example1 14.0' ), (14 , float ))
116
116
117
117
def testSetParseFnsNamedDefaultsFromPython (self ):
118
118
# When called from Python, function should behave normally.
119
- self .assertTupleEqual (B ().example2 (), (10 , int ))
120
- self .assertEqual (B ().example2 (5 ), (5 , int ))
121
- self .assertEqual (B ().example2 (12.0 ), (12 , float ))
119
+ self .assertTupleEqual (WithDefaults ().example2 (), (10 , int ))
120
+ self .assertEqual (WithDefaults ().example2 (5 ), (5 , int ))
121
+ self .assertEqual (WithDefaults ().example2 (12.0 ), (12 , float ))
122
122
123
123
def testSetParseFnsNamedDefaultsFromFire (self ):
124
124
# Fire should use the decorator to know how to parse string arguments.
125
- self .assertEqual (core .Fire (B , 'example2' ), (10 , int ))
126
- self .assertEqual (core .Fire (B , 'example2 10' ), (10 , float ))
127
- self .assertEqual (core .Fire (B , 'example2 13' ), (13 , float ))
128
- self .assertEqual (core .Fire (B , 'example2 14.0' ), (14 , float ))
125
+ self .assertEqual (core .Fire (WithDefaults , 'example2' ), (10 , int ))
126
+ self .assertEqual (core .Fire (WithDefaults , 'example2 10' ), (10 , float ))
127
+ self .assertEqual (core .Fire (WithDefaults , 'example2 13' ), (13 , float ))
128
+ self .assertEqual (core .Fire (WithDefaults , 'example2 14.0' ), (14 , float ))
129
129
130
130
def testSetParseFnsPositionalAndNamed (self ):
131
- self .assertEqual (core .Fire (C , 'example3 10 10' ), (10 , '10' ))
131
+ self .assertEqual (core .Fire (MixedArguments , 'example3 10 10' ), (10 , '10' ))
132
132
133
133
def testSetParseFnsOnlySomeTypes (self ):
134
- self .assertEqual (core .Fire (D , 'example4 10 10' ), ('10' , 10 ))
135
- self .assertEqual (core .Fire (D , 'example5 10 10' ), (10 , '10' ))
134
+ self .assertEqual (core .Fire (PartialParseFn , 'example4 10 10' ), ('10' , 10 ))
135
+ self .assertEqual (core .Fire (PartialParseFn , 'example5 10 10' ), (10 , '10' ))
136
136
137
137
def testSetParseFnsForKeywordArgs (self ):
138
- self .assertEqual (core .Fire (E , 'example6' ), ('default' , 0 ))
139
- self .assertEqual (core .Fire (E , 'example6 --herring "red"' ), ('default' , 0 ))
140
- self .assertEqual (core .Fire (E , 'example6 --mode train' ), ('train' , 0 ))
141
- self .assertEqual (core .Fire (E , 'example6 --mode 3' ), ('3' , 0 ))
142
- self .assertEqual (core .Fire (E , 'example6 --mode -1 --count 10' ), ('-1' , 10 ))
143
- self .assertEqual (core .Fire (E , 'example6 --count -2' ), ('default' , - 2 ))
138
+ self .assertEqual (core .Fire (WithKwargs , 'example6' ), ('default' , 0 ))
139
+ self .assertEqual (
140
+ core .Fire (WithKwargs , 'example6 --herring "red"' ), ('default' , 0 ))
141
+ self .assertEqual (
142
+ core .Fire (WithKwargs , 'example6 --mode train' ), ('train' , 0 ))
143
+ self .assertEqual (core .Fire (WithKwargs , 'example6 --mode 3' ), ('3' , 0 ))
144
+ self .assertEqual (
145
+ core .Fire (WithKwargs , 'example6 --mode -1 --count 10' ), ('-1' , 10 ))
146
+ self .assertEqual (
147
+ core .Fire (WithKwargs , 'example6 --count -2' ), ('default' , - 2 ))
144
148
145
149
def testSetParseFn (self ):
146
- self .assertEqual (core .Fire (F , 'example7 1 --arg2=2 3 4 --kwarg=5' ),
147
- ('1' , '2' , ('3' , '4' ), {'kwarg' : '5' }))
150
+ self .assertEqual (
151
+ core .Fire (WithVarArgs , 'example7 1 --arg2=2 3 4 --kwarg=5' ),
152
+ ('1' , '2' , ('3' , '4' ), {'kwarg' : '5' }))
148
153
149
154
150
155
if __name__ == '__main__' :
0 commit comments