5
5
from datetime import date
6
6
7
7
import numpy as np
8
- from numpy .lib ._iotools import LineSplitter , NameValidator , StringConverter , \
9
- has_nested_fields , easy_dtype , flatten_dtype
8
+ from numpy .lib ._iotools import (
9
+ LineSplitter , NameValidator , StringConverter ,
10
+ has_nested_fields , easy_dtype , flatten_dtype
11
+ )
10
12
from numpy .testing import *
11
13
from numpy .compat import asbytes , asbytes_nested
12
14
15
+
13
16
class TestLineSplitter (TestCase ):
14
17
"Tests the LineSplitter class."
15
- #
18
+
16
19
def test_no_delimiter (self ):
17
20
"Test LineSplitter w/o delimiter"
18
21
strg = asbytes (" 1 2 3 4 5 # test" )
@@ -71,11 +74,11 @@ def test_variable_fixed_width(self):
71
74
test = LineSplitter ((6 , 6 , 9 ))(strg )
72
75
assert_equal (test , asbytes_nested (['1' , '3 4' , '5 6' ]))
73
76
74
-
75
77
#-------------------------------------------------------------------------------
76
78
79
+
77
80
class TestNameValidator (TestCase ):
78
- #
81
+
79
82
def test_case_sensitivity (self ):
80
83
"Test case sensitivity"
81
84
names = ['A' , 'a' , 'b' , 'c' ]
@@ -87,14 +90,14 @@ def test_case_sensitivity(self):
87
90
assert_equal (test , ['A' , 'A_1' , 'B' , 'C' ])
88
91
test = NameValidator (case_sensitive = 'lower' ).validate (names )
89
92
assert_equal (test , ['a' , 'a_1' , 'b' , 'c' ])
90
- #
93
+
91
94
def test_excludelist (self ):
92
95
"Test excludelist"
93
96
names = ['dates' , 'data' , 'Other Data' , 'mask' ]
94
97
validator = NameValidator (excludelist = ['dates' , 'data' , 'mask' ])
95
98
test = validator .validate (names )
96
99
assert_equal (test , ['dates_' , 'data_' , 'Other_Data' , 'mask_' ])
97
- #
100
+
98
101
def test_missing_names (self ):
99
102
"Test validate missing names"
100
103
namelist = ('a' , 'b' , 'c' )
@@ -106,42 +109,41 @@ def test_missing_names(self):
106
109
assert_equal (validator (namelist ), ['a' , 'b' , 'f0' ])
107
110
namelist = ('' , 'f0' , '' )
108
111
assert_equal (validator (namelist ), ['f1' , 'f0' , 'f2' ])
109
- #
112
+
110
113
def test_validate_nb_names (self ):
111
114
"Test validate nb names"
112
115
namelist = ('a' , 'b' , 'c' )
113
116
validator = NameValidator ()
114
117
assert_equal (validator (namelist , nbfields = 1 ), ('a' ,))
115
118
assert_equal (validator (namelist , nbfields = 5 , defaultfmt = "g%i" ),
116
119
['a' , 'b' , 'c' , 'g0' , 'g1' ])
117
- #
120
+
118
121
def test_validate_wo_names (self ):
119
122
"Test validate no names"
120
123
namelist = None
121
124
validator = NameValidator ()
122
125
assert_ (validator (namelist ) is None )
123
126
assert_equal (validator (namelist , nbfields = 3 ), ['f0' , 'f1' , 'f2' ])
124
127
125
-
126
-
127
-
128
128
#-------------------------------------------------------------------------------
129
129
130
+
130
131
def _bytes_to_date (s ):
131
132
if sys .version_info [0 ] >= 3 :
132
133
return date (* time .strptime (s .decode ('latin1' ), "%Y-%m-%d" )[:3 ])
133
134
else :
134
135
return date (* time .strptime (s , "%Y-%m-%d" )[:3 ])
135
136
137
+
136
138
class TestStringConverter (TestCase ):
137
139
"Test StringConverter"
138
- #
140
+
139
141
def test_creation (self ):
140
142
"Test creation of a StringConverter"
141
143
converter = StringConverter (int , - 99999 )
142
144
assert_equal (converter ._status , 1 )
143
145
assert_equal (converter .default , - 99999 )
144
- #
146
+
145
147
def test_upgrade (self ):
146
148
"Tests the upgrade method."
147
149
converter = StringConverter ()
@@ -154,7 +156,7 @@ def test_upgrade(self):
154
156
assert_equal (converter ._status , 3 )
155
157
converter .upgrade (asbytes ('a' ))
156
158
assert_equal (converter ._status , len (converter ._mapper ) - 1 )
157
- #
159
+
158
160
def test_missing (self ):
159
161
"Tests the use of missing values."
160
162
converter = StringConverter (missing_values = (asbytes ('missing' ),
@@ -168,7 +170,7 @@ def test_missing(self):
168
170
converter ('miss' )
169
171
except ValueError :
170
172
pass
171
- #
173
+
172
174
def test_upgrademapper (self ):
173
175
"Tests updatemapper"
174
176
dateparser = _bytes_to_date
@@ -180,37 +182,39 @@ def test_upgrademapper(self):
180
182
assert_equal (test , date (2009 , 1 , 1 ))
181
183
test = convert (asbytes ('' ))
182
184
assert_equal (test , date (2000 , 1 , 1 ))
183
- #
185
+
184
186
def test_string_to_object (self ):
185
187
"Make sure that string-to-object functions are properly recognized"
186
188
conv = StringConverter (_bytes_to_date )
187
189
assert_equal (conv ._mapper [- 2 ][0 ](0 ), 0j )
188
190
assert_ (hasattr (conv , 'default' ))
189
- #
191
+
190
192
def test_keep_default (self ):
191
193
"Make sure we don't lose an explicit default"
192
194
converter = StringConverter (None , missing_values = asbytes ('' ),
193
- default = - 999 )
195
+ default = - 999 )
194
196
converter .upgrade (asbytes ('3.14159265' ))
195
197
assert_equal (converter .default , - 999 )
196
198
assert_equal (converter .type , np .dtype (float ))
197
199
#
198
- converter = StringConverter (None , missing_values = asbytes ('' ), default = 0 )
200
+ converter = StringConverter (
201
+ None , missing_values = asbytes ('' ), default = 0 )
199
202
converter .upgrade (asbytes ('3.14159265' ))
200
203
assert_equal (converter .default , 0 )
201
204
assert_equal (converter .type , np .dtype (float ))
202
- #
205
+
203
206
def test_keep_default_zero (self ):
204
207
"Check that we don't lose a default of 0"
205
208
converter = StringConverter (int , default = 0 ,
206
209
missing_values = asbytes ("N/A" ))
207
210
assert_equal (converter .default , 0 )
208
- #
211
+
209
212
def test_keep_missing_values (self ):
210
213
"Check that we're not losing missing values"
211
214
converter = StringConverter (int , default = 0 ,
212
215
missing_values = asbytes ("N/A" ))
213
- assert_equal (converter .missing_values , set (asbytes_nested (['' , 'N/A' ])))
216
+ assert_equal (
217
+ converter .missing_values , set (asbytes_nested (['' , 'N/A' ])))
214
218
215
219
def test_int64_dtype (self ):
216
220
"Check that int64 integer types can be specified"
@@ -226,10 +230,9 @@ def test_uint64_dtype(self):
226
230
val = asbytes ("9223372043271415339" )
227
231
assert_ (converter (val ) == 9223372043271415339 )
228
232
229
- #-------------------------------------------------------------------------------
230
233
231
234
class TestMiscFunctions (TestCase ):
232
- #
235
+
233
236
def test_has_nested_dtype (self ):
234
237
"Test has_nested_dtype"
235
238
ndtype = np .dtype (np .float )
@@ -292,9 +295,9 @@ def test_easy_dtype(self):
292
295
np .dtype ([(_ , float ) for _ in ('a' , 'b' , 'c' )]))
293
296
# As simple dtype w/o names (but multiple fields)
294
297
ndtype = np .dtype (float )
295
- assert_equal (easy_dtype ( ndtype , names = [ '' , '' , '' ], defaultfmt = "f%02i" ),
296
- np . dtype ([( _ , float ) for _ in ( 'f00 ' , 'f01 ' , 'f02' )]))
297
-
298
+ assert_equal (
299
+ easy_dtype ( ndtype , names = [ ' ' , '' , '' ], defaultfmt = "f%02i" ),
300
+ np . dtype ([( _ , float ) for _ in ( 'f00' , 'f01' , 'f02' )]))
298
301
299
302
def test_flatten_dtype (self ):
300
303
"Testing flatten_dtype"
0 commit comments