Skip to content

Commit d05f135

Browse files
committed
TST+BF: fix up duplicate test names; extend tests
Fix up a couple of duplicate test names. Remove test of setting string to DataArray - it's not allowed in the spec. Add tests for dataarray initialization.
1 parent 1c0a017 commit d05f135

File tree

1 file changed

+96
-42
lines changed

1 file changed

+96
-42
lines changed

nibabel/gifti/tests/test_gifti.py

Lines changed: 96 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
""" Testing gifti objects
22
"""
33
import warnings
4+
import sys
45

56
import numpy as np
67

78
import nibabel as nib
89
from nibabel.externals.six import string_types
910
from nibabel.gifti import (GiftiImage, GiftiDataArray, GiftiLabel,
10-
GiftiLabelTable, GiftiMetaData, GiftiNVPairs)
11+
GiftiLabelTable, GiftiMetaData, GiftiNVPairs,
12+
GiftiCoordSystem)
1113
from nibabel.gifti.gifti import data_tag
1214
from nibabel.nifti1 import data_type_codes
1315

@@ -24,6 +26,8 @@ def test_gifti_image():
2426
# arguments.
2527
gi = GiftiImage()
2628
assert_equal(gi.darrays, [])
29+
assert_equal(gi.meta.metadata, {})
30+
assert_equal(gi.labeltable.labels, [])
2731
arr = np.zeros((2, 3))
2832
gi.darrays.append(arr)
2933
# Now check we didn't overwrite the default arg
@@ -45,13 +49,6 @@ def test_gifti_image():
4549
gi.remove_gifti_data_array(0)
4650
assert_equal(gi.numDA, 0)
4751

48-
# Test from string
49-
da = GiftiDataArray.from_array('zzzzz')
50-
gi.add_gifti_data_array(da)
51-
assert_equal(gi.numDA, 1)
52-
assert_array_equal(gi.darrays[0].data, data)
53-
54-
5552
# Remove from empty
5653
gi = GiftiImage()
5754
gi.remove_gifti_data_array_by_intent(0)
@@ -69,7 +66,93 @@ def test_gifti_image():
6966
assert_equal(gi.numDA, 0)
7067

7168

72-
def test_dataarray():
69+
def test_gifti_image_bad_inputs():
70+
img = GiftiImage()
71+
# Try to set a non-data-array
72+
assert_raises(TypeError, img.add_gifti_data_array, 'not-a-data-array')
73+
74+
# Try to set to non-table
75+
def assign_labeltable(val):
76+
img.labeltable = val
77+
assert_raises(TypeError, assign_labeltable, 'not-a-table')
78+
79+
# Try to set to non-table
80+
def assign_metadata(val):
81+
img.meta = val
82+
assert_raises(TypeError, assign_metadata, 'not-a-meta')
83+
84+
85+
def test_dataarray_empty():
86+
# Test default initialization of DataArray
87+
null_da = GiftiDataArray()
88+
assert_equal(null_da.data, None)
89+
assert_equal(null_da.intent, 0)
90+
assert_equal(null_da.datatype, 0)
91+
assert_equal(null_da.encoding, 3)
92+
assert_equal(null_da.endian, 2 if sys.byteorder == 'little' else 1)
93+
assert_equal(null_da.coordsys.dataspace, 0)
94+
assert_equal(null_da.coordsys.xformspace, 0)
95+
assert_array_equal(null_da.coordsys.xform, np.eye(4))
96+
assert_equal(null_da.ind_ord, 1)
97+
assert_equal(null_da.meta.metadata, {})
98+
assert_equal(null_da.ext_fname, '')
99+
assert_equal(null_da.ext_offset, 0)
100+
101+
102+
def test_dataarray_init():
103+
# Test non-default dataarray initialization
104+
gda = GiftiDataArray # shortcut
105+
assert_equal(gda(None).data, None)
106+
arr = np.arange(12, dtype=np.float32).reshape((3, 4))
107+
assert_array_equal(gda(arr).data, arr)
108+
# Intents
109+
assert_raises(KeyError, gda, intent=1) # Invalid code
110+
assert_raises(KeyError, gda, intent='not an intent') # Invalid string
111+
assert_equal(gda(intent=2).intent, 2)
112+
assert_equal(gda(intent='correlation').intent, 2)
113+
assert_equal(gda(intent='NIFTI_INTENT_CORREL').intent, 2)
114+
# Datatype
115+
assert_equal(gda(datatype=2).datatype, 2)
116+
assert_equal(gda(datatype='uint8').datatype, 2)
117+
assert_raises(KeyError, gda, datatype='not_datatype')
118+
# Float32 datatype comes from array if datatype not set
119+
assert_equal(gda(arr).datatype, 16)
120+
# Can be overriden by init
121+
assert_equal(gda(arr, datatype='uint8').datatype, 2)
122+
# Encoding
123+
assert_equal(gda(encoding=1).encoding, 1)
124+
assert_equal(gda(encoding='ASCII').encoding, 1)
125+
assert_equal(gda(encoding='GIFTI_ENCODING_ASCII').encoding, 1)
126+
assert_raises(KeyError, gda, encoding='not an encoding')
127+
# Endian
128+
assert_equal(gda(endian=1).endian, 1)
129+
assert_equal(gda(endian='big').endian, 1)
130+
assert_equal(gda(endian='GIFTI_ENDIAN_BIG').endian, 1)
131+
assert_raises(KeyError, gda, endian='not endian code')
132+
# CoordSys
133+
aff = np.diag([2, 3, 4, 1])
134+
cs = GiftiCoordSystem(1, 2, aff)
135+
da = gda(coordsys=cs)
136+
assert_equal(da.coordsys.dataspace, 1)
137+
assert_equal(da.coordsys.xformspace, 2)
138+
assert_array_equal(da.coordsys.xform, aff)
139+
# Ordering
140+
assert_equal(gda(ordering=2).ind_ord, 2)
141+
assert_equal(gda(ordering='F').ind_ord, 2)
142+
assert_equal(gda(ordering='ColumnMajorOrder').ind_ord, 2)
143+
assert_raises(KeyError, gda, ordering='not an ordering')
144+
# metadata
145+
meta_dict=dict(one=1, two=2)
146+
assert_equal(gda(meta=GiftiMetaData.from_dict(meta_dict)).meta.metadata,
147+
meta_dict)
148+
assert_equal(gda(meta=meta_dict).meta.metadata, meta_dict)
149+
assert_equal(gda(meta=None).meta.metadata, {})
150+
# ext_fname and ext_offset
151+
assert_equal(gda(ext_fname='foo').ext_fname, 'foo')
152+
assert_equal(gda(ext_offset=12).ext_offset, 12)
153+
154+
155+
def test_dataarray_from_array():
73156
for dt_code in data_type_codes.value_set():
74157
data_type = data_type_codes.type[dt_code]
75158
if data_type is np.void: # not supported
@@ -104,25 +187,16 @@ def test_labeltable():
104187

