Mercurial > libunicode
diff test/main.cpp @ 4:34a7a99dbcfa
Switch to Boost.Test
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 01 Dec 2017 16:46:31 +0100 |
parents | 84765c6f4872 |
children | ebcc8c9c8831 |
line wrap: on
line diff
--- a/test/main.cpp Mon Jun 12 09:47:46 2017 +0200 +++ b/test/main.cpp Fri Dec 01 16:46:31 2017 +0100 @@ -20,331 +20,307 @@ * /!\ Be sure to keep this file with UTF-8 encoding /!\ */ -#include <gtest/gtest.h> +#define BOOST_TEST_MODULE "libunicode" +#include <boost/test/unit_test.hpp> #include <unicode.hpp> -using namespace testing; +namespace { + +bool equals(const std::u32string& s1, const std::u32string& s2) +{ + return s1 == s2; +} + +} // !namespace /* * Conversion UTF32 -> UTF8 * ------------------------------------------------------------------ */ -TEST(conversion_32_to_8, ascii) +BOOST_AUTO_TEST_SUITE(convert_32_to_8) + +BOOST_AUTO_TEST_CASE(ascii) { - try { - std::u32string u32{'a', 'b', 'c'}; - std::string s = unicode::to_utf8(u32); + std::u32string u32{'a', 'b', 'c'}; + std::string s = unicode::to_utf8(u32); - ASSERT_EQ("abc", s); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(s == "abc"); } -TEST(conversion_32_to_8, valid) +BOOST_AUTO_TEST_CASE(valid) { - try { - std::u32string u32{'a', U'é', 'c', U'𠀀'}; - std::string s = unicode::to_utf8(u32); - std::string expected = u8"aéc𠀀"; + std::u32string u32{'a', U'é', 'c', U'𠀀'}; + std::string s = unicode::to_utf8(u32); + std::string expected = u8"aéc𠀀"; - ASSERT_EQ(expected, s); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(s == expected); } -TEST(conversion_32_to_8, invalid) +BOOST_AUTO_TEST_CASE(invalid) { std::u32string u32{'a', 0xFFFFFFFF, 'c'}; - ASSERT_ANY_THROW(unicode::to_utf8(u32)); + BOOST_REQUIRE_THROW(unicode::to_utf8(u32), std::exception); } +BOOST_AUTO_TEST_SUITE_END() + /* * Conversion UTF8 -> UTF32 * ------------------------------------------------------------------ */ -TEST(Conversion_8_to_32, ascii) +BOOST_AUTO_TEST_SUITE(convert_8_to_32) + +BOOST_AUTO_TEST_CASE(ascii) { - try { - std::string s{"abc"}; - std::u32string expected{'a', 'b', 'c'}; - std::u32string result = unicode::to_utf32(s); + std::string s{"abc"}; + std::u32string expected{'a', 'b', 'c'}; + std::u32string result = unicode::to_utf32(s); - ASSERT_EQ(expected, result); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(equals(result, expected)); } -TEST(Conversion_8_to_32, valid) +BOOST_AUTO_TEST_CASE(valid) { - try { - std::string s{u8"aéc𠀀"}; - std::u32string expected{'a', U'é', 'c', U'𠀀'}; - std::u32string result = unicode::to_utf32(s); + std::string s{u8"aéc𠀀"}; + std::u32string expected{'a', U'é', 'c', U'𠀀'}; + std::u32string result = unicode::to_utf32(s); - ASSERT_EQ(expected, result); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(equals(result, expected)); } +BOOST_AUTO_TEST_SUITE_END() + /* * UTF32 to upper * ------------------------------------------------------------------ */ -TEST(toupper_32, ascii) +BOOST_AUTO_TEST_SUITE(toupper_32) + +BOOST_AUTO_TEST_CASE(ascii) { - try { - std::u32string u32{'a', 'b', 'c'}; - std::u32string expected{'A', 'B', 'C'}; - std::u32string result = unicode::toupper(u32); + std::u32string u32{'a', 'b', 'c'}; + std::u32string expected{'A', 'B', 'C'}; + std::u32string result = unicode::toupper(u32); - ASSERT_EQ(expected, result); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(equals(result, expected)); } -TEST(toupper_32, valid) +BOOST_AUTO_TEST_CASE(valid) { - try { - std::u32string u32{U'ä', U'ç', U'ë'}; - std::u32string expected{U'Ä', U'Ç', U'Ë'}; - std::u32string result = unicode::toupper(u32); + std::u32string u32{U'ä', U'ç', U'ë'}; + std::u32string expected{U'Ä', U'Ç', U'Ë'}; + std::u32string result = unicode::toupper(u32); - ASSERT_EQ(expected, result); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(equals(result, expected)); } -TEST(toupper_32, invalid) +BOOST_AUTO_TEST_CASE(invalid) { - try { - std::u32string u32{'a', 0xFFFFFFFF, 'b'}; - std::u32string expected{'A', 0xFFFFFFFF, 'B'}; - std::u32string result = unicode::toupper(u32); + std::u32string u32{'a', 0xFFFFFFFF, 'b'}; + std::u32string expected{'A', 0xFFFFFFFF, 'B'}; + std::u32string result = unicode::toupper(u32); - ASSERT_EQ(expected, result); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(equals(result, expected)); } +BOOST_AUTO_TEST_SUITE_END() + /* * UTF32 to lower * ------------------------------------------------------------------ */ -TEST(tolower_32, ascii) +BOOST_AUTO_TEST_SUITE(tolower_32) + +BOOST_AUTO_TEST_CASE(ascii) { - try { - std::u32string u32{'A', 'B', 'C'}; - std::u32string expected{'a', 'b', 'c'}; - std::u32string result = unicode::tolower(u32); + std::u32string u32{'A', 'B', 'C'}; + std::u32string expected{'a', 'b', 'c'}; + std::u32string result = unicode::tolower(u32); - ASSERT_EQ(expected, result); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(equals(result, expected)); } -TEST(tolower_32, valid) +BOOST_AUTO_TEST_CASE(valid) { - try { - std::u32string u32{U'Ä', U'Ç', U'Ë'}; - std::u32string expected{U'ä', U'ç', U'ë'}; - std::u32string result = unicode::tolower(u32); + std::u32string u32{U'Ä', U'Ç', U'Ë'}; + std::u32string expected{U'ä', U'ç', U'ë'}; + std::u32string result = unicode::tolower(u32); - ASSERT_EQ(expected, result); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(equals(result, expected)); } -TEST(tolower_32, invalid) +BOOST_AUTO_TEST_CASE(invalid) { - try { - std::u32string u32{'A', 0xFFFFFFFF, 'B'}; - std::u32string expected{'a', 0xFFFFFFFF, 'b'}; - std::u32string result = unicode::tolower(u32); + std::u32string u32{'A', 0xFFFFFFFF, 'B'}; + std::u32string expected{'a', 0xFFFFFFFF, 'b'}; + std::u32string result = unicode::tolower(u32); - ASSERT_EQ(expected, result); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(equals(result, expected)); } +BOOST_AUTO_TEST_SUITE_END() + /* * UTF8 to upper * ------------------------------------------------------------------ */ -TEST(toupper_8, ascii) +BOOST_AUTO_TEST_SUITE(toupper_8) + +BOOST_AUTO_TEST_CASE(ascii) { - try { - std::string s{"abc"}; - std::string r = unicode::toupper(s); + std::string s{"abc"}; + std::string r = unicode::toupper(s); - ASSERT_EQ("ABC", r); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(r == "ABC"); } -TEST(toupper_8, valid) +BOOST_AUTO_TEST_CASE(valid) { - try { - std::string s{u8"aéc"}; - std::string r = unicode::toupper(s); + std::string s{u8"aéc"}; + std::string r = unicode::toupper(s); - ASSERT_EQ(u8"AÉC", r); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(r == u8"AÉC"); } -TEST(toupper_8, invalid) +BOOST_AUTO_TEST_CASE(invalid) { std::string s{"a" "\xFF""b"}; - ASSERT_ANY_THROW(unicode::toupper(s)); + BOOST_REQUIRE_THROW(unicode::toupper(s), std::exception); } +BOOST_AUTO_TEST_SUITE_END() + /* * UTF8 to lower * ------------------------------------------------------------------ */ -TEST(tolower_8, ascii) +BOOST_AUTO_TEST_SUITE(tolower_8) + +BOOST_AUTO_TEST_CASE(ascii) { - try { - std::string s{"ABC"}; - std::string r = unicode::tolower(s); + std::string s{"ABC"}; + std::string r = unicode::tolower(s); - ASSERT_EQ("abc", r); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(r == "abc"); } -TEST(tolower_8, valid) +BOOST_AUTO_TEST_CASE(valid) { - try { - std::string s{u8"AÉC"}; - std::string r = unicode::tolower(s); + std::string s{u8"AÉC"}; + std::string r = unicode::tolower(s); - ASSERT_EQ(u8"aéc", r); - } catch (const std::exception &ex) { - FAIL() << ex.what(); - } + BOOST_TEST(r == u8"aéc"); } -TEST(tolower_8, invalid) +BOOST_AUTO_TEST_CASE(invalid) { std::string s{"A" "\xFF""B"}; - ASSERT_ANY_THROW(unicode::tolower(s)); + BOOST_REQUIRE_THROW(unicode::tolower(s), std::exception); } +BOOST_AUTO_TEST_SUITE_END() + /* * Checks functions * ------------------------------------------------------------------ */ -TEST(checks, isspace) +BOOST_AUTO_TEST_SUITE(checks) + +BOOST_AUTO_TEST_CASE(isspace) { - ASSERT_TRUE(unicode::isspace(' ')); - ASSERT_FALSE(unicode::isspace(/* é */ 233)); + BOOST_TEST(unicode::isspace(' ')); + BOOST_TEST(!unicode::isspace(/* é */ 233)); } -TEST(checks, isalpha) +BOOST_AUTO_TEST_CASE(isalpha) { - ASSERT_TRUE(unicode::isalpha(U'é')); - ASSERT_FALSE(unicode::isalpha(U'€')); + BOOST_TEST(unicode::isalpha(U'é')); + BOOST_TEST(!unicode::isalpha(U'€')); } -TEST(checks, isupper) +BOOST_AUTO_TEST_CASE(isupper) { - ASSERT_FALSE(unicode::isupper('a')); - ASSERT_FALSE(unicode::isupper(U'é')); - ASSERT_TRUE(unicode::isupper('A')); - ASSERT_TRUE(unicode::isupper(U'É')); + BOOST_TEST(!unicode::isupper('a')); + BOOST_TEST(!unicode::isupper(U'é')); + BOOST_TEST(unicode::isupper('A')); + BOOST_TEST(unicode::isupper(U'É')); } -TEST(checks, islower) +BOOST_AUTO_TEST_CASE(islower) { - ASSERT_TRUE(unicode::islower('a')); - ASSERT_TRUE(unicode::islower(U'é')); - ASSERT_FALSE(unicode::islower('A')); - ASSERT_FALSE(unicode::islower(U'É')); + BOOST_TEST(unicode::islower('a')); + BOOST_TEST(unicode::islower(U'é')); + BOOST_TEST(!unicode::islower('A')); + BOOST_TEST(!unicode::islower(U'É')); } +BOOST_AUTO_TEST_SUITE_END() + /* * Miscellaneous * ------------------------------------------------------------------ */ -TEST(misc, nbytes_point) +BOOST_AUTO_TEST_SUITE(misc) + +BOOST_AUTO_TEST_CASE(nbytes_point) { - ASSERT_EQ(1, unicode::nbytes_point('a')); - ASSERT_EQ(2, unicode::nbytes_point(U'é')); - ASSERT_EQ(3, unicode::nbytes_point(U'€')); - ASSERT_EQ(4, unicode::nbytes_point(U'𠀀')); + BOOST_TEST(unicode::nbytes_point('a') == 1); + BOOST_TEST(unicode::nbytes_point(U'é') == 2); + BOOST_TEST(unicode::nbytes_point(U'€') == 3); + BOOST_TEST(unicode::nbytes_point(U'𠀀') == 4); } -TEST(misc, nbytes_utf8) +BOOST_AUTO_TEST_CASE(nbytes_utf8) { std::string s1{u8"a"}; std::string s2{u8"é"}; std::string s3{u8"€"}; std::string s4{u8"𠀀"}; - ASSERT_EQ(1, unicode::nbytes_utf8(s1[0])); - ASSERT_EQ(2, unicode::nbytes_utf8(s2[0])); - ASSERT_EQ(3, unicode::nbytes_utf8(s3[0])); - ASSERT_EQ(4, unicode::nbytes_utf8(s4[0])); + BOOST_TEST(unicode::nbytes_utf8(s1[0]) == 1); + BOOST_TEST(unicode::nbytes_utf8(s2[0]) == 2); + BOOST_TEST(unicode::nbytes_utf8(s3[0]) == 3); + BOOST_TEST(unicode::nbytes_utf8(s4[0]) == 4); } -TEST(misc, for_each) +BOOST_AUTO_TEST_CASE(for_each) { std::string s{u8"aé€𠀀"}; int current = 0; unicode::for_each(s, [&] (char32_t code) { - if (current == 0) { - ASSERT_EQ(U'a', code); - } else if (current == 1) { - ASSERT_EQ(U'é', code); - } else if (current == 2) { - ASSERT_EQ(U'€', code); - } else if (current == 3) { - ASSERT_EQ(U'𠀀', code); - } + if (current == 0) + BOOST_TEST(code == U'a'); + else if (current == 1) + BOOST_TEST(code == U'é'); + else if (current == 2) + BOOST_TEST(code == U'€'); + else if (current == 3) + BOOST_TEST(code == U'𠀀'); current++; }); - ASSERT_EQ(4, current); + BOOST_TEST(current = 4); } -TEST(misc, for_each_invalid) +BOOST_AUTO_TEST_CASE(for_each_invalid) { std::string s{"a" "\xFF" "b"}; - ASSERT_ANY_THROW(unicode::for_each(s, [&] (char32_t) { })); + BOOST_REQUIRE_THROW(unicode::for_each(s, [&] (char32_t) { }), std::exception); } -int main(int argc, char** argv) -{ - InitGoogleTest(&argc, argv); - - return RUN_ALL_TESTS(); -} +BOOST_AUTO_TEST_SUITE_END()