Move uuid to //aos:uuid
It is getting usage significantly further outside the logger. Time to
promote it somewhere better. I only see it getting used more.
Change-Id: I754739347212f5a3154f68c7b7fc84b9a9074d90
diff --git a/aos/uuid_test.cc b/aos/uuid_test.cc
new file mode 100644
index 0000000..33ec6ef
--- /dev/null
+++ b/aos/uuid_test.cc
@@ -0,0 +1,52 @@
+#include "aos/uuid.h"
+
+#include "glog/logging.h"
+#include "gtest/gtest.h"
+
+namespace aos {
+namespace testing {
+
+// Tests that random UUIDs are actually random, and we can convert them to a
+// string. Not very exhaustive, but it is a good smoke test.
+TEST(UUIDTest, GetOne) {
+ LOG(INFO) << UUID::Random();
+
+ UUID r = UUID::Random();
+
+ std::stringstream ss;
+ ss << r;
+
+ UUID r2 = UUID::FromString(ss.str());
+ EXPECT_EQ(r2, r);
+
+ EXPECT_NE(UUID::Random(), UUID::Random());
+ EXPECT_NE(UUID::Random(), UUID::Zero());
+ EXPECT_EQ(UUID::Zero(), UUID::Zero());
+}
+
+// Tests that converting to and from various formats produces the same UUID.
+TEST(UUIDTest, FromString) {
+ std::string_view str = "4b88ab00-556a-455b-a395-17d1a0c6f906";
+ std::array<uint8_t, UUID::kDataSize> data = {
+ 0x4b, 0x88, 0xab, 0x00, 0x55, 0x6a, 0x45, 0x5b,
+ 0xa3, 0x95, 0x17, 0xd1, 0xa0, 0xc6, 0xf9, 0x06};
+
+ const UUID u = UUID::FromString(str);
+
+ EXPECT_EQ(u.span(), absl::Span<uint8_t>(data.data(), data.size()));
+ EXPECT_EQ(u.ToString(), str);
+
+ flatbuffers::FlatBufferBuilder fbb;
+ flatbuffers::Offset<flatbuffers::Vector<uint8_t>> data_offset =
+ fbb.CreateVector(data.data(), data.size());
+
+ const flatbuffers::Vector<uint8_t> *data_vector =
+ flatbuffers::GetTemporaryPointer(fbb, data_offset);
+
+ const UUID u2 = UUID::FromVector(data_vector);
+
+ EXPECT_EQ(u, u2);
+}
+
+} // namespace testing
+} // namespace aos