xref: /llvm-project/lldb/unittests/Utility/UUIDTest.cpp (revision 77c397f465f170df8f39f79fde93b724205b8009)
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 
75 TEST(UUIDTest, StringConverion) {
76   EXPECT_EQ("40414243", UUID::fromData("@ABC", 4).GetAsString());
77   EXPECT_EQ("40414243-4445-4647", UUID::fromData("@ABCDEFG", 8).GetAsString());
78   EXPECT_EQ("40414243-4445-4647-4849-4A4B",
79             UUID::fromData("@ABCDEFGHIJK", 12).GetAsString());
80   EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F",
81             UUID::fromData("@ABCDEFGHIJKLMNO", 16).GetAsString());
82   EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F-50515253",
83             UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20).GetAsString());
84 }
85