# HG changeset patch # User Sebastien Jodogne # Date 1574425781 -3600 # Node ID 4de1b019ca713a23d1dd5a1223aaa0c0ec4ff009 # Parent 46a8050583a161d34d18abde7d9cad8a2ae7539b unit test DicomWebJson.PixelSpacing diff -r 46a8050583a1 -r 4de1b019ca71 UnitTestsSources/DicomMapTests.cpp --- a/UnitTestsSources/DicomMapTests.cpp Wed Nov 20 17:59:53 2019 +0100 +++ b/UnitTestsSources/DicomMapTests.cpp Fri Nov 22 13:29:41 2019 +0100 @@ -594,7 +594,7 @@ dicom.ReplacePlainString(DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "1\\2.3\\4"); dicom.ReplacePlainString(DICOM_TAG_IMAGE_POSITION_PATIENT, ""); - Orthanc::DicomWebJsonVisitor visitor; + DicomWebJsonVisitor visitor; dicom.Apply(visitor); { @@ -633,7 +633,7 @@ ASSERT_TRUE(m.LookupStringValue(s, DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false)); std::vector v; - Orthanc::Toolbox::TokenizeString(v, s, '\\'); + Toolbox::TokenizeString(v, s, '\\'); ASSERT_FLOAT_EQ(1.0f, boost::lexical_cast(v[0])); ASSERT_FLOAT_EQ(2.3f, boost::lexical_cast(v[1])); ASSERT_FLOAT_EQ(4.0f, boost::lexical_cast(v[2])); @@ -648,7 +648,7 @@ ParsedDicomFile dicom(false); dicom.ReplacePlainString(DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "1.5\\\\\\2.5"); - Orthanc::DicomWebJsonVisitor visitor; + DicomWebJsonVisitor visitor; dicom.Apply(visitor); { @@ -678,7 +678,7 @@ ASSERT_TRUE(m.LookupStringValue(s, DICOM_TAG_IMAGE_ORIENTATION_PATIENT, false)); std::vector v; - Orthanc::Toolbox::TokenizeString(v, s, '\\'); + Toolbox::TokenizeString(v, s, '\\'); ASSERT_FLOAT_EQ(1.5f, boost::lexical_cast(v[0])); ASSERT_TRUE(v[1].empty()); ASSERT_TRUE(v[2].empty()); @@ -744,7 +744,7 @@ dicom.ReplacePlainString(DicomTag(0x0008, 0x0301), "17"); // US dicom.ReplacePlainString(DicomTag(0x0040, 0x0031), "UT"); - Orthanc::DicomWebJsonVisitor visitor; + DicomWebJsonVisitor visitor; dicom.Apply(visitor); std::string s; @@ -938,7 +938,7 @@ ASSERT_TRUE(dicom.GetDcmtkObject().getDataset()->insert(sequence.release(), false, false).good()); } - Orthanc::DicomWebJsonVisitor visitor; + DicomWebJsonVisitor visitor; dicom.Apply(visitor); ASSERT_EQ("SQ", visitor.GetResult() ["00081115"]["vr"].asString()); @@ -965,6 +965,29 @@ { DicomMap m; m.FromDicomWeb(visitor.GetResult()); - ASSERT_EQ(0u, m.GetSize()); // Sequences are not handled by Orthanc::DicomMap + ASSERT_EQ(0u, m.GetSize()); // Sequences are not handled by DicomMap } } + + +TEST(DicomWebJson, PixelSpacing) +{ + // Test related to locales: Make sure that decimal separator is + // correctly handled (dot "." vs comma ",") + ParsedDicomFile source(false); + source.ReplacePlainString(DICOM_TAG_PIXEL_SPACING, "1.5\\1.3"); + + DicomWebJsonVisitor visitor; + source.Apply(visitor); + + DicomMap target; + target.FromDicomWeb(visitor.GetResult()); + + ASSERT_EQ("DS", visitor.GetResult() ["00280030"]["vr"].asString()); + ASSERT_FLOAT_EQ(1.5f, visitor.GetResult() ["00280030"]["Value"][0].asFloat()); + ASSERT_FLOAT_EQ(1.3f, visitor.GetResult() ["00280030"]["Value"][1].asFloat()); + + std::string s; + ASSERT_TRUE(target.LookupStringValue(s, DICOM_TAG_PIXEL_SPACING, false)); + ASSERT_EQ(s, "1.5\\1.3"); +} diff -r 46a8050583a1 -r 4de1b019ca71 UnitTestsSources/UnitTestsMain.cpp --- a/UnitTestsSources/UnitTestsMain.cpp Wed Nov 20 17:59:53 2019 +0100 +++ b/UnitTestsSources/UnitTestsMain.cpp Fri Nov 22 13:29:41 2019 +0100 @@ -1414,6 +1414,7 @@ int main(int argc, char **argv) { Logging::Initialize(); + Toolbox::InitializeGlobalLocale(NULL); Logging::EnableInfoLevel(true); Toolbox::DetectEndianness(); SystemToolbox::MakeDirectory("UnitTestsResults");