Skip to content

Commit 7196a8c

Browse files
committed
TEST: Ensure Nifti1Header.set_intent raises KeyError for unknown intent. Test
its behaviour when allow_unknown=True.
1 parent d1f8c01 commit 7196a8c

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

nibabel/tests/test_nifti1.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -561,8 +561,12 @@ def test_intents(self):
561561
ehdr.set_intent('t test', (10,), name='some score')
562562
assert_equal(ehdr.get_intent(),
563563
('t test', (10.0,), 'some score'))
564-
# invalid intent name
565-
assert_raises(ValueError, ehdr.set_intent, 'no intention')
564+
# unknown intent name or code - unknown name will fail even when
565+
# allow_unknown=True
566+
assert_raises(KeyError, ehdr.set_intent, 'no intention')
567+
assert_raises(KeyError, ehdr.set_intent, 'no intention',
568+
allow_unknown=True)
569+
assert_raises(KeyError, ehdr.set_intent, 32767)
566570
# too many parameters
567571
assert_raises(HeaderDataError, ehdr.set_intent, 't test', (10, 10))
568572
# too few parameters
@@ -575,12 +579,23 @@ def test_intents(self):
575579
ehdr.set_intent('t test', (10,))
576580
assert_equal((ehdr['intent_p2'], ehdr['intent_p3']), (0, 0))
577581
# store intent that is not in nifti1.intent_codes recoder
578-
ehdr.set_intent(code=9999)
579-
assert_equal(ehdr.get_intent(), ('', (), ''))
582+
ehdr.set_intent(9999, allow_unknown=True)
583+
assert_equal(ehdr.get_intent(), ('unknown code 9999', (), ''))
580584
assert_equal(ehdr.get_intent('code'), (9999, (), ''))
581-
ehdr.set_intent(code=9999, name='custom intent')
582-
assert_equal(ehdr.get_intent(), ('', (), 'custom intent'))
583-
assert_equal(ehdr.get_intent('code'), (9999, (), 'custom intent'))
585+
ehdr.set_intent(9999, name='custom intent', allow_unknown=True)
586+
assert_equal(ehdr.get_intent(),
587+
('unknown code 9999', (), 'custom intent'))
588+
assert_equal(ehdr.get_intent('code'), (9999, (), 'custom intent'))
589+
# store unknown intent with parameters. set_intent will set the
590+
# parameters, but get_intent won't return them
591+
ehdr.set_intent(code=9999, params=(1, 2, 3), allow_unknown=True)
592+
assert_equal(ehdr.get_intent(), ('unknown code 9999', (), ''))
593+
assert_equal(ehdr.get_intent('code'), (9999, (), ''))
594+
# unknown intent requires either zero, or three, parameters
595+
assert_raises(HeaderDataError, ehdr.set_intent, 999, (1,),
596+
allow_unknown=True)
597+
assert_raises(HeaderDataError, ehdr.set_intent, 999, (1,2),
598+
allow_unknown=True)
584599

585600
def test_set_slice_times(self):
586601
hdr = self.header_class()

0 commit comments

Comments
 (0)