105188

106189
def test_metadata():
190+
nvpair = GiftiNVPairs('key', 'value')
191+
da = GiftiMetaData(nvpair=nvpair)
192+
assert_equal(da.data[0].name, 'key')
193+
assert_equal(da.data[0].value, 'value')
107194
# Test deprecation
108195
with clear_and_catch_warnings() as w:
109196
warnings.filterwarnings('always', category=DeprecationWarning)
110197
assert_equal(len(GiftiDataArray().get_metadata()), 0)
111198
assert_equal(len(w), 1)
112199

113-
# Test deprecation
114-
with clear_and_catch_warnings() as w:
115-
warnings.filterwarnings('once', category=DeprecationWarning)
116-
assert_equal(len(GiftiMetaData().get_metadata()), 0)
117-
assert_equal(len(w), 1)
118-
119-
120-
def test_metadata():
121-
nvpair = GiftiNVPairs('key', 'value')
122-
da = GiftiMetaData(nvpair=nvpair)
123-
assert_equal(da.data[0].name, 'key')
124-
assert_equal(da.data[0].value, 'value')
125-
126200

127201
def test_gifti_label_rgba():
128202
rgba = np.random.rand(4)
@@ -177,26 +251,6 @@ def test_gifti_coord():
177251
gcs.to_xml()
178252

179253

180-
def test_gifti_image():
181-
img = GiftiImage()
182-
assert_true(img.darrays is not None)
183-
assert_true(img.meta is not None)
184-
assert_true(img.labeltable is not None)
185-
186-
# Try to set a non-data-array
187-
assert_raises(TypeError, img.add_gifti_data_array, 'not-a-data-array')
188-
189-
# Try to set to non-table
190-
def assign_labeltable(val):
191-
img.labeltable = val
192-
assert_raises(TypeError, assign_labeltable, 'not-a-table')
193-
194-
# Try to set to non-table
195-
def assign_metadata(val):
196-
img.meta = val
197-
assert_raises(TypeError, assign_metadata, 'not-a-meta')
198-
199-
200254
def test_data_tag_deprecated():
201255
with clear_and_catch_warnings() as w:
202256
warnings.filterwarnings('once', category=DeprecationWarning)

0 commit comments

Comments
 (0)