summaryrefslogtreecommitdiff
path: root/unittests/Utility/UUIDTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/Utility/UUIDTest.cpp')
-rw-r--r--unittests/Utility/UUIDTest.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/unittests/Utility/UUIDTest.cpp b/unittests/Utility/UUIDTest.cpp
new file mode 100644
index 000000000000..e84844116678
--- /dev/null
+++ b/unittests/Utility/UUIDTest.cpp
@@ -0,0 +1,84 @@
+//===-- UUIDTest.cpp --------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "gtest/gtest.h"
+
+#include "lldb/Utility/UUID.h"
+
+using namespace lldb_private;
+
+TEST(UUIDTest, RelationalOperators) {
+ UUID empty;
+ UUID a16 = UUID::fromData("1234567890123456", 16);
+ UUID b16 = UUID::fromData("1234567890123457", 16);
+ UUID a20 = UUID::fromData("12345678901234567890", 20);
+ UUID b20 = UUID::fromData("12345678900987654321", 20);
+
+ EXPECT_EQ(empty, empty);
+ EXPECT_EQ(a16, a16);
+ EXPECT_EQ(a20, a20);
+
+ EXPECT_NE(a16, b16);
+ EXPECT_NE(a20, b20);
+ EXPECT_NE(a16, a20);
+ EXPECT_NE(empty, a16);
+
+ EXPECT_LT(empty, a16);
+ EXPECT_LT(a16, a20);
+ EXPECT_LT(a16, b16);
+ EXPECT_GT(a20, b20);
+}
+
+TEST(UUIDTest, Validity) {
+ UUID empty;
+ std::vector<uint8_t> zeroes(20, 0);
+ UUID a16 = UUID::fromData(zeroes.data(), 16);
+ UUID a20 = UUID::fromData(zeroes.data(), 20);
+ UUID a16_0 = UUID::fromOptionalData(zeroes.data(), 16);
+ UUID a20_0 = UUID::fromOptionalData(zeroes.data(), 20);
+ EXPECT_FALSE(empty);
+ EXPECT_TRUE(a16);
+ EXPECT_TRUE(a20);
+ EXPECT_FALSE(a16_0);
+ EXPECT_FALSE(a20_0);
+}
+
+TEST(UUIDTest, SetFromStringRef) {
+ UUID u;
+ EXPECT_EQ(32u, u.SetFromStringRef("404142434445464748494a4b4c4d4e4f"));
+ EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u);
+
+ EXPECT_EQ(36u, u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f"));
+ EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u);
+
+ EXPECT_EQ(45u, u.SetFromStringRef(
+ "40-41-42-43-4445464748494a4b4c4d4e4f-50515253", 20));
+ EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u);
+
+ EXPECT_EQ(0u, u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f", 20));
+ EXPECT_EQ(0u, u.SetFromStringRef("40xxxxx"));
+ EXPECT_EQ(0u, u.SetFromStringRef(""));
+ EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u)
+ << "uuid was changed by failed parse calls";
+
+ EXPECT_EQ(
+ 32u, u.SetFromStringRef("404142434445464748494a4b4c4d4e4f-50515253", 16));
+ EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u);
+}
+
+TEST(UUIDTest, StringConverion) {
+ EXPECT_EQ("40414243", UUID::fromData("@ABC", 4).GetAsString());
+ EXPECT_EQ("40414243-4445-4647", UUID::fromData("@ABCDEFG", 8).GetAsString());
+ EXPECT_EQ("40414243-4445-4647-4849-4A4B",
+ UUID::fromData("@ABCDEFGHIJK", 12).GetAsString());
+ EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F",
+ UUID::fromData("@ABCDEFGHIJKLMNO", 16).GetAsString());
+ EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F-50515253",
+ UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20).GetAsString());
+}