1 //===-- UUIDTest.cpp ------------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "gtest/gtest.h" 10 11 #include "lldb/Utility/UUID.h" 12 13 using namespace lldb_private; 14 15 TEST(UUIDTest, RelationalOperators) { 16 UUID empty; 17 UUID a16 = UUID::fromData("1234567890123456", 16); 18 UUID b16 = UUID::fromData("1234567890123457", 16); 19 UUID a20 = UUID::fromData("12345678901234567890", 20); 20 UUID b20 = UUID::fromData("12345678900987654321", 20); 21 22 EXPECT_EQ(empty, empty); 23 EXPECT_EQ(a16, a16); 24 EXPECT_EQ(a20, a20); 25 26 EXPECT_NE(a16, b16); 27 EXPECT_NE(a20, b20); 28 EXPECT_NE(a16, a20); 29 EXPECT_NE(empty, a16); 30 31 EXPECT_LT(empty, a16); 32 EXPECT_LT(a16, a20); 33 EXPECT_LT(a16, b16); 34 EXPECT_GT(a20, b20); 35 } 36 37 TEST(UUIDTest, Validity) { 38 UUID empty; 39 std::vector<uint8_t> zeroes(20, 0); 40 UUID a16 = UUID::fromData(zeroes.data(), 16); 41 UUID a20 = UUID::fromData(zeroes.data(), 20); 42 UUID a16_0 = UUID::fromOptionalData(zeroes.data(), 16); 43 UUID a20_0 = UUID::fromOptionalData(zeroes.data(), 20); 44 UUID from_str; 45 from_str.SetFromStringRef("00000000-0000-0000-0000-000000000000"); 46 UUID opt_from_str; 47 opt_from_str.SetFromOptionalStringRef("00000000-0000-0000-0000-000000000000"); 48 49 EXPECT_FALSE(empty); 50 EXPECT_TRUE(a16); 51 EXPECT_TRUE(a20); 52 EXPECT_TRUE(from_str); 53 EXPECT_FALSE(a16_0); 54 EXPECT_FALSE(a20_0); 55 EXPECT_FALSE(opt_from_str); 56 } 57 58 TEST(UUIDTest, SetFromStringRef) { 59 UUID u; 60 EXPECT_TRUE(u.SetFromStringRef("404142434445464748494a4b4c4d4e4f")); 61 EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u); 62 63 EXPECT_TRUE(u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f")); 64 EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u); 65 66 EXPECT_TRUE( 67 u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f-50515253")); 68 EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u); 69 70 EXPECT_TRUE(u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f")); 71 72 EXPECT_FALSE(u.SetFromStringRef("40xxxxx")); 73 EXPECT_FALSE(u.SetFromStringRef("")); 74 EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u) 75 << "uuid was changed by failed parse calls"; 76 77 EXPECT_TRUE(u.SetFromStringRef("404142434445464748494a4b4c4d4e4f-50515253")); 78 EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u); 79 80 EXPECT_TRUE(u.SetFromStringRef("40414243")); 81 EXPECT_EQ(UUID::fromData("@ABCD", 4), u); 82 83 EXPECT_FALSE(u.SetFromStringRef("4")); 84 } 85 86 TEST(UUIDTest, StringConverion) { 87 EXPECT_EQ("40414243", UUID::fromData("@ABC", 4).GetAsString()); 88 EXPECT_EQ("40414243-4445-4647", UUID::fromData("@ABCDEFG", 8).GetAsString()); 89 EXPECT_EQ("40414243-4445-4647-4849-4A4B", 90 UUID::fromData("@ABCDEFGHIJK", 12).GetAsString()); 91 EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F", 92 UUID::fromData("@ABCDEFGHIJKLMNO", 16).GetAsString()); 93 EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F-50515253", 94 UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20).GetAsString()); 95 } 96