xref: /llvm-project/lldb/unittests/Utility/UUIDTest.cpp (revision 2f93fd1f50116cf4c17a491ef94869c784b47a96)
1 //===-- UUIDTest.cpp --------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "gtest/gtest.h"
11 
12 #include "lldb/Utility/UUID.h"
13 
14 using namespace lldb_private;
15 
16 TEST(UUIDTest, RelationalOperators) {
17   UUID empty;
18   UUID a16 = UUID::fromData("1234567890123456", 16);
19   UUID b16 = UUID::fromData("1234567890123457", 16);
20   UUID a20 = UUID::fromData("12345678901234567890", 20);
21   UUID b20 = UUID::fromData("12345678900987654321", 20);
22 
23   EXPECT_EQ(empty, empty);
24   EXPECT_EQ(a16, a16);
25   EXPECT_EQ(a20, a20);
26 
27   EXPECT_NE(a16, b16);
28   EXPECT_NE(a20, b20);
29   EXPECT_NE(a16, a20);
30   EXPECT_NE(empty, a16);
31 
32   EXPECT_LT(empty, a16);
33   EXPECT_LT(a16, a20);
34   EXPECT_LT(a16, b16);
35   EXPECT_GT(a20, b20);
36 }
37 
38 TEST(UUIDTest, Validity) {
39   UUID empty;
40   std::vector<uint8_t> zeroes(20, 0);
41   UUID a16 = UUID::fromData(zeroes.data(), 16);
42   UUID a20 = UUID::fromData(zeroes.data(), 20);
43   UUID a16_0 = UUID::fromOptionalData(zeroes.data(), 16);
44   UUID a20_0 = UUID::fromOptionalData(zeroes.data(), 20);
45   EXPECT_FALSE(empty);
46   EXPECT_TRUE(a16);
47   EXPECT_TRUE(a20);
48   EXPECT_FALSE(a16_0);
49   EXPECT_FALSE(a20_0);
50 }
51 
52 TEST(UUIDTest, SetFromStringRef) {
53   UUID u;
54   EXPECT_EQ(32u, u.SetFromStringRef("404142434445464748494a4b4c4d4e4f"));
55   EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u);
56 
57   EXPECT_EQ(36u, u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f"));
58   EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u);
59 
60   EXPECT_EQ(45u, u.SetFromStringRef(
61                      "40-41-42-43-4445464748494a4b4c4d4e4f-50515253", 20));
62   EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u);
63 
64   EXPECT_EQ(0u, u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f", 20));
65   EXPECT_EQ(0u, u.SetFromStringRef("40xxxxx"));
66   EXPECT_EQ(0u, u.SetFromStringRef(""));
67   EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u)
68       << "uuid was changed by failed parse calls";
69 
70   EXPECT_EQ(
71       32u, u.SetFromStringRef("404142434445464748494a4b4c4d4e4f-50515253", 16));
72   EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u);
73 }
74