1//
2// Copyright (C) 2019 James E. King III
3//
4// Permission to copy, use, modify, sell and
5// distribute this software is granted provided this copyright notice appears
6// in all copies. This software is provided "as is" without express or implied
7// warranty, and with no claim as to its suitability for any purpose.
8//
9// Distributed under the Boost Software License, Version 1.0. (See
10// accompanying file LICENSE_1_0.txt or copy at
11// https://www.boost.org/LICENSE_1_0.txt)
12//
13
14#ifndef BOOST_UUID_TEST_ENDIAN_2019
15#define BOOST_UUID_TEST_ENDIAN_2019
16
17#include <boost/predef/other/endian.h>
18
19namespace boost {
20namespace uuids {
21namespace test {
22
23//
24// A utility to copy a raw digest out from one of the detail hash functions
25// to a byte string for comparisons in testing to known values.
26//
27static void copy_raw_digest(unsigned char* out, const unsigned int *in, size_t inlen)
28{
29 for (size_t chunk = 0; chunk < inlen; ++chunk)
30 {
31 const unsigned char * cin = reinterpret_cast<const unsigned char *>(&in[chunk]);
32 for (size_t byte = 0; byte < 4; ++byte)
33 {
34#if BOOST_ENDIAN_LITTLE_BYTE
35 *out++ = *(cin + (3-byte));
36#else
37 *out++ = *(cin + byte);
38#endif
39 }
40 }
41}
42
43//
44// A utility to compare and report two raw hashes
45//
46static void test_digest_equal_array(char const * file, int line, char const * function,
47 const unsigned char *lhs,
48 const unsigned char *rhs,
49 size_t len)
50{
51 for (size_t i=0; i<len; i++) {
52 if ( lhs[i] != rhs[i]) {
53 std::cerr << file << "(" << line << "): digest [";
54 for (size_t l=0; l<len; l++) {
55 std::cerr << std::hex << (int)lhs[l];
56 }
57
58 std::cerr << "] not equal [";
59 for (size_t r=0; r<len; r++) {
60 std::cerr << std::hex << (int)rhs[r];
61 }
62 std::cerr << "] in function '" << function << "'" << std::endl;
63 ++boost::detail::test_errors();
64 return;
65 }
66 }
67}
68
69}
70}
71}
72
73#endif
74

source code of boost/libs/uuid/test/digestutils.hpp