@@ -767,6 +767,42 @@ START_TEST(test_file_sm_image_file_meta_memory)
767767}
768768END_TEST
769769
770+ START_TEST (test_file_ct_brain_single )
771+ {
772+ const uint32_t frame_number = 1 ;
773+
774+ char * file_path = fixture_path ("data/test_files/ct_brain_single.dcm" );
775+ DcmFilehandle * filehandle =
776+ dcm_filehandle_create_from_file (NULL , file_path );
777+ free (file_path );
778+ ck_assert_ptr_nonnull (filehandle );
779+
780+ const DcmDataSet * metadata =
781+ dcm_filehandle_get_metadata_subset (NULL , filehandle );
782+ ck_assert_ptr_nonnull (metadata );
783+
784+ ck_assert_int_ne (dcm_filehandle_prepare_read_frame (NULL , filehandle ), 0 );
785+
786+ DcmFrame * frame = dcm_filehandle_read_frame (NULL ,
787+ filehandle ,
788+ frame_number );
789+ ck_assert_uint_eq (dcm_frame_get_number (frame ), frame_number );
790+ ck_assert_uint_eq (dcm_frame_get_rows (frame ), 10 );
791+ ck_assert_uint_eq (dcm_frame_get_columns (frame ), 10 );
792+ ck_assert_uint_eq (dcm_frame_get_samples_per_pixel (frame ), 3 );
793+ ck_assert_uint_eq (dcm_frame_get_bits_allocated (frame ), 8 );
794+ ck_assert_uint_eq (dcm_frame_get_bits_stored (frame ), 8 );
795+ ck_assert_uint_eq (dcm_frame_get_high_bit (frame ), 7 );
796+ ck_assert_uint_eq (dcm_frame_get_pixel_representation (frame ), 0 );
797+ ck_assert_uint_eq (dcm_frame_get_planar_configuration (frame ), 0 );
798+ ck_assert_str_eq (dcm_frame_get_photometric_interpretation (frame ), "RGB" );
799+ ck_assert_str_eq (dcm_frame_get_transfer_syntax_uid (frame ),
800+ "1.2.840.10008.1.2.1" );
801+
802+ dcm_frame_destroy (frame );
803+ dcm_filehandle_destroy (filehandle );
804+ }
805+ END_TEST
770806
771807static Suite * create_main_suite (void )
772808{
@@ -846,12 +882,24 @@ static Suite *create_file_suite(void)
846882 return suite ;
847883}
848884
885+ static Suite * create_single_frame_suite (void )
886+ {
887+ Suite * suite = suite_create ("single_frame" );
888+
889+ TCase * frame_case = tcase_create ("ct_brain_frame" );
890+ tcase_add_test (frame_case , test_file_ct_brain_single );
891+ suite_add_tcase (suite , frame_case );
892+
893+ return suite ;
894+ }
895+
849896
850897int main (void )
851898{
852899 SRunner * runner = srunner_create (create_main_suite ());
853900 srunner_add_suite (runner , create_data_suite ());
854901 srunner_add_suite (runner , create_file_suite ());
902+ srunner_add_suite (runner , create_single_frame_suite ());
855903 srunner_run_all (runner , CK_VERBOSE );
856904 int number_failed = srunner_ntests_failed (runner );
857905 srunner_free (runner );
0 commit comments