From 307a3281ce7b15214c7501ae45bee55ee74040c2 Mon Sep 17 00:00:00 2001 From: Ben Cipollini Date: Thu, 8 Oct 2015 23:47:33 -0700 Subject: [PATCH 1/3] Add tests, change print error to ValueError, test it --- nibabel/gifti/gifti.py | 2 +- nibabel/gifti/tests/test_gifti.py | 34 +++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/nibabel/gifti/gifti.py b/nibabel/gifti/gifti.py index 9870353238..528a96e742 100644 --- a/nibabel/gifti/gifti.py +++ b/nibabel/gifti/gifti.py @@ -453,7 +453,7 @@ def add_gifti_data_array(self, dataarr): if isinstance(dataarr, GiftiDataArray): self.darrays.append(dataarr) else: - print("dataarr paramater must be of tzpe GiftiDataArray") + raise ValueError("dataarr paramater must be of type GiftiDataArray") def remove_gifti_data_array(self, ith): """ Removes the ith data array element from the GiftiImage """ diff --git a/nibabel/gifti/tests/test_gifti.py b/nibabel/gifti/tests/test_gifti.py index 84c357caa0..87fbabf664 100644 --- a/nibabel/gifti/tests/test_gifti.py +++ b/nibabel/gifti/tests/test_gifti.py @@ -4,14 +4,17 @@ import numpy as np +from nibabel.gifti import giftiio + +from .test_giftiio import (DATA_FILE1, DATA_FILE2, DATA_FILE3, DATA_FILE4, + DATA_FILE5, DATA_FILE6) from ..gifti import (GiftiImage, GiftiDataArray, GiftiLabel, GiftiLabelTable, GiftiMetaData) from ...nifti1 import data_type_codes, intent_codes - +from ...testing import clear_and_catch_warnings from numpy.testing import (assert_array_almost_equal, assert_array_equal) from nose.tools import (assert_true, assert_false, assert_equal, assert_raises) -from ...testing import clear_and_catch_warnings def test_gifti_image(): @@ -127,3 +130,30 @@ def assign_rgba(gl, val): gl4 = GiftiLabel() assert_equal(len(gl4.rgba), 4) assert_true(np.all([elem is None for elem in gl4.rgba])) + + +def test_print_summary(): + for fil in [DATA_FILE1, DATA_FILE2, DATA_FILE3, DATA_FILE4, + DATA_FILE5, DATA_FILE6]: + gimg = giftiio.read(fil) + gimg.print_summary() + + +def test_gifti_coord(): + from ..gifti import GiftiCoordSystem + gcs = GiftiCoordSystem() + assert_true(gcs.xform is not None) + + # Smoke test + gcs.xform = None + gcs.print_summary() + gcs.to_xml() + + +def test_gifti_image(): + img = GiftiImage() + assert_true(img.darrays is not None) + assert_true(img.meta is not None) + assert_true(img.labeltable is not None) + + assert_raises(ValueError, img.add_gifti_data_array, 'not-a-data-array') From d6e09de603fe4c1b27b0f65b8e451e20151eaff4 Mon Sep 17 00:00:00 2001 From: Ben Cipollini Date: Sat, 17 Oct 2015 07:36:08 -0500 Subject: [PATCH 2/3] ValueError=>TypeError --- nibabel/gifti/gifti.py | 12 ++++++------ nibabel/gifti/tests/test_gifti.py | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/nibabel/gifti/gifti.py b/nibabel/gifti/gifti.py index 528a96e742..eac9245a94 100644 --- a/nibabel/gifti/gifti.py +++ b/nibabel/gifti/gifti.py @@ -155,6 +155,7 @@ def rgba(self, rgba): raise ValueError('rgba must be length 4.') self.red, self.green, self.blue, self.alpha = rgba + def _arr2txt(arr, elem_fmt): arr = np.asarray(arr) assert arr.dtype.names is None @@ -404,7 +405,7 @@ def labeltable(self, labeltable): """ if not isinstance(labeltable, GiftiLabelTable): - raise ValueError("Not a valid GiftiLabelTable instance") + raise TypeError("Not a valid GiftiLabelTable instance") self._labeltable = labeltable @np.deprecate_with_doc("Use the gifti_img.labeltable property instead.") @@ -432,7 +433,7 @@ def meta(self, meta): None """ if not isinstance(meta, GiftiMetaData): - raise ValueError("Not a valid GiftiMetaData instance") + raise TypeError("Not a valid GiftiMetaData instance") self._meta = meta @np.deprecate_with_doc("Use the gifti_img.labeltable property instead.") @@ -450,10 +451,9 @@ def add_gifti_data_array(self, dataarr): ---------- dataarr : GiftiDataArray """ - if isinstance(dataarr, GiftiDataArray): - self.darrays.append(dataarr) - else: - raise ValueError("dataarr paramater must be of type GiftiDataArray") + if not isinstance(dataarr, GiftiDataArray): + raise TypeError("dataarr paramater must be of type GiftiDataArray") + self.darrays.append(dataarr) def remove_gifti_data_array(self, ith): """ Removes the ith data array element from the GiftiImage """ diff --git a/nibabel/gifti/tests/test_gifti.py b/nibabel/gifti/tests/test_gifti.py index 87fbabf664..b05fefe8c3 100644 --- a/nibabel/gifti/tests/test_gifti.py +++ b/nibabel/gifti/tests/test_gifti.py @@ -83,7 +83,7 @@ def test_labeltable(): # Try to set to non-table def assign_labeltable(val): img.labeltable = val - assert_raises(ValueError, assign_labeltable, 'not-a-table') + assert_raises(TypeError, assign_labeltable, 'not-a-table') def test_metadata(): @@ -156,4 +156,4 @@ def test_gifti_image(): assert_true(img.meta is not None) assert_true(img.labeltable is not None) - assert_raises(ValueError, img.add_gifti_data_array, 'not-a-data-array') + assert_raises(TypeError, img.add_gifti_data_array, 'not-a-data-array') From 287eae8170037b5b7b101403746abca9f45235e7 Mon Sep 17 00:00:00 2001 From: Ben Cipollini Date: Sat, 17 Oct 2015 08:36:00 -0500 Subject: [PATCH 3/3] Tweak error message, add all TypeError tests, localize properly. --- nibabel/gifti/gifti.py | 2 +- nibabel/gifti/tests/test_gifti.py | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/nibabel/gifti/gifti.py b/nibabel/gifti/gifti.py index eac9245a94..c472d6eff7 100644 --- a/nibabel/gifti/gifti.py +++ b/nibabel/gifti/gifti.py @@ -452,7 +452,7 @@ def add_gifti_data_array(self, dataarr): dataarr : GiftiDataArray """ if not isinstance(dataarr, GiftiDataArray): - raise TypeError("dataarr paramater must be of type GiftiDataArray") + raise TypeError("Not a valid GiftiDataArray instance") self.darrays.append(dataarr) def remove_gifti_data_array(self, ith): diff --git a/nibabel/gifti/tests/test_gifti.py b/nibabel/gifti/tests/test_gifti.py index b05fefe8c3..cc9a09da12 100644 --- a/nibabel/gifti/tests/test_gifti.py +++ b/nibabel/gifti/tests/test_gifti.py @@ -80,11 +80,6 @@ def test_labeltable(): img.labeltable = new_table assert_equal(len(img.labeltable.labels), 2) - # Try to set to non-table - def assign_labeltable(val): - img.labeltable = val - assert_raises(TypeError, assign_labeltable, 'not-a-table') - def test_metadata(): # Test deprecation @@ -156,4 +151,15 @@ def test_gifti_image(): assert_true(img.meta is not None) assert_true(img.labeltable is not None) + # Try to set a non-data-array assert_raises(TypeError, img.add_gifti_data_array, 'not-a-data-array') + + # Try to set to non-table + def assign_labeltable(val): + img.labeltable = val + assert_raises(TypeError, assign_labeltable, 'not-a-table') + + # Try to set to non-table + def assign_metadata(val): + img.meta = val + assert_raises(TypeError, assign_metadata, 'not-a-meta')