]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // (C) Copyright Andy Tompkins 2010. Permission to copy, use, modify, sell and |
2 | // distribute this software is granted provided this copyright notice appears | |
3 | // in all copies. This software is provided "as is" without express or implied | |
4 | // warranty, and with no claim as to its suitability for any purpose. | |
5 | ||
6 | // Distributed under the Boost Software License, Version 1.0. (See | |
7 | // accompanying file LICENSE_1_0.txt or copy at | |
8 | // http://www.boost.org/LICENSE_1_0.txt) | |
9 | ||
10 | // libs/uuid/test/test_string_generator.cpp -------------------------------// | |
11 | ||
12 | #include <boost/uuid/uuid.hpp> | |
13 | #include <boost/uuid/uuid_io.hpp> | |
14 | #include <boost/uuid/string_generator.hpp> | |
15 | #include <boost/detail/lightweight_test.hpp> | |
16 | #include <boost/config.hpp> | |
b32b8144 | 17 | #include <stdexcept> |
7c673cae FG |
18 | #include <string> |
19 | ||
20 | int main(int, char*[]) | |
21 | { | |
22 | using namespace boost::uuids; | |
23 | ||
24 | uuid nil_uuid = {{0}}; | |
25 | BOOST_TEST_EQ(nil_uuid.is_nil(), true); | |
26 | ||
27 | string_generator gen; | |
28 | uuid u = gen("00000000-0000-0000-0000-000000000000"); | |
29 | BOOST_TEST_EQ(u, nil_uuid); | |
30 | BOOST_TEST_EQ(u.is_nil(), true); | |
31 | ||
32 | const uuid u_increasing = {{ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }}; | |
33 | const uuid u_decreasing = {{ 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }}; | |
34 | ||
35 | u = gen("0123456789abcdef0123456789ABCDEF"); | |
36 | BOOST_TEST_EQ(u, u_increasing); | |
37 | ||
38 | u = gen("{0123456789abcdef0123456789ABCDEF}"); | |
39 | BOOST_TEST_EQ(u, u_increasing); | |
40 | ||
41 | u = gen("{01234567-89AB-CDEF-0123-456789abcdef}"); | |
42 | BOOST_TEST_EQ(u, u_increasing); | |
43 | ||
44 | u = gen("01234567-89AB-CDEF-0123-456789abcdef"); | |
45 | BOOST_TEST_EQ(u, u_increasing); | |
46 | ||
47 | u = gen(std::string("fedcba98-7654-3210-fedc-ba9876543210")); | |
48 | BOOST_TEST_EQ(u, u_decreasing); | |
49 | ||
50 | #ifndef BOOST_NO_STD_WSTRING | |
51 | u = gen(L"fedcba98-7654-3210-fedc-ba9876543210"); | |
52 | BOOST_TEST_EQ(u, u_decreasing); | |
53 | ||
54 | u = gen(std::wstring(L"01234567-89ab-cdef-0123-456789abcdef")); | |
55 | BOOST_TEST_EQ(u, u_increasing); | |
b32b8144 FG |
56 | |
57 | u = gen(std::wstring(L"{01234567-89ab-cdef-0123-456789abcdef}")); | |
58 | BOOST_TEST_EQ(u, u_increasing); | |
7c673cae FG |
59 | #endif //BOOST_NO_STD_WSTRING |
60 | ||
b32b8144 FG |
61 | const char raw[36] = { '0', '1', '2', '3', '4', '5', '6', '7', '-', |
62 | '8', '9', 'a', 'b', '-', | |
63 | 'c', 'd', 'e', 'f', '-', | |
64 | 0 , '1', '2', '3', '-', // 0x00 character is intentional | |
65 | '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; | |
66 | BOOST_TEST_THROWS(gen(std::string(raw, 36)), std::runtime_error); | |
67 | ||
68 | BOOST_TEST_THROWS(gen("01234567-89ab-cdef-0123456789abcdef"), std::runtime_error); | |
69 | BOOST_TEST_THROWS(gen("01234567-89ab-cdef0123-456789abcdef"), std::runtime_error); | |
70 | BOOST_TEST_THROWS(gen("01234567-89abcdef-0123-456789abcdef"), std::runtime_error); | |
71 | BOOST_TEST_THROWS(gen("0123456789ab-cdef-0123-456789abcdef"), std::runtime_error); | |
72 | ||
73 | BOOST_TEST_THROWS(gen("{01234567-89AB-CDEF-0123-456789abcdef)"), std::runtime_error); | |
74 | BOOST_TEST_THROWS(gen("{01234567-89AB-CDEF-0123-456789abcdef"), std::runtime_error); | |
75 | BOOST_TEST_THROWS(gen("01234567-89AB-CDEF-0123-456789abcdef}"), std::runtime_error); | |
76 | #ifndef BOOST_NO_STD_WSTRING | |
77 | BOOST_TEST_THROWS(gen(std::wstring(L"{01234567-89AB-CDEF-0123-456789abcdef)")), std::runtime_error); | |
78 | BOOST_TEST_THROWS(gen(std::wstring(L"{01234567-89AB-CDEF-0123-456789abcdef")), std::runtime_error); | |
79 | BOOST_TEST_THROWS(gen(std::wstring(L"01234567-89AB-CDEF-0123-456789abcdef}")), std::runtime_error); | |
80 | BOOST_TEST_THROWS(gen(std::wstring(L"G1234567-89AB-CDEF-0123-456789abcdef}")), std::runtime_error); | |
81 | #endif //BOOST_NO_STD_WSTRING | |
82 | ||
83 | BOOST_TEST_THROWS(gen("G1234567-89AB-CDEF-0123-456789abcdef"), std::runtime_error); | |
84 | BOOST_TEST_THROWS(gen("Have a great big roast-beef sandwich!"), std::runtime_error); | |
85 | ||
86 | BOOST_TEST_THROWS(gen("83f8638b-8dca-4152-zzzz-2ca8b33039b4"), std::runtime_error); | |
87 | ||
7c673cae FG |
88 | return boost::report_errors(); |
89 | } |