Skip to content
File

Blob: src/workerd/util/uuid-test.c++

2.6 KB
1// Copyright (c) 2023 Cloudflare, Inc.
2// Licensed under the Apache 2.0 license found in the LICENSE file or at:
3// https://opensource.org/licenses/Apache-2.0
4 
5#include "uuid.h"
6 
7#include <kj/test.h>
8 
9namespace workerd {
10namespace {
11 
12#define ASSERT_VALID_AND_EQUAL(upper, lower, str) \
13 do { \
14 auto a = KJ_ASSERT_NONNULL(UUID::fromUpperLower(upper, lower)); \
15 auto b = KJ_ASSERT_NONNULL(UUID::fromString(str)); \
16 KJ_ASSERT(a.getUpper() == upper); \
17 KJ_ASSERT(a.getLower() == lower); \
18 KJ_ASSERT(b.getUpper() == upper); \
19 KJ_ASSERT(b.getLower() == lower); \
20 KJ_ASSERT(a == b); \
21 } while (false)
22 
23KJ_TEST("Valid UUIDs") {
24 ASSERT_VALID_AND_EQUAL(
25 72340172838076673ull, 1157442765409226768ull, "01010101-0101-0101-1010-101010101010");
26 ASSERT_VALID_AND_EQUAL(
27 81985529216486895ull, 81985529216486895ull, "01234567-89ab-cdef-0123-456789abcdef");
28 ASSERT_VALID_AND_EQUAL(
29 16045690984833335023ull, 16045690984833335023ull, "deadbeef-dead-beef-dead-beefdeadbeef");
30}
31 
32KJ_TEST("Null UUIDs") {
33 KJ_EXPECT(UUID::fromUpperLower(0ull, 0ull) == kj::none);
34 KJ_EXPECT(UUID::fromString("00000000-0000-0000-0000-000000000000") == kj::none);
35}
36 
37KJ_TEST("Invalid UUIDs") {
38 KJ_EXPECT(UUID::fromString("") == kj::none);
39 KJ_EXPECT(UUID::fromString("foo") == kj::none);
40 KJ_EXPECT(UUID::fromString("+_{};'<>?,.`/'!@#$%^&*()") == kj::none);
41 KJ_EXPECT(UUID::fromString("101010101-0101-0101-1010-101010101010") == kj::none);
42 KJ_EXPECT(UUID::fromString("01010101-10101-0101-1010-101010101010") == kj::none);
43 KJ_EXPECT(UUID::fromString("01010101-0101-10101-1010-101010101010") == kj::none);
44 KJ_EXPECT(UUID::fromString("01010101-0101-0101-10101-101010101010") == kj::none);
45 KJ_EXPECT(UUID::fromString("01010101-0101-0101-1010-1010101010101") == kj::none);
46 KJ_EXPECT(UUID::fromString("01010101-0101-0101-1010-101010101010-") == kj::none);
47 KJ_EXPECT(UUID::fromString("01010101-0101-0101-1010-10101010101-") == kj::none);
48 KJ_EXPECT(UUID::fromString("01010101-0101-0101-1010-10101010101g") == kj::none);
49 KJ_EXPECT(UUID::fromString("0123456789abcdef0123456789abcdef") == kj::none);
50}
51 
52} // namespace
53} // namespace workerd