Mercurial > hg > orthanc
comparison OrthancFramework/UnitTestsSources/FrameworkTests.cpp @ 4325:b96aedfa8cc1
unit tests now running in WebAssembly
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 24 Nov 2020 16:21:29 +0100 |
parents | a38376b80cd1 |
children | 9684a690ca63 |
comparison
equal
deleted
inserted
replaced
4324:433e94d08e36 | 4325:b96aedfa8cc1 |
---|---|
32 #include "../Sources/EnumerationDictionary.h" | 32 #include "../Sources/EnumerationDictionary.h" |
33 | 33 |
34 #include <gtest/gtest.h> | 34 #include <gtest/gtest.h> |
35 | 35 |
36 #include "../Sources/DicomFormat/DicomTag.h" | 36 #include "../Sources/DicomFormat/DicomTag.h" |
37 #include "../Sources/FileBuffer.h" | |
38 #include "../Sources/HttpServer/HttpToolbox.h" | 37 #include "../Sources/HttpServer/HttpToolbox.h" |
39 #include "../Sources/Logging.h" | 38 #include "../Sources/Logging.h" |
40 #include "../Sources/MetricsRegistry.h" | |
41 #include "../Sources/OrthancException.h" | 39 #include "../Sources/OrthancException.h" |
42 #include "../Sources/SystemToolbox.h" | |
43 #include "../Sources/TemporaryFile.h" | |
44 #include "../Sources/Toolbox.h" | 40 #include "../Sources/Toolbox.h" |
41 | |
42 #if ORTHANC_SANDBOXED != 1 | |
43 # include "../Sources/FileBuffer.h" | |
44 # include "../Sources/MetricsRegistry.h" | |
45 # include "../Sources/SystemToolbox.h" | |
46 # include "../Sources/TemporaryFile.h" | |
47 #endif | |
45 | 48 |
46 #include <ctype.h> | 49 #include <ctype.h> |
47 | 50 |
48 | 51 |
49 using namespace Orthanc; | 52 using namespace Orthanc; |
296 ASSERT_TRUE(Toolbox::IsChildUri(c5, c3)); | 299 ASSERT_TRUE(Toolbox::IsChildUri(c5, c3)); |
297 ASSERT_TRUE(Toolbox::IsChildUri(c5, c4)); | 300 ASSERT_TRUE(Toolbox::IsChildUri(c5, c4)); |
298 ASSERT_TRUE(Toolbox::IsChildUri(c5, c5)); | 301 ASSERT_TRUE(Toolbox::IsChildUri(c5, c5)); |
299 } | 302 } |
300 | 303 |
304 | |
305 #if ORTHANC_SANDBOXED != 1 | |
301 TEST(Uri, AutodetectMimeType) | 306 TEST(Uri, AutodetectMimeType) |
302 { | 307 { |
303 ASSERT_EQ(MimeType_Binary, SystemToolbox::AutodetectMimeType("../NOTES")); | 308 ASSERT_EQ(MimeType_Binary, SystemToolbox::AutodetectMimeType("../NOTES")); |
304 ASSERT_EQ(MimeType_Binary, SystemToolbox::AutodetectMimeType("")); | 309 ASSERT_EQ(MimeType_Binary, SystemToolbox::AutodetectMimeType("")); |
305 ASSERT_EQ(MimeType_Binary, SystemToolbox::AutodetectMimeType("/")); | 310 ASSERT_EQ(MimeType_Binary, SystemToolbox::AutodetectMimeType("/")); |
349 ASSERT_STREQ("image/png", EnumerationToString(SystemToolbox::AutodetectMimeType(".png"))); | 354 ASSERT_STREQ("image/png", EnumerationToString(SystemToolbox::AutodetectMimeType(".png"))); |
350 ASSERT_STREQ("image/svg+xml", EnumerationToString(SystemToolbox::AutodetectMimeType(".svg"))); | 355 ASSERT_STREQ("image/svg+xml", EnumerationToString(SystemToolbox::AutodetectMimeType(".svg"))); |
351 ASSERT_STREQ("text/css", EnumerationToString(SystemToolbox::AutodetectMimeType(".css"))); | 356 ASSERT_STREQ("text/css", EnumerationToString(SystemToolbox::AutodetectMimeType(".css"))); |
352 ASSERT_STREQ("text/html", EnumerationToString(SystemToolbox::AutodetectMimeType(".html"))); | 357 ASSERT_STREQ("text/html", EnumerationToString(SystemToolbox::AutodetectMimeType(".html"))); |
353 } | 358 } |
359 #endif | |
360 | |
354 | 361 |
355 TEST(Toolbox, ComputeMD5) | 362 TEST(Toolbox, ComputeMD5) |
356 { | 363 { |
357 std::string s; | 364 std::string s; |
358 | 365 |
372 ASSERT_EQ("2fd4e1c6-7a2d28fc-ed849ee1-bb76e739-1b93eb12", s); | 379 ASSERT_EQ("2fd4e1c6-7a2d28fc-ed849ee1-bb76e739-1b93eb12", s); |
373 Toolbox::ComputeSHA1(s, ""); | 380 Toolbox::ComputeSHA1(s, ""); |
374 ASSERT_EQ("da39a3ee-5e6b4b0d-3255bfef-95601890-afd80709", s); | 381 ASSERT_EQ("da39a3ee-5e6b4b0d-3255bfef-95601890-afd80709", s); |
375 } | 382 } |
376 | 383 |
384 #if ORTHANC_SANDBOXED != 1 | |
377 TEST(Toolbox, PathToExecutable) | 385 TEST(Toolbox, PathToExecutable) |
378 { | 386 { |
379 printf("[%s]\n", SystemToolbox::GetPathToExecutable().c_str()); | 387 printf("[%s]\n", SystemToolbox::GetPathToExecutable().c_str()); |
380 printf("[%s]\n", SystemToolbox::GetDirectoryOfExecutable().c_str()); | 388 printf("[%s]\n", SystemToolbox::GetDirectoryOfExecutable().c_str()); |
381 } | 389 } |
390 #endif | |
382 | 391 |
383 TEST(Toolbox, StripSpaces) | 392 TEST(Toolbox, StripSpaces) |
384 { | 393 { |
385 ASSERT_EQ("", Toolbox::StripSpaces(" \t \r \n ")); | 394 ASSERT_EQ("", Toolbox::StripSpaces(" \t \r \n ")); |
386 ASSERT_EQ("coucou", Toolbox::StripSpaces(" coucou \t \r \n ")); | 395 ASSERT_EQ("coucou", Toolbox::StripSpaces(" coucou \t \r \n ")); |
565 ASSERT_EQ("/tmp", SystemToolbox::InterpretRelativePath("/tmp", "/tmp")); | 574 ASSERT_EQ("/tmp", SystemToolbox::InterpretRelativePath("/tmp", "/tmp")); |
566 } | 575 } |
567 #endif | 576 #endif |
568 | 577 |
569 | 578 |
579 #if ORTHANC_SANDBOXED != 1 | |
570 TEST(Toolbox, WriteFile) | 580 TEST(Toolbox, WriteFile) |
571 { | 581 { |
572 std::string path; | 582 std::string path; |
573 | 583 |
574 { | 584 { |
611 std::string t; | 621 std::string t; |
612 SystemToolbox::ReadFile(t, tmp.GetPath()); | 622 SystemToolbox::ReadFile(t, tmp.GetPath()); |
613 ASSERT_EQ(s, t); | 623 ASSERT_EQ(s, t); |
614 } | 624 } |
615 } | 625 } |
616 | 626 #endif |
617 | 627 |
628 | |
629 #if ORTHANC_SANDBOXED != 1 | |
618 TEST(Toolbox, FileBuffer) | 630 TEST(Toolbox, FileBuffer) |
619 { | 631 { |
620 FileBuffer f; | 632 FileBuffer f; |
621 f.Append("a", 1); | 633 f.Append("a", 1); |
622 f.Append("", 0); | 634 f.Append("", 0); |
626 f.Read(s); | 638 f.Read(s); |
627 ASSERT_EQ("abc", s); | 639 ASSERT_EQ("abc", s); |
628 | 640 |
629 ASSERT_THROW(f.Append("d", 1), OrthancException); // File is closed | 641 ASSERT_THROW(f.Append("d", 1), OrthancException); // File is closed |
630 } | 642 } |
643 #endif | |
631 | 644 |
632 | 645 |
633 TEST(Toolbox, Wildcard) | 646 TEST(Toolbox, Wildcard) |
634 { | 647 { |
635 ASSERT_EQ("abcd", Toolbox::WildcardToRegularExpression("abcd")); | 648 ASSERT_EQ("abcd", Toolbox::WildcardToRegularExpression("abcd")); |
818 ASSERT_EQ(Endianness_Big, Toolbox::DetectEndianness()); | 831 ASSERT_EQ(Endianness_Big, Toolbox::DetectEndianness()); |
819 # else // __LITTLE_ENDIAN | 832 # else // __LITTLE_ENDIAN |
820 ASSERT_EQ(Endianness_Little, Toolbox::DetectEndianness()); | 833 ASSERT_EQ(Endianness_Little, Toolbox::DetectEndianness()); |
821 # endif | 834 # endif |
822 | 835 |
836 | |
837 /** | |
838 * WebAssembly is always little-endian. | |
839 **/ | |
840 | |
841 #elif defined(__EMSCRIPTEN__) | |
842 ASSERT_EQ(Endianness_Little, Toolbox::DetectEndianness()); | |
823 #else | 843 #else |
824 #error Support your platform here | 844 # error Support your platform here |
825 #endif | 845 #endif |
826 } | 846 } |
827 | 847 |
828 | 848 |
829 #include "../Sources/Endianness.h" | 849 #include "../Sources/Endianness.h" |
1005 throw OrthancException(ErrorCode_ParameterOutOfRange); | 1025 throw OrthancException(ErrorCode_ParameterOutOfRange); |
1006 } | 1026 } |
1007 } | 1027 } |
1008 | 1028 |
1009 | 1029 |
1030 #if ORTHANC_SANDBOXED != 1 | |
1010 TEST(Toolbox, Now) | 1031 TEST(Toolbox, Now) |
1011 { | 1032 { |
1012 LOG(WARNING) << "Local time: " << SystemToolbox::GetNowIsoString(false); | 1033 LOG(WARNING) << "Local time: " << SystemToolbox::GetNowIsoString(false); |
1013 LOG(WARNING) << "Universal time: " << SystemToolbox::GetNowIsoString(true); | 1034 LOG(WARNING) << "Universal time: " << SystemToolbox::GetNowIsoString(true); |
1014 | 1035 |
1017 LOG(WARNING) << "Local DICOM time: [" << date << "] [" << time << "]"; | 1038 LOG(WARNING) << "Local DICOM time: [" << date << "] [" << time << "]"; |
1018 | 1039 |
1019 SystemToolbox::GetNowDicom(date, time, true); | 1040 SystemToolbox::GetNowDicom(date, time, true); |
1020 LOG(WARNING) << "Universal DICOM time: [" << date << "] [" << time << "]"; | 1041 LOG(WARNING) << "Universal DICOM time: [" << date << "] [" << time << "]"; |
1021 } | 1042 } |
1022 | 1043 #endif |
1023 | 1044 |
1024 | 1045 |
1025 #if ORTHANC_ENABLE_PUGIXML == 1 | 1046 #if ORTHANC_ENABLE_PUGIXML == 1 |
1026 TEST(Toolbox, Xml) | 1047 TEST(Toolbox, Xml) |
1027 { | 1048 { |
1038 std::cout << s; | 1059 std::cout << s; |
1039 } | 1060 } |
1040 #endif | 1061 #endif |
1041 | 1062 |
1042 | 1063 |
1043 #if !defined(_WIN32) | 1064 #if !defined(_WIN32) && (ORTHANC_SANDBOXED != 1) |
1044 TEST(Toolbox, ExecuteSystemCommand) | 1065 TEST(Toolbox, ExecuteSystemCommand) |
1045 { | 1066 { |
1046 std::vector<std::string> args(2); | 1067 std::vector<std::string> args(2); |
1047 args[0] = "Hello"; | 1068 args[0] = "Hello"; |
1048 args[1] = "World"; | 1069 args[1] = "World"; |
1198 ASSERT_FALSE(it.GetLine(s)); | 1219 ASSERT_FALSE(it.GetLine(s)); |
1199 } | 1220 } |
1200 } | 1221 } |
1201 | 1222 |
1202 | 1223 |
1224 #if ORTHANC_SANDBOXED != 1 | |
1203 TEST(Toolbox, SubstituteVariables) | 1225 TEST(Toolbox, SubstituteVariables) |
1204 { | 1226 { |
1205 std::map<std::string, std::string> env; | 1227 std::map<std::string, std::string> env; |
1206 env["NOPE"] = "nope"; | 1228 env["NOPE"] = "nope"; |
1207 env["WORLD"] = "world"; | 1229 env["WORLD"] = "world"; |
1226 | 1248 |
1227 env["PATH"] = "hello"; | 1249 env["PATH"] = "hello"; |
1228 ASSERT_EQ("AhelloB", | 1250 ASSERT_EQ("AhelloB", |
1229 Toolbox::SubstituteVariables("A${PATH}B", env)); | 1251 Toolbox::SubstituteVariables("A${PATH}B", env)); |
1230 } | 1252 } |
1231 | 1253 #endif |
1232 | 1254 |
1255 | |
1256 #if ORTHANC_SANDBOXED != 1 | |
1233 TEST(MetricsRegistry, Basic) | 1257 TEST(MetricsRegistry, Basic) |
1234 { | 1258 { |
1235 { | 1259 { |
1236 MetricsRegistry m; | 1260 MetricsRegistry m; |
1237 m.SetEnabled(false); | 1261 m.SetEnabled(false); |
1340 | 1364 |
1341 ASSERT_EQ(MetricsType_MaxOver10Seconds, m.GetMetricsType("a")); | 1365 ASSERT_EQ(MetricsType_MaxOver10Seconds, m.GetMetricsType("a")); |
1342 ASSERT_EQ(MetricsType_MinOver10Seconds, m.GetMetricsType("b")); | 1366 ASSERT_EQ(MetricsType_MinOver10Seconds, m.GetMetricsType("b")); |
1343 } | 1367 } |
1344 } | 1368 } |
1369 #endif |