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