@@ -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