@@ -561,8 +561,12 @@ def test_intents(self):
561
561
ehdr .set_intent ('t test' , (10 ,), name = 'some score' )
562
562
assert_equal (ehdr .get_intent (),
563
563
('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 )
566
570
# too many parameters
567
571
assert_raises (HeaderDataError , ehdr .set_intent , 't test' , (10 , 10 ))
568
572
# too few parameters
@@ -575,12 +579,23 @@ def test_intents(self):
575
579
ehdr .set_intent ('t test' , (10 ,))
576
580
assert_equal ((ehdr ['intent_p2' ], ehdr ['intent_p3' ]), (0 , 0 ))
577
581
# 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 ' , (), '' ))
580
584
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 )
584
599
585
600
def test_set_slice_times (self ):
586
601
hdr = self .header_class ()
0 commit comments