Skip to content

Commit 8a926a4

Browse files
committed
TEST: path_maybe_image part of image API
Not all tests have image_maker attributes, so add klass attribute to test path_maybe_image. Checks structure of return values on calls to example images.
1 parent 76440f2 commit 8a926a4

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

nibabel/tests/test_image_api.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import warnings
2626
from functools import partial
27+
from ..externals.six import string_types
2728

2829
import 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

292303
class MakeImageAPI(LoadImageAPI):
293304
""" Validation for images we can make with ``func(data, affine, header)``
@@ -346,48 +357,48 @@ def header_maker(self):
346357
class 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

355366
class TestSpatialImageAPI(TestAnalyzeAPI):
356-
image_maker = SpatialImage
367+
klass = image_maker = SpatialImage
357368
can_save = False
358369

359370

360371
class 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

367378
class TestSpm2AnalyzeAPI(TestSpm99AnalyzeAPI):
368-
image_maker = Spm2AnalyzeImage
379+
klass = image_maker = Spm2AnalyzeImage
369380

370381

371382
class TestNifti1PairAPI(TestSpm99AnalyzeAPI):
372-
image_maker = Nifti1Pair
383+
klass = image_maker = Nifti1Pair
373384
can_save = True
374385

375386

376387
class TestNifti1API(TestNifti1PairAPI):
377-
image_maker = Nifti1Image
388+
klass = image_maker = Nifti1Image
378389
standard_extension = '.nii'
379390

380391

381392
class TestNifti2PairAPI(TestNifti1PairAPI):
382-
image_maker = Nifti2Pair
393+
klass = image_maker = Nifti2Pair
383394

384395

385396
class TestNifti2API(TestNifti1API):
386-
image_maker = Nifti2Image
397+
klass = image_maker = Nifti2Image
387398

388399

389400
class 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

420432
class 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

Comments
 (0)