@@ -294,6 +294,27 @@ START_TEST(test_element_CS_multivalue)
294294END_TEST
295295
296296
297+ START_TEST (test_element_CS_multivalue_empty )
298+ {
299+ uint32_t tag = 0x00080008 ;
300+ uint32_t vm = 0 ;
301+
302+ char * * values = malloc (vm * sizeof (char * ));
303+
304+ DcmElement * element = dcm_element_create (NULL , tag , DCM_VR_CS );
305+ (void ) dcm_element_set_value_string_multi (NULL , element , values , vm , true);
306+
307+ ck_assert_int_eq (dcm_element_get_tag (element ), tag );
308+ ck_assert_int_eq (dcm_element_get_vr (element ), DCM_VR_CS );
309+ ck_assert_int_eq (dcm_element_get_length (element ),
310+ compute_length_of_string_value_multi (values , vm ));
311+ ck_assert_int_eq (dcm_element_is_multivalued (element ), false);
312+
313+ dcm_element_destroy (element );
314+ }
315+ END_TEST
316+
317+
297318START_TEST (test_element_DS )
298319{
299320 uint32_t tag = 0x0040072A ;
@@ -474,6 +495,56 @@ START_TEST(test_element_US)
474495END_TEST
475496
476497
498+ START_TEST (test_element_US_multivalue )
499+ {
500+ uint32_t tag = 0x00280010 ;
501+ uint16_t value [] = {512 , 513 , 514 , 515 };
502+ uint32_t vm = sizeof (value ) / sizeof (value [0 ]);
503+
504+ DcmElement * element = dcm_element_create (NULL , tag , DCM_VR_US );
505+ (void ) dcm_element_set_value_numeric_multi (NULL ,
506+ element , (int * ) value , vm , false);
507+
508+ ck_assert_int_eq (dcm_element_get_tag (element ), tag );
509+ ck_assert_int_eq (dcm_element_get_vr (element ), DCM_VR_US );
510+ ck_assert_int_eq (dcm_element_get_length (element ), sizeof (value ));
511+ ck_assert_int_eq (dcm_element_is_multivalued (element ), true);
512+
513+ for (uint32_t i = 0 ; i < vm ; i ++ ) {
514+ int64_t integer ;
515+ (void ) dcm_element_get_value_integer (NULL , element , i , & integer );
516+ ck_assert_int_eq (value [i ], integer );
517+ }
518+
519+ dcm_element_print (element , 0 );
520+
521+ dcm_element_destroy (element );
522+ }
523+ END_TEST
524+
525+
526+ START_TEST (test_element_US_multivalue_empty )
527+ {
528+ uint32_t tag = 0x00280010 ;
529+ uint16_t value [] = {};
530+ uint32_t vm = sizeof (value ) / sizeof (value [0 ]);
531+
532+ DcmElement * element = dcm_element_create (NULL , tag , DCM_VR_US );
533+ (void ) dcm_element_set_value_numeric_multi (NULL ,
534+ element , (int * ) & value , vm , false);
535+
536+ ck_assert_int_eq (dcm_element_get_tag (element ), tag );
537+ ck_assert_int_eq (dcm_element_get_vr (element ), DCM_VR_US );
538+ ck_assert_int_eq (dcm_element_get_length (element ), sizeof (value ));
539+ ck_assert_int_eq (dcm_element_is_multivalued (element ), false);
540+
541+ dcm_element_print (element , 0 );
542+
543+ dcm_element_destroy (element );
544+ }
545+ END_TEST
546+
547+
477548START_TEST (test_sequence )
478549{
479550 DcmElement * element ;
@@ -738,13 +809,16 @@ static Suite *create_data_suite(void)
738809 tcase_add_test (element_case , test_element_AE );
739810 tcase_add_test (element_case , test_element_AS );
740811 tcase_add_test (element_case , test_element_CS_multivalue );
812+ tcase_add_test (element_case , test_element_CS_multivalue_empty );
741813 tcase_add_test (element_case , test_element_DS );
742814 tcase_add_test (element_case , test_element_IS );
743815 tcase_add_test (element_case , test_element_ST );
744816 tcase_add_test (element_case , test_element_SQ );
745817 tcase_add_test (element_case , test_element_SQ_empty );
746818 tcase_add_test (element_case , test_element_UI );
747819 tcase_add_test (element_case , test_element_US );
820+ tcase_add_test (element_case , test_element_US_multivalue );
821+ tcase_add_test (element_case , test_element_US_multivalue_empty );
748822 suite_add_tcase (suite , element_case );
749823
750824 TCase * dataset_case = tcase_create ("dataset" );
0 commit comments