xref: /llvm-project/lldb/unittests/Utility/UUIDTest.cpp (revision 5ad6ed0e5519ed26442cd0a21cdb07f5c53b854e)
180814287SRaphael Isemann //===-- UUIDTest.cpp ------------------------------------------------------===//
2470b286eSPavel Labath //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6470b286eSPavel Labath //
7470b286eSPavel Labath //===----------------------------------------------------------------------===//
8470b286eSPavel Labath 
9470b286eSPavel Labath #include "gtest/gtest.h"
10470b286eSPavel Labath 
11470b286eSPavel Labath #include "lldb/Utility/UUID.h"
12470b286eSPavel Labath 
13470b286eSPavel Labath using namespace lldb_private;
14470b286eSPavel Labath 
TEST(UUIDTest,RelationalOperators)15470b286eSPavel Labath TEST(UUIDTest, RelationalOperators) {
16470b286eSPavel Labath   UUID empty;
17*5ad6ed0eSJim Ingham   UUID a16 = UUID("1234567890123456", 16);
18*5ad6ed0eSJim Ingham   UUID b16 = UUID("1234567890123457", 16);
19*5ad6ed0eSJim Ingham   UUID a20 = UUID("12345678901234567890", 20);
20*5ad6ed0eSJim Ingham   UUID b20 = UUID("12345678900987654321", 20);
21470b286eSPavel Labath 
22470b286eSPavel Labath   EXPECT_EQ(empty, empty);
23470b286eSPavel Labath   EXPECT_EQ(a16, a16);
24470b286eSPavel Labath   EXPECT_EQ(a20, a20);
25470b286eSPavel Labath 
26470b286eSPavel Labath   EXPECT_NE(a16, b16);
27470b286eSPavel Labath   EXPECT_NE(a20, b20);
28470b286eSPavel Labath   EXPECT_NE(a16, a20);
29470b286eSPavel Labath   EXPECT_NE(empty, a16);
30470b286eSPavel Labath 
31470b286eSPavel Labath   EXPECT_LT(empty, a16);
32470b286eSPavel Labath   EXPECT_LT(a16, a20);
33470b286eSPavel Labath   EXPECT_LT(a16, b16);
34470b286eSPavel Labath   EXPECT_GT(a20, b20);
35470b286eSPavel Labath }
362f93fd1fSPavel Labath 
TEST(UUIDTest,Validity)372f93fd1fSPavel Labath TEST(UUIDTest, Validity) {
382f93fd1fSPavel Labath   UUID empty;
392f93fd1fSPavel Labath   std::vector<uint8_t> zeroes(20, 0);
40*5ad6ed0eSJim Ingham   UUID a16 = UUID(zeroes.data(), 16);
41*5ad6ed0eSJim Ingham   UUID a20 = UUID(zeroes.data(), 20);
42f3ecbfc1SJim Ingham   UUID from_str;
43f3ecbfc1SJim Ingham   from_str.SetFromStringRef("00000000-0000-0000-0000-000000000000");
44f3ecbfc1SJim Ingham 
452f93fd1fSPavel Labath   EXPECT_FALSE(empty);
46*5ad6ed0eSJim Ingham   EXPECT_FALSE(a16);
47*5ad6ed0eSJim Ingham   EXPECT_FALSE(a20);
48*5ad6ed0eSJim Ingham   EXPECT_FALSE(from_str);
492f93fd1fSPavel Labath }
502f93fd1fSPavel Labath 
TEST(UUIDTest,SetFromStringRef)512f93fd1fSPavel Labath TEST(UUIDTest, SetFromStringRef) {
522f93fd1fSPavel Labath   UUID u;
531beffc18SJaroslav Sevcik   EXPECT_TRUE(u.SetFromStringRef("404142434445464748494a4b4c4d4e4f"));
54*5ad6ed0eSJim Ingham   EXPECT_EQ(UUID("@ABCDEFGHIJKLMNO", 16), u);
552f93fd1fSPavel Labath 
561beffc18SJaroslav Sevcik   EXPECT_TRUE(u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f"));
57*5ad6ed0eSJim Ingham   EXPECT_EQ(UUID("@ABCDEFGHIJKLMNO", 16), u);
582f93fd1fSPavel Labath 
591beffc18SJaroslav Sevcik   EXPECT_TRUE(
601beffc18SJaroslav Sevcik       u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f-50515253"));
61*5ad6ed0eSJim Ingham   EXPECT_EQ(UUID("@ABCDEFGHIJKLMNOPQRS", 20), u);
622f93fd1fSPavel Labath 
631beffc18SJaroslav Sevcik   EXPECT_TRUE(u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f"));
641beffc18SJaroslav Sevcik 
651beffc18SJaroslav Sevcik   EXPECT_FALSE(u.SetFromStringRef("40xxxxx"));
661beffc18SJaroslav Sevcik   EXPECT_FALSE(u.SetFromStringRef(""));
67*5ad6ed0eSJim Ingham   EXPECT_EQ(UUID("@ABCDEFGHIJKLMNO", 16), u)
682f93fd1fSPavel Labath       << "uuid was changed by failed parse calls";
692f93fd1fSPavel Labath 
701beffc18SJaroslav Sevcik   EXPECT_TRUE(u.SetFromStringRef("404142434445464748494a4b4c4d4e4f-50515253"));
71*5ad6ed0eSJim Ingham   EXPECT_EQ(UUID("@ABCDEFGHIJKLMNOPQRS", 20), u);
721beffc18SJaroslav Sevcik 
731beffc18SJaroslav Sevcik   EXPECT_TRUE(u.SetFromStringRef("40414243"));
74*5ad6ed0eSJim Ingham   EXPECT_EQ(UUID("@ABCD", 4), u);
751beffc18SJaroslav Sevcik 
761beffc18SJaroslav Sevcik   EXPECT_FALSE(u.SetFromStringRef("4"));
772f93fd1fSPavel Labath }
7877c397f4SPavel Labath 
TEST(UUIDTest,StringConverion)7977c397f4SPavel Labath TEST(UUIDTest, StringConverion) {
80*5ad6ed0eSJim Ingham   EXPECT_EQ("40414243", UUID("@ABC", 4).GetAsString());
81*5ad6ed0eSJim Ingham   EXPECT_EQ("40414243-4445-4647", UUID("@ABCDEFG", 8).GetAsString());
8277c397f4SPavel Labath   EXPECT_EQ("40414243-4445-4647-4849-4A4B",
83*5ad6ed0eSJim Ingham             UUID("@ABCDEFGHIJK", 12).GetAsString());
8477c397f4SPavel Labath   EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F",
85*5ad6ed0eSJim Ingham             UUID("@ABCDEFGHIJKLMNO", 16).GetAsString());
8677c397f4SPavel Labath   EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F-50515253",
87*5ad6ed0eSJim Ingham             UUID("@ABCDEFGHIJKLMNOPQRS", 20).GetAsString());
8877c397f4SPavel Labath }
89