diff options
author | Roland Reichwein <mail@reichwein.it> | 2022-01-06 11:44:40 +0100 |
---|---|---|
committer | Roland Reichwein <mail@reichwein.it> | 2022-01-06 11:44:40 +0100 |
commit | 5ad6e853eaee2533f934575b8509e0e0c5da12e5 (patch) | |
tree | 8b5f4d19e3e92059ad3e78aad4d368507ce7694b | |
parent | 8126c217931363a05121f56f5790758ced9270d1 (diff) |
Type corrections
-rw-r--r-- | src/test-performance.cpp | 2 | ||||
-rw-r--r-- | src/test-unicode.cpp | 64 |
2 files changed, 35 insertions, 31 deletions
diff --git a/src/test-performance.cpp b/src/test-performance.cpp index 64535c6..90397b7 100644 --- a/src/test-performance.cpp +++ b/src/test-performance.cpp @@ -54,7 +54,7 @@ T generate_value(T max = std::numeric_limits<T>::max()) uint32_t value{}; do { - for (int i = 0; i < sizeof(value); ++i) { + for (size_t i = 0; i < sizeof(value); ++i) { value = (value << 8) | generate_byte(); } } while (static_cast<uint64_t>(value) >= max_modulo); diff --git a/src/test-unicode.cpp b/src/test-unicode.cpp index aebc644..948dbcc 100644 --- a/src/test-unicode.cpp +++ b/src/test-unicode.cpp @@ -681,7 +681,7 @@ BOOST_AUTO_TEST_CASE(exceptions) { // UTF-32: Invalid value std::vector<char32_t> x{(char32_t)U'\xFFFFFFFF'}; try { - auto result{unicode::convert<std::vector<char32_t>,std::vector<char8_t>>(x)}; + auto result{unicode::convert<std::vector<char32_t>,std::vector<utf8_t>>(x)}; BOOST_FAIL("Expected boost convert to fail"); } catch (const std::invalid_argument& ex) { BOOST_CHECK_EQUAL("Invalid Unicode character: 4294967295"s, ex.what()); @@ -751,40 +751,44 @@ BOOST_AUTO_TEST_CASE(exceptions) } #if defined(_WIN32) || defined(__linux__) - { // Optimization: UTF-8 decoding invalid Unicode value in 3 byte sequence - std::basic_string<utf8_t> x{(utf8_t*)"\xED\xA0\x80 aaa"}; - try { - auto result{unicode::convert<unicode::UTF_8,unicode::UTF_16>(x)}; - BOOST_FAIL("Expected boost convert to fail"); - } catch (const std::invalid_argument& ex) { - BOOST_CHECK_EQUAL("Invalid Unicode character in 3 byte UTF-8 sequence"s, ex.what()); - } catch (...) { - BOOST_ERROR("Unexpected error on convert"); + if constexpr (sizeof(size_t) == 8) { + + { // Optimization: UTF-8 decoding invalid Unicode value in 3 byte sequence + std::basic_string<utf8_t> x{(utf8_t*)"\xED\xA0\x80 aaa"}; + try { + auto result{unicode::convert<unicode::UTF_8,unicode::UTF_16>(x)}; + BOOST_FAIL("Expected boost convert to fail"); + } catch (const std::invalid_argument& ex) { + BOOST_CHECK_EQUAL("Invalid Unicode character in 3 byte UTF-8 sequence"s, ex.what()); + } catch (...) { + BOOST_ERROR("Unexpected error on convert"); + } } - } - { // Optimization: UTF-8 decoding invalid Unicode value in 4 byte sequence - std::basic_string<utf8_t> x{(utf8_t*)"\xF7\xBF\xBF\xBF aaa"}; - try { - auto result{unicode::convert<unicode::UTF_8,unicode::UTF_16>(x)}; - BOOST_FAIL("Expected boost convert to fail"); - } catch (const std::invalid_argument& ex) { - BOOST_CHECK_EQUAL("Invalid Unicode character in 4 byte UTF-8 sequence"s, ex.what()); - } catch (...) { - BOOST_ERROR("Unexpected error on convert"); + { // Optimization: UTF-8 decoding invalid Unicode value in 4 byte sequence + std::basic_string<utf8_t> x{(utf8_t*)"\xF7\xBF\xBF\xBF aaa"}; + try { + auto result{unicode::convert<unicode::UTF_8,unicode::UTF_16>(x)}; + BOOST_FAIL("Expected boost convert to fail"); + } catch (const std::invalid_argument& ex) { + BOOST_CHECK_EQUAL("Invalid Unicode character in 4 byte UTF-8 sequence"s, ex.what()); + } catch (...) { + BOOST_ERROR("Unexpected error on convert"); + } } - } - { // Optimization: UTF-8 decoding invalid byte sequence - std::basic_string<utf8_t> x{(utf8_t*)"\xC0 aabbbb"}; - try { - auto result{unicode::convert<unicode::UTF_8,unicode::UTF_16>(x)}; - BOOST_FAIL("Expected boost convert to fail"); - } catch (const std::invalid_argument& ex) { - BOOST_CHECK_EQUAL("Invalid UTF-8 byte sequence"s, ex.what()); - } catch (...) { - BOOST_ERROR("Unexpected error on convert"); + { // Optimization: UTF-8 decoding invalid byte sequence + std::basic_string<utf8_t> x{(utf8_t*)"\xC0 aabbbb"}; + try { + auto result{unicode::convert<unicode::UTF_8,unicode::UTF_16>(x)}; + BOOST_FAIL("Expected boost convert to fail"); + } catch (const std::invalid_argument& ex) { + BOOST_CHECK_EQUAL("Invalid UTF-8 byte sequence"s, ex.what()); + } catch (...) { + BOOST_ERROR("Unexpected error on convert"); + } } + } #endif |