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;
172f93fd1fSPavel Labath UUID a16 = UUID::fromData("1234567890123456", 16);
182f93fd1fSPavel Labath UUID b16 = UUID::fromData("1234567890123457", 16);
192f93fd1fSPavel Labath UUID a20 = UUID::fromData("12345678901234567890", 20);
202f93fd1fSPavel Labath UUID b20 = UUID::fromData("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);
402f93fd1fSPavel Labath UUID a16 = UUID::fromData(zeroes.data(), 16);
412f93fd1fSPavel Labath UUID a20 = UUID::fromData(zeroes.data(), 20);
422f93fd1fSPavel Labath UUID a16_0 = UUID::fromOptionalData(zeroes.data(), 16);
432f93fd1fSPavel Labath UUID a20_0 = UUID::fromOptionalData(zeroes.data(), 20);
44f3ecbfc1SJim Ingham UUID from_str;
45f3ecbfc1SJim Ingham from_str.SetFromStringRef("00000000-0000-0000-0000-000000000000");
46f3ecbfc1SJim Ingham UUID opt_from_str;
47f3ecbfc1SJim Ingham opt_from_str.SetFromOptionalStringRef("00000000-0000-0000-0000-000000000000");
48f3ecbfc1SJim Ingham
492f93fd1fSPavel Labath EXPECT_FALSE(empty);
502f93fd1fSPavel Labath EXPECT_TRUE(a16);
512f93fd1fSPavel Labath EXPECT_TRUE(a20);
52f3ecbfc1SJim Ingham EXPECT_TRUE(from_str);
532f93fd1fSPavel Labath EXPECT_FALSE(a16_0);
542f93fd1fSPavel Labath EXPECT_FALSE(a20_0);
55f3ecbfc1SJim Ingham EXPECT_FALSE(opt_from_str);
562f93fd1fSPavel Labath }
572f93fd1fSPavel Labath
TEST(UUIDTest,SetFromStringRef)582f93fd1fSPavel Labath TEST(UUIDTest, SetFromStringRef) {
592f93fd1fSPavel Labath UUID u;
60*1beffc18SJaroslav Sevcik EXPECT_TRUE(u.SetFromStringRef("404142434445464748494a4b4c4d4e4f"));
612f93fd1fSPavel Labath EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u);
622f93fd1fSPavel Labath
63*1beffc18SJaroslav Sevcik EXPECT_TRUE(u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f"));
642f93fd1fSPavel Labath EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u);
652f93fd1fSPavel Labath
66*1beffc18SJaroslav Sevcik EXPECT_TRUE(
67*1beffc18SJaroslav Sevcik u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f-50515253"));
682f93fd1fSPavel Labath EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u);
692f93fd1fSPavel Labath
70*1beffc18SJaroslav Sevcik EXPECT_TRUE(u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f"));
71*1beffc18SJaroslav Sevcik
72*1beffc18SJaroslav Sevcik EXPECT_FALSE(u.SetFromStringRef("40xxxxx"));
73*1beffc18SJaroslav Sevcik EXPECT_FALSE(u.SetFromStringRef(""));
74*1beffc18SJaroslav Sevcik EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u)
752f93fd1fSPavel Labath << "uuid was changed by failed parse calls";
762f93fd1fSPavel Labath
77*1beffc18SJaroslav Sevcik EXPECT_TRUE(u.SetFromStringRef("404142434445464748494a4b4c4d4e4f-50515253"));
78*1beffc18SJaroslav Sevcik EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u);
79*1beffc18SJaroslav Sevcik
80*1beffc18SJaroslav Sevcik EXPECT_TRUE(u.SetFromStringRef("40414243"));
81*1beffc18SJaroslav Sevcik EXPECT_EQ(UUID::fromData("@ABCD", 4), u);
82*1beffc18SJaroslav Sevcik
83*1beffc18SJaroslav Sevcik EXPECT_FALSE(u.SetFromStringRef("4"));
842f93fd1fSPavel Labath }
8577c397f4SPavel Labath
TEST(UUIDTest,StringConverion)8677c397f4SPavel Labath TEST(UUIDTest, StringConverion) {
8777c397f4SPavel Labath EXPECT_EQ("40414243", UUID::fromData("@ABC", 4).GetAsString());
8877c397f4SPavel Labath EXPECT_EQ("40414243-4445-4647", UUID::fromData("@ABCDEFG", 8).GetAsString());
8977c397f4SPavel Labath EXPECT_EQ("40414243-4445-4647-4849-4A4B",
9077c397f4SPavel Labath UUID::fromData("@ABCDEFGHIJK", 12).GetAsString());
9177c397f4SPavel Labath EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F",
9277c397f4SPavel Labath UUID::fromData("@ABCDEFGHIJKLMNO", 16).GetAsString());
9377c397f4SPavel Labath EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F-50515253",
9477c397f4SPavel Labath UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20).GetAsString());
9577c397f4SPavel Labath }
96