Merge pull request #9 from janisozaur/fixes

Fixes
This commit is contained in:
Marius Bancila 2018-08-06 10:39:11 +03:00 committed by GitHub
commit 3a1cf82c79
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 22 deletions

View File

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.7.0)
project(test_uuid)
project(test_uuid CXX)
include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/catch)

View File

@ -1,5 +1,6 @@
#pragma once
#include <cstring>
#include <string>
#include <sstream>
#include <iomanip>
@ -282,6 +283,19 @@ namespace uuids
reserved
};
struct uuid_error : public std::runtime_error
{
explicit uuid_error(std::string_view message)
: std::runtime_error(message.data())
{
}
explicit uuid_error(char const * message)
: std::runtime_error(message)
{
}
};
// indicated by a bit pattern in octet 6, marked with M in xxxxxxxx-xxxx-Mxxx-xxxx-xxxxxxxxxxxx
enum class uuid_version
{
@ -443,7 +457,7 @@ namespace uuids
using value_type = uint8_t;
public:
constexpr uuid() noexcept = default;
constexpr uuid() noexcept : data({}) {};
explicit uuid(gsl::span<value_type, 16> bytes)
{
@ -501,7 +515,7 @@ namespace uuids
constexpr uuid_const_iterator begin() const noexcept { return uuid_const_iterator(&data[0], 0); }
constexpr uuid_const_iterator end() const noexcept { return uuid_const_iterator(&data[0], 16); }
constexpr inline gsl::span<std::byte const, 16> as_bytes() const
inline gsl::span<std::byte const, 16> as_bytes() const
{
return gsl::span<std::byte const, 16>(reinterpret_cast<std::byte const*>(data.data()), 16);
}
@ -572,19 +586,6 @@ namespace uuids
friend std::basic_ostream<Elem, Traits> & operator<<(std::basic_ostream<Elem, Traits> &s, uuid const & id);
};
struct uuid_error : public std::runtime_error
{
explicit uuid_error(std::string_view message)
: std::runtime_error(message.data())
{
}
explicit uuid_error(char const * message)
: std::runtime_error(message)
{
}
};
inline bool operator== (uuid const& lhs, uuid const& rhs) noexcept
{
return lhs.data == rhs.data;
@ -869,4 +870,4 @@ namespace std
return static_cast<result_type>(hasher(uuids::to_string(uuid)));
}
};
}
}

View File

@ -1,6 +1,7 @@
#include "uuid.h"
#include "catch.hpp"
#include <cstring>
#include <set>
#include <unordered_set>
#include <vector>
@ -233,10 +234,10 @@ TEST_CASE("Test iterators", "[iter]")
TEST_CASE("Test constexpr", "[const]")
{
constexpr uuid empty;
constexpr bool isnil = empty.is_nil();
constexpr size_t size = empty.size();
constexpr uuid_variant variant = empty.variant();
constexpr uuid_version version = empty.version();
[[maybe_unused]] constexpr bool isnil = empty.is_nil();
[[maybe_unused]] constexpr size_t size = empty.size();
[[maybe_unused]] constexpr uuids::uuid_variant variant = empty.variant();
[[maybe_unused]] constexpr uuid_version version = empty.version();
}
TEST_CASE("Test size", "[operators]")
@ -288,4 +289,4 @@ TEST_CASE("Test as_bytes", "[ops]")
REQUIRE(memcmp(view.data(), arr.data(), arr.size()) == 0);
}
}
}