diff options
Diffstat (limited to 'components/common/uuid/test/uuid_tests.cpp')
-rw-r--r-- | components/common/uuid/test/uuid_tests.cpp | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/components/common/uuid/test/uuid_tests.cpp b/components/common/uuid/test/uuid_tests.cpp new file mode 100644 index 000000000..03f4f8781 --- /dev/null +++ b/components/common/uuid/test/uuid_tests.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <cstring> +#include <common/uuid/uuid.h> +#include <CppUTest/TestHarness.h> + +TEST_GROUP(UuidTests) { + +}; + +TEST(UuidTests, parseValidUuidLowerCase) { + + /* A valid UUID unsing lower-case */ + const char *uuid_text = "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0"; + CHECK(uuid_is_valid(uuid_text)); + + const uint8_t expected_bytes[] = + {0xd9,0xdf,0x52,0xd5, + 0x16,0xa2, + 0x4b,0xb2, + 0x9a,0xa4, + 0xd2,0x6d,0x3b,0x84,0xe8,0xc0}; + + uint8_t byte_array[UUID_OCTETS_LEN]; + memset(byte_array, 0, sizeof(byte_array)); + + CHECK(uuid_parse_to_octets(uuid_text, byte_array, sizeof(byte_array))); + CHECK(memcmp(byte_array, expected_bytes, UUID_OCTETS_LEN) == 0); +} + +TEST(UuidTests, parseValidUuidMixedCase) { + + /* A valid UUID unsing mixed-case */ + const char *uuid_text = "D9df52d5-16a2-4bB2-9aa4-d26d3b84E8c0"; + CHECK(uuid_is_valid(uuid_text)); + + const uint8_t expected_bytes[] = + {0xd9,0xdf,0x52,0xd5, + 0x16,0xa2, + 0x4b,0xb2, + 0x9a,0xa4, + 0xd2,0x6d,0x3b,0x84,0xe8,0xc0}; + + uint8_t byte_array[UUID_OCTETS_LEN]; + memset(byte_array, 0, sizeof(byte_array)); + + CHECK(uuid_parse_to_octets(uuid_text, byte_array, sizeof(byte_array))); + CHECK(memcmp(byte_array, expected_bytes, UUID_OCTETS_LEN) == 0); +} + +TEST(UuidTests, parseUuidInUrn) { + + /* A valid UUID embedded in a urn */ + const char *urn_text = "urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66:0"; + CHECK(uuid_is_valid(&urn_text[9])); + + const uint8_t expected_bytes[] = + {0x6e,0x8b,0xc4,0x30, + 0x9c,0x3a, + 0x11,0xd9, + 0x96,0x69, + 0x08,0x00,0x20,0x0c,0x9a,0x66}; + + uint8_t byte_array[UUID_OCTETS_LEN]; + memset(byte_array, 0, sizeof(byte_array)); + + CHECK(uuid_parse_to_octets(&urn_text[9], byte_array, sizeof(byte_array))); + CHECK(memcmp(byte_array, expected_bytes, UUID_OCTETS_LEN) == 0); +} + +TEST(UuidTests, parseError) { + + /* Invalid digit */ + const char *broken1 = "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8X0"; + CHECK(!uuid_is_valid(broken1)); + + /* Invalid separator */ + const char *broken2 = "d9df52d5-16a2-4bb2-9aa4_d26d3b84e8c0"; + CHECK(!uuid_is_valid(broken2)); + + /* Too short */ + const char *broken3 = "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c"; + CHECK(!uuid_is_valid(broken3)); + + /* Zero length */ + const char *broken4 = ""; + CHECK(!uuid_is_valid(broken4)); +} + +TEST(UuidTests, parseValidUuidToReversed) { + + /* A valid UUID unsing lower-case */ + const char *uuid_text = "d9df52d5-16a2-4bb2-9aa4-d26d3b84e8c0"; + CHECK(uuid_is_valid(uuid_text)); + + /* Reversed ouput is expected to be */ + const uint8_t expected_bytes[] = + {0xd5,0x52,0xdf,0xd9, + 0xa2,0x16, + 0xb2,0x4b, + 0x9a,0xa4, + 0xd2,0x6d,0x3b,0x84,0xe8,0xc0}; + + uint8_t byte_array[UUID_OCTETS_LEN]; + memset(byte_array, 0, sizeof(byte_array)); + + CHECK(uuid_parse_to_octets_reversed(uuid_text, byte_array, sizeof(byte_array))); + CHECK(memcmp(byte_array, expected_bytes, UUID_OCTETS_LEN) == 0); +} |