summaryrefslogtreecommitdiff
path: root/tools/slang-unit-test/unit-test-short-list.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-short-list.cpp
parentf2a3c933bc11a498c622fa18694c84beca8ca031 (diff)
Move existing unit tests to a standalone dll. (#1945)
Diffstat (limited to 'tools/slang-unit-test/unit-test-short-list.cpp')
-rw-r--r--tools/slang-unit-test/unit-test-short-list.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/tools/slang-unit-test/unit-test-short-list.cpp b/tools/slang-unit-test/unit-test-short-list.cpp
new file mode 100644
index 000000000..2760d633e
--- /dev/null
+++ b/tools/slang-unit-test/unit-test-short-list.cpp
@@ -0,0 +1,77 @@
+// unit-test-path.cpp
+
+#include "source/core/slang-basic.h"
+#include "tools/unit-test/slang-unit-test.h"
+
+using namespace Slang;
+
+template<typename T>
+static bool _checkArrayView(ArrayView<T> v0, ArrayView<T> v1)
+{
+ if (v0.getCount() != v1.getCount())
+ return false;
+ for (Index i = 0; i < v0.getCount(); i++)
+ if (v0[i] != v1[i])
+ return false;
+ return true;
+}
+
+SLANG_UNIT_TEST(shortList)
+{
+ {
+ ShortList<String, 4> shortList = { "a", "b", "c" };
+ shortList.add("d");
+ auto arrayView = shortList.getArrayView();
+ SLANG_CHECK(arrayView.ownsStorage == false);
+ SLANG_CHECK(_checkArrayView(arrayView.arrayView,
+ List<String>{"a", "b", "c", "d"}.getArrayView()));
+ shortList.add("e");
+ auto arrayView2 = shortList.getArrayView();
+ SLANG_CHECK(arrayView2.ownsStorage == true);
+ SLANG_CHECK(_checkArrayView(arrayView2.arrayView,
+ List<String>{"a", "b", "c", "d", "e"}.getArrayView()));
+ auto arrayView3 = shortList.getArrayView(0, 2);
+ SLANG_CHECK(arrayView3.ownsStorage == false);
+ SLANG_CHECK(_checkArrayView(arrayView3.arrayView,
+ List<String>{"a", "b"}.getArrayView()));
+ auto arrayView4 = shortList.getArrayView(4, 1);
+ SLANG_CHECK(arrayView4.ownsStorage == false);
+ SLANG_CHECK(_checkArrayView(arrayView4.arrayView,
+ List<String>{"e"}.getArrayView()));
+ auto arrayView5 = shortList.getArrayView(2, 3);
+ SLANG_CHECK(arrayView5.ownsStorage == true);
+ SLANG_CHECK(_checkArrayView(arrayView5.arrayView,
+ List<String>{"c", "d", "e"}.getArrayView()));
+
+ ShortList<String, 1> copy2;
+ ShortList<String, 2> copy1;
+ copy1 = shortList;
+ for (auto item : copy1)
+ copy2.add(item);
+ SLANG_CHECK(_checkArrayView(copy2.getArrayView().arrayView,
+ List<String>{"a", "b", "c", "d", "e"}.getArrayView()));
+
+ SLANG_CHECK(copy2.indexOf("a") == 0);
+ SLANG_CHECK(copy2.indexOf("e") == 4);
+
+ SLANG_CHECK(copy2.lastIndexOf("a") == 0);
+ SLANG_CHECK(copy2.lastIndexOf("e") == 4);
+
+ copy2.compress();
+ copy2.add("f");
+ copy2.fastRemove("c");
+ copy2.compress();
+ SLANG_CHECK(_checkArrayView(copy2.getArrayView().arrayView,
+ List<String>{"a", "b", "f", "d", "e"}.getArrayView()));
+
+ shortList.removeLast();
+ shortList.removeLast();
+ shortList.compress();
+ SLANG_CHECK(_checkArrayView(shortList.getArrayView().arrayView,
+ List<String>{"a", "b", "c"}.getArrayView()));
+ shortList.add("d");
+ shortList.add("e");
+ SLANG_CHECK(_checkArrayView(shortList.getArrayView().arrayView,
+ List<String>{"a", "b", "c", "d", "e"}.getArrayView()));
+ }
+}