diff options
Diffstat (limited to 'gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp')
-rw-r--r-- | gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp b/gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp new file mode 100644 index 00000000000..94f46fd9e00 --- /dev/null +++ b/gnu/llvm/lldb/unittests/Utility/UUIDTest.cpp @@ -0,0 +1,90 @@ +//===-- UUIDTest.cpp --------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "gtest/gtest.h" + +#include "lldb/Utility/UUID.h" + +using namespace lldb_private; + +TEST(UUIDTest, RelationalOperators) { + UUID empty; + UUID a16 = UUID::fromData("1234567890123456", 16); + UUID b16 = UUID::fromData("1234567890123457", 16); + UUID a20 = UUID::fromData("12345678901234567890", 20); + UUID b20 = UUID::fromData("12345678900987654321", 20); + + EXPECT_EQ(empty, empty); + EXPECT_EQ(a16, a16); + EXPECT_EQ(a20, a20); + + EXPECT_NE(a16, b16); + EXPECT_NE(a20, b20); + EXPECT_NE(a16, a20); + EXPECT_NE(empty, a16); + + EXPECT_LT(empty, a16); + EXPECT_LT(a16, a20); + EXPECT_LT(a16, b16); + EXPECT_GT(a20, b20); +} + +TEST(UUIDTest, Validity) { + UUID empty; + std::vector<uint8_t> zeroes(20, 0); + UUID a16 = UUID::fromData(zeroes.data(), 16); + UUID a20 = UUID::fromData(zeroes.data(), 20); + UUID a16_0 = UUID::fromOptionalData(zeroes.data(), 16); + UUID a20_0 = UUID::fromOptionalData(zeroes.data(), 20); + UUID from_str; + from_str.SetFromStringRef("00000000-0000-0000-0000-000000000000"); + UUID opt_from_str; + opt_from_str.SetFromOptionalStringRef("00000000-0000-0000-0000-000000000000"); + + EXPECT_FALSE(empty); + EXPECT_TRUE(a16); + EXPECT_TRUE(a20); + EXPECT_TRUE(from_str); + EXPECT_FALSE(a16_0); + EXPECT_FALSE(a20_0); + EXPECT_FALSE(opt_from_str); +} + +TEST(UUIDTest, SetFromStringRef) { + UUID u; + EXPECT_EQ(32u, u.SetFromStringRef("404142434445464748494a4b4c4d4e4f")); + EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u); + + EXPECT_EQ(36u, u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f")); + EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u); + + EXPECT_EQ(45u, u.SetFromStringRef( + "40-41-42-43-4445464748494a4b4c4d4e4f-50515253", 20)); + EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u); + + EXPECT_EQ(0u, u.SetFromStringRef("40-41-42-43-4445464748494a4b4c4d4e4f", 20)); + EXPECT_EQ(0u, u.SetFromStringRef("40xxxxx")); + EXPECT_EQ(0u, u.SetFromStringRef("")); + EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20), u) + << "uuid was changed by failed parse calls"; + + EXPECT_EQ( + 32u, u.SetFromStringRef("404142434445464748494a4b4c4d4e4f-50515253", 16)); + EXPECT_EQ(UUID::fromData("@ABCDEFGHIJKLMNO", 16), u); +} + +TEST(UUIDTest, StringConverion) { + EXPECT_EQ("40414243", UUID::fromData("@ABC", 4).GetAsString()); + EXPECT_EQ("40414243-4445-4647", UUID::fromData("@ABCDEFG", 8).GetAsString()); + EXPECT_EQ("40414243-4445-4647-4849-4A4B", + UUID::fromData("@ABCDEFGHIJK", 12).GetAsString()); + EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F", + UUID::fromData("@ABCDEFGHIJKLMNO", 16).GetAsString()); + EXPECT_EQ("40414243-4445-4647-4849-4A4B4C4D4E4F-50515253", + UUID::fromData("@ABCDEFGHIJKLMNOPQRS", 20).GetAsString()); +} |