summaryrefslogtreecommitdiffstats
path: root/tools/slang-unit-test/unit-test-path.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-09-24 11:33:44 -0700
committerGitHub <noreply@github.com>2021-09-24 11:33:44 -0700
commitbec8e6aec85b6e3f875c58bdd59eb15613978358 (patch)
tree0791fb2ce1be786c17e5a6ee489ed3065fc07332 /tools/slang-unit-test/unit-test-path.cpp
parentf2a3c933bc11a498c622fa18694c84beca8ca031 (diff)
Move existing unit tests to a standalone dll. (#1945)
Diffstat (limited to 'tools/slang-unit-test/unit-test-path.cpp')
-rw-r--r--tools/slang-unit-test/unit-test-path.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/tools/slang-unit-test/unit-test-path.cpp b/tools/slang-unit-test/unit-test-path.cpp
new file mode 100644
index 000000000..c27feee9c
--- /dev/null
+++ b/tools/slang-unit-test/unit-test-path.cpp
@@ -0,0 +1,62 @@
+// unit-test-path.cpp
+
+#include "../../source/core/slang-io.h"
+
+#include "tools/unit-test/slang-unit-test.h"
+
+using namespace Slang;
+
+SLANG_UNIT_TEST(path)
+{
+#if SLANG_WINDOWS_FAMILY
+ // Disable for now on non windows has some problems on *some* Linux based CI.
+ {
+ String path;
+ SlangResult res = Path::getCanonical("source/slang", path);
+ SLANG_CHECK(SLANG_SUCCEEDED(res));
+
+ String parentPath;
+ res = Path::getCanonical("source", parentPath);
+ SLANG_CHECK(SLANG_SUCCEEDED(res));
+
+ String parentPath2 = Path::getParentDirectory(path);
+ SLANG_CHECK(parentPath == parentPath2);
+ }
+#endif
+ // Test the paths
+ {
+ SLANG_CHECK(Path::simplify(".") == ".");
+ SLANG_CHECK(Path::simplify("..") == "..");
+ SLANG_CHECK(Path::simplify("blah/..") == ".");
+
+ SLANG_CHECK(Path::simplify("blah/.././a") == "a");
+
+ SLANG_CHECK(Path::simplify("a:/what/.././../is/./../this/.") == "a:/../this");
+
+ SLANG_CHECK(Path::simplify("a:/what/.././../is/./../this/./") == "a:/../this");
+
+ SLANG_CHECK(Path::simplify("a:\\what\\..\\.\\..\\is\\.\\..\\this\\.\\") == "a:/../this");
+
+ SLANG_CHECK(Path::simplify("tests/preprocessor/.\\pragma-once-a.h") == "tests/preprocessor/pragma-once-a.h");
+
+
+ SLANG_CHECK(Path::hasRelativeElement("."));
+ SLANG_CHECK(Path::hasRelativeElement(".."));
+ SLANG_CHECK(Path::hasRelativeElement("blah/.."));
+
+ SLANG_CHECK(Path::hasRelativeElement("blah/.././a"));
+ SLANG_CHECK(Path::hasRelativeElement("a") == false);
+ SLANG_CHECK(Path::hasRelativeElement("blah/a") == false);
+ SLANG_CHECK(Path::hasRelativeElement("a:\\blah/a") == false);
+
+
+ SLANG_CHECK(Path::hasRelativeElement("a:/what/.././../is/./../this/."));
+
+ SLANG_CHECK(Path::hasRelativeElement("a:/what/.././../is/./../this/./"));
+
+ SLANG_CHECK(Path::hasRelativeElement("a:\\what\\..\\.\\..\\is\\.\\..\\this\\.\\"));
+
+
+ }
+}
+