1//
2// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh)
3// Copyright (c) 2022-2023 Alexander Grund
4//
5// Distributed under the Boost Software License, Version 1.0.
6// https://www.boost.org/LICENSE_1_0.txt
7
8#include <boost/locale/conversion.hpp>
9#include "boostLocale/test/tools.hpp"
10#include <locale>
11#include <string>
12
13namespace boost { namespace locale { namespace case_convert_test {
14
15 template<typename CharType>
16 void test_one_impl(const std::locale& l,
17 const std::basic_string<CharType>& src,
18 const std::basic_string<CharType>& tgt_lower,
19 const std::basic_string<CharType>& tgt_upper)
20 {
21 TEST_EQ(boost::locale::normalize(src, boost::locale::norm_default, l), src); // Already normalized
22 TEST_EQ(boost::locale::to_upper(src, l), tgt_upper);
23 TEST_EQ(boost::locale::to_lower(src, l), tgt_lower);
24 TEST_EQ(boost::locale::fold_case(src, l), tgt_lower);
25 }
26
27 template<typename CharType>
28 void
29 test_one(const std::locale& l, const std::string& src, const std::string& tgt_lower, const std::string& tgt_upper)
30 {
31 test_one_impl(l,
32 to_correct_string<CharType>(src, l),
33 to_correct_string<CharType>(tgt_lower, l),
34 to_correct_string<CharType>(tgt_upper, l));
35 }
36
37 template<typename CharType>
38 void test_no_op_title_case(const std::locale& l, const std::string& src)
39 {
40 const auto src_c = to_correct_string<CharType>(src, l);
41 const auto src_l = boost::locale::to_lower(str: src, loc: l);
42 const auto src_u = boost::locale::to_upper(str: src, loc: l);
43 TEST_EQ(boost::locale::to_title(src_c, l), src_c);
44 TEST_EQ(boost::locale::to_title(src_l, l), src_l);
45 TEST_EQ(boost::locale::to_title(src_u, l), src_u);
46 }
47
48}}} // namespace boost::locale::case_convert_test
49

source code of boost/libs/locale/test/case_convert_test.hpp