2424
2525import warnings
2626from functools import partial
27+ from ..externals .six import string_types
2728
2829import numpy as np
2930
@@ -283,11 +284,21 @@ class LoadImageAPI(GenericImageAPI):
283284 # Sequence of dictionaries, where dictionaries have keys
284285 # 'fname" in addition to keys for ``params`` (see obj_params docstring)
285286 example_images = ()
287+ # Class of images to be tested
288+ klass = None
286289
287290 def obj_params (self ):
288291 for img_params in self .example_images :
289292 yield lambda : self .loader (img_params ['fname' ]), img_params
290293
294+ def validate_path_maybe_image (self , imaker , params ):
295+ for img_params in self .example_images :
296+ test , sniff = self .klass .path_maybe_image (img_params ['fname' ])
297+ assert_true (isinstance (test , bool ))
298+ if sniff is not None :
299+ assert isinstance (sniff [0 ], bytes )
300+ assert isinstance (sniff [1 ], string_types )
301+
291302
292303class MakeImageAPI (LoadImageAPI ):
293304 """ Validation for images we can make with ``func(data, affine, header)``
@@ -346,48 +357,48 @@ def header_maker(self):
346357class TestAnalyzeAPI (ImageHeaderAPI ):
347358 """ General image validation API instantiated for Analyze images
348359 """
349- image_maker = AnalyzeImage
360+ klass = image_maker = AnalyzeImage
350361 has_scaling = False
351362 can_save = True
352363 standard_extension = '.img'
353364
354365
355366class TestSpatialImageAPI (TestAnalyzeAPI ):
356- image_maker = SpatialImage
367+ klass = image_maker = SpatialImage
357368 can_save = False
358369
359370
360371class TestSpm99AnalyzeAPI (TestAnalyzeAPI ):
361372 # SPM-type analyze need scipy for mat file IO
362- image_maker = Spm99AnalyzeImage
373+ klass = image_maker = Spm99AnalyzeImage
363374 has_scaling = True
364375 can_save = have_scipy
365376
366377
367378class TestSpm2AnalyzeAPI (TestSpm99AnalyzeAPI ):
368- image_maker = Spm2AnalyzeImage
379+ klass = image_maker = Spm2AnalyzeImage
369380
370381
371382class TestNifti1PairAPI (TestSpm99AnalyzeAPI ):
372- image_maker = Nifti1Pair
383+ klass = image_maker = Nifti1Pair
373384 can_save = True
374385
375386
376387class TestNifti1API (TestNifti1PairAPI ):
377- image_maker = Nifti1Image
388+ klass = image_maker = Nifti1Image
378389 standard_extension = '.nii'
379390
380391
381392class TestNifti2PairAPI (TestNifti1PairAPI ):
382- image_maker = Nifti2Pair
393+ klass = image_maker = Nifti2Pair
383394
384395
385396class TestNifti2API (TestNifti1API ):
386- image_maker = Nifti2Image
397+ klass = image_maker = Nifti2Image
387398
388399
389400class TestMinc1API (ImageHeaderAPI ):
390- image_maker = Minc1Image
401+ klass = image_maker = Minc1Image
391402 loader = minc1 .load
392403 example_images = MINC1_EXAMPLE_IMAGES
393404
@@ -397,7 +408,7 @@ def __init__(self):
397408 if not have_h5py :
398409 raise SkipTest ('Need h5py for these tests' )
399410
400- image_maker = Minc2Image
411+ klass = image_maker = Minc2Image
401412 loader = minc2 .load
402413 example_images = MINC2_EXAMPLE_IMAGES
403414
@@ -406,6 +417,7 @@ class TestPARRECAPI(LoadImageAPI):
406417 def loader (self , fname ):
407418 return parrec .load (fname )
408419
420+ klass = parrec .PARRECImage
409421 example_images = PARREC_EXAMPLE_IMAGES
410422
411423
@@ -418,7 +430,7 @@ def loader(self, fname):
418430
419431
420432class TestMGHAPI (ImageHeaderAPI ):
421- image_maker = MGHImage
433+ klass = image_maker = MGHImage
422434 example_shapes = ((2 , 3 , 4 ), (2 , 3 , 4 , 5 )) # MGH can only do >= 3D
423435 has_scaling = True
424436 can_save = True
0 commit comments