1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/common/guid.h"
6
7#include <limits>
8
9#include "testing/gtest/include/gtest/gtest.h"
10
11#if defined(OS_POSIX)
12TEST(GUIDTest, GUIDGeneratesAllZeroes) {
13  uint64 bytes[] = { 0, 0 };
14  std::string clientid = guid::RandomDataToGUIDString(bytes);
15  EXPECT_EQ("00000000-0000-0000-0000-000000000000", clientid);
16}
17
18TEST(GUIDTest, GUIDGeneratesCorrectly) {
19  uint64 bytes[] = { 0x0123456789ABCDEFULL, 0xFEDCBA9876543210ULL };
20  std::string clientid = guid::RandomDataToGUIDString(bytes);
21  EXPECT_EQ("01234567-89AB-CDEF-FEDC-BA9876543210", clientid);
22}
23#endif
24
25TEST(GUIDTest, GUIDCorrectlyFormatted) {
26  const int kIterations = 10;
27  for (int it = 0; it < kIterations; ++it) {
28    std::string guid = guid::GenerateGUID();
29    EXPECT_TRUE(guid::IsValidGUID(guid));
30  }
31}
32
33TEST(GUIDTest, GUIDBasicUniqueness) {
34  const int kIterations = 10;
35  for (int it = 0; it < kIterations; ++it) {
36    std::string guid1 = guid::GenerateGUID();
37    std::string guid2 = guid::GenerateGUID();
38    EXPECT_EQ(36U, guid1.length());
39    EXPECT_EQ(36U, guid2.length());
40    EXPECT_NE(guid1, guid2);
41  }
42}
43