brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.6 KiB · 5559d37 Raw
372 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: c++03, c++11, c++14, c++1710// UNSUPPORTED: no-localization11// UNSUPPORTED: GCC-ALWAYS_INLINE-FIXME12 13// TODO FMT This test should not require std::to_chars(floating-point)14// XFAIL: availability-fp_to_chars-missing15 16// REQUIRES: locale.fr_FR.UTF-817// REQUIRES: locale.ja_JP.UTF-818 19// <chrono>20 21// class month_weekday;22 23// template<class charT, class traits>24//   basic_ostream<charT, traits>&25//     operator<<(basic_ostream<charT, traits>& os, const month_weekday& mwd);26 27#include <chrono>28#include <cassert>29#include <sstream>30 31#include "make_string.h"32#include "platform_support.h" // locale name macros33#include "test_macros.h"34#include "assert_macros.h"35#include "concat_macros.h"36 37#define SV(S) MAKE_STRING_VIEW(CharT, S)38 39#define TEST_EQUAL(OUT, EXPECTED)                                                                                      \40  TEST_REQUIRE(OUT == EXPECTED,                                                                                        \41               TEST_WRITE_CONCATENATED(                                                                                \42                   "\nExpression      ", #OUT, "\nExpected output ", EXPECTED, "\nActual output   ", OUT, '\n'));43 44template <class CharT>45static std::basic_string<CharT> stream_c_locale(std::chrono::month_weekday mwd) {46  std::basic_stringstream<CharT> sstr;47  sstr << mwd;48  return sstr.str();49}50 51template <class CharT>52static std::basic_string<CharT> stream_fr_FR_locale(std::chrono::month_weekday mwd) {53  std::basic_stringstream<CharT> sstr;54  const std::locale locale(LOCALE_fr_FR_UTF_8);55  sstr.imbue(locale);56  sstr << mwd;57  return sstr.str();58}59 60template <class CharT>61static std::basic_string<CharT> stream_ja_JP_locale(std::chrono::month_weekday mwd) {62  std::basic_stringstream<CharT> sstr;63  const std::locale locale(LOCALE_ja_JP_UTF_8);64  sstr.imbue(locale);65  sstr << mwd;66  return sstr.str();67}68 69template <class CharT>70static void test() {71  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{72                 std::chrono::month{0}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),73             SV("0 is not a valid month/Sun[1]"));74  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{75                 std::chrono::month{1}, std::chrono::weekday_indexed{std::chrono::weekday{1}, 1}}),76             SV("Jan/Mon[1]"));77  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{78                 std::chrono::month{2}, std::chrono::weekday_indexed{std::chrono::weekday{2}, 2}}),79             SV("Feb/Tue[2]"));80  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{81                 std::chrono::month{3}, std::chrono::weekday_indexed{std::chrono::weekday{3}, 3}}),82             SV("Mar/Wed[3]"));83  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{84                 std::chrono::month{4}, std::chrono::weekday_indexed{std::chrono::weekday{4}, 4}}),85             SV("Apr/Thu[4]"));86  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{87                 std::chrono::month{5}, std::chrono::weekday_indexed{std::chrono::weekday{5}, 5}}),88             SV("May/Fri[5]"));89  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{90                 std::chrono::month{6}, std::chrono::weekday_indexed{std::chrono::weekday{6}, 6}}),91             SV("Jun/Sat[6 is not a valid index]"));92  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{93                 std::chrono::month{7}, std::chrono::weekday_indexed{std::chrono::weekday{7}, 7}}),94             SV("Jul/Sun[7 is not a valid index]"));95  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{96                 std::chrono::month{8}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),97             SV("Aug/8 is not a valid weekday[0 is not a valid index]"));98  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{99                 std::chrono::month{9}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),100             SV("Sep/Sun[1]"));101  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{102                 std::chrono::month{10}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),103             SV("Oct/Sun[1]"));104  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{105                 std::chrono::month{11}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),106             SV("Nov/Sun[1]"));107  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{108                 std::chrono::month{12}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),109             SV("Dec/Sun[1]"));110  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{111                 std::chrono::month{13}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),112             SV("13 is not a valid month/Sun[1]"));113  TEST_EQUAL(stream_c_locale<CharT>(std::chrono::month_weekday{114                 std::chrono::month{255}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),115             SV("255 is not a valid month/8 is not a valid weekday[0 is not a valid index]"));116 117#if defined(__APPLE__)118  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{119                 std::chrono::month{0}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),120             SV("0 is not a valid month/Dim[1]"));121  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{122                 std::chrono::month{1}, std::chrono::weekday_indexed{std::chrono::weekday{1}, 1}}),123             SV("jan/Lun[1]"));124  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{125                 std::chrono::month{2}, std::chrono::weekday_indexed{std::chrono::weekday{2}, 2}}),126             SV("fév/Mar[2]"));127  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{128                 std::chrono::month{3}, std::chrono::weekday_indexed{std::chrono::weekday{3}, 3}}),129             SV("mar/Mer[3]"));130  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{131                 std::chrono::month{4}, std::chrono::weekday_indexed{std::chrono::weekday{4}, 4}}),132             SV("avr/Jeu[4]"));133  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{134                 std::chrono::month{5}, std::chrono::weekday_indexed{std::chrono::weekday{5}, 5}}),135             SV("mai/Ven[5]"));136  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{137                 std::chrono::month{6}, std::chrono::weekday_indexed{std::chrono::weekday{6}, 6}}),138             SV("jui/Sam[6 is not a valid index]"));139  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{140                 std::chrono::month{7}, std::chrono::weekday_indexed{std::chrono::weekday{7}, 7}}),141             SV("jul/Dim[7 is not a valid index]"));142  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{143                 std::chrono::month{8}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),144             SV("aoû/8 is not a valid weekday[0 is not a valid index]"));145  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{146                 std::chrono::month{9}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),147             SV("sep/Dim[1]"));148  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{149                 std::chrono::month{10}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),150             SV("oct/Dim[1]"));151  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{152                 std::chrono::month{11}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),153             SV("nov/Dim[1]"));154  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{155                 std::chrono::month{12}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),156             SV("déc/Dim[1]"));157  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{158                 std::chrono::month{13}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),159             SV("13 is not a valid month/Dim[1]"));160  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{161                 std::chrono::month{255}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),162             SV("255 is not a valid month/8 is not a valid weekday[0 is not a valid index]"));163#else //  defined(__APPLE__)164  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{165                 std::chrono::month{0}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),166             SV("0 is not a valid month/dim.[1]"));167  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{168                 std::chrono::month{1}, std::chrono::weekday_indexed{std::chrono::weekday{1}, 1}}),169             SV("janv./lun.[1]"));170  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{171                 std::chrono::month{2}, std::chrono::weekday_indexed{std::chrono::weekday{2}, 2}}),172             SV("févr./mar.[2]"));173  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{174                 std::chrono::month{3}, std::chrono::weekday_indexed{std::chrono::weekday{3}, 3}}),175             SV("mars/mer.[3]"));176#  if defined(_WIN32) || defined(_AIX) || defined(__FreeBSD__)177  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{178                 std::chrono::month{4}, std::chrono::weekday_indexed{std::chrono::weekday{4}, 4}}),179             SV("avr./jeu.[4]"));180#  else181  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{182                 std::chrono::month{4}, std::chrono::weekday_indexed{std::chrono::weekday{4}, 4}}),183             SV("avril/jeu.[4]"));184#  endif185  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{186                 std::chrono::month{5}, std::chrono::weekday_indexed{std::chrono::weekday{5}, 5}}),187             SV("mai/ven.[5]"));188  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{189                 std::chrono::month{6}, std::chrono::weekday_indexed{std::chrono::weekday{6}, 6}}),190             SV("juin/sam.[6 is not a valid index]"));191  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{192                 std::chrono::month{7}, std::chrono::weekday_indexed{std::chrono::weekday{7}, 7}}),193             SV("juil./dim.[7 is not a valid index]"));194  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{195                 std::chrono::month{8}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),196             SV("août/8 is not a valid weekday[0 is not a valid index]"));197  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{198                 std::chrono::month{9}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),199             SV("sept./dim.[1]"));200  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{201                 std::chrono::month{10}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),202             SV("oct./dim.[1]"));203  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{204                 std::chrono::month{11}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),205             SV("nov./dim.[1]"));206  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{207                 std::chrono::month{12}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),208             SV("déc./dim.[1]"));209  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{210                 std::chrono::month{13}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),211             SV("13 is not a valid month/dim.[1]"));212  TEST_EQUAL(stream_fr_FR_locale<CharT>(std::chrono::month_weekday{213                 std::chrono::month{255}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),214             SV("255 is not a valid month/8 is not a valid weekday[0 is not a valid index]"));215#endif //  defined(__APPLE__)216 217  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{218                 std::chrono::month{0}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),219             SV("0 is not a valid month/日[1]"));220#if defined(__APPLE__) || defined(_WIN32)221#  if defined(__APPLE__)222  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{223                 std::chrono::month{1}, std::chrono::weekday_indexed{std::chrono::weekday{1}, 1}}),224             SV(" 1/月[1]"));225  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{226                 std::chrono::month{2}, std::chrono::weekday_indexed{std::chrono::weekday{2}, 2}}),227             SV(" 2/火[2]"));228  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{229                 std::chrono::month{3}, std::chrono::weekday_indexed{std::chrono::weekday{3}, 3}}),230             SV(" 3/水[3]"));231  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{232                 std::chrono::month{4}, std::chrono::weekday_indexed{std::chrono::weekday{4}, 4}}),233             SV(" 4/木[4]"));234  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{235                 std::chrono::month{5}, std::chrono::weekday_indexed{std::chrono::weekday{5}, 5}}),236             SV(" 5/金[5]"));237  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{238                 std::chrono::month{6}, std::chrono::weekday_indexed{std::chrono::weekday{6}, 6}}),239             SV(" 6/土[6 is not a valid index]"));240  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{241                 std::chrono::month{7}, std::chrono::weekday_indexed{std::chrono::weekday{7}, 7}}),242             SV(" 7/日[7 is not a valid index]"));243  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{244                 std::chrono::month{8}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),245             SV(" 8/8 is not a valid weekday[0 is not a valid index]"));246  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{247                 std::chrono::month{9}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),248             SV(" 9/日[1]"));249#  else  // defined(__APPLE__)250  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{251                 std::chrono::month{1}, std::chrono::weekday_indexed{std::chrono::weekday{1}, 1}}),252             SV("1/月[1]"));253  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{254                 std::chrono::month{2}, std::chrono::weekday_indexed{std::chrono::weekday{2}, 2}}),255             SV("2/火[2]"));256  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{257                 std::chrono::month{3}, std::chrono::weekday_indexed{std::chrono::weekday{3}, 3}}),258             SV("3/水[3]"));259  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{260                 std::chrono::month{4}, std::chrono::weekday_indexed{std::chrono::weekday{4}, 4}}),261             SV("4/木[4]"));262  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{263                 std::chrono::month{5}, std::chrono::weekday_indexed{std::chrono::weekday{5}, 5}}),264             SV("5/金[5]"));265  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{266                 std::chrono::month{6}, std::chrono::weekday_indexed{std::chrono::weekday{6}, 6}}),267             SV("6/土[6 is not a valid index]"));268  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{269                 std::chrono::month{7}, std::chrono::weekday_indexed{std::chrono::weekday{7}, 7}}),270             SV("7/日[7 is not a valid index]"));271  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{272                 std::chrono::month{8}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),273             SV("8/8 is not a valid weekday[0 is not a valid index]"));274  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{275                 std::chrono::month{9}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),276             SV("9/日[1]"));277#  endif // defined(__APPLE__)278  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{279                 std::chrono::month{10}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),280             SV("10/日[1]"));281  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{282                 std::chrono::month{11}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),283             SV("11/日[1]"));284  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{285                 std::chrono::month{12}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),286             SV("12/日[1]"));287#else // defined(__APPLE__) || defined(_WIN32)288#  if defined(_AIX)289  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{290                 std::chrono::month{1}, std::chrono::weekday_indexed{std::chrono::weekday{1}, 1}}),291             SV("1月/月[1]"));292  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{293                 std::chrono::month{2}, std::chrono::weekday_indexed{std::chrono::weekday{2}, 2}}),294             SV("2月/火[2]"));295  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{296                 std::chrono::month{3}, std::chrono::weekday_indexed{std::chrono::weekday{3}, 3}}),297             SV("3月/水[3]"));298  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{299                 std::chrono::month{4}, std::chrono::weekday_indexed{std::chrono::weekday{4}, 4}}),300             SV("4月/木[4]"));301  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{302                 std::chrono::month{5}, std::chrono::weekday_indexed{std::chrono::weekday{5}, 5}}),303             SV("5月/金[5]"));304  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{305                 std::chrono::month{6}, std::chrono::weekday_indexed{std::chrono::weekday{6}, 6}}),306             SV("6月/土[6 is not a valid index]"));307  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{308                 std::chrono::month{7}, std::chrono::weekday_indexed{std::chrono::weekday{7}, 7}}),309             SV("7月/日[7 is not a valid index]"));310  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{311                 std::chrono::month{8}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),312             SV("8月/8 is not a valid weekday[0 is not a valid index]"));313  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{314                 std::chrono::month{9}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),315             SV("9月/日[1]"));316#  else  // defined(_AIX)317  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{318                 std::chrono::month{1}, std::chrono::weekday_indexed{std::chrono::weekday{1}, 1}}),319             SV(" 1月/月[1]"));320  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{321                 std::chrono::month{2}, std::chrono::weekday_indexed{std::chrono::weekday{2}, 2}}),322             SV(" 2月/火[2]"));323  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{324                 std::chrono::month{3}, std::chrono::weekday_indexed{std::chrono::weekday{3}, 3}}),325             SV(" 3月/水[3]"));326  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{327                 std::chrono::month{4}, std::chrono::weekday_indexed{std::chrono::weekday{4}, 4}}),328             SV(" 4月/木[4]"));329  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{330                 std::chrono::month{5}, std::chrono::weekday_indexed{std::chrono::weekday{5}, 5}}),331             SV(" 5月/金[5]"));332  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{333                 std::chrono::month{6}, std::chrono::weekday_indexed{std::chrono::weekday{6}, 6}}),334             SV(" 6月/土[6 is not a valid index]"));335  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{336                 std::chrono::month{7}, std::chrono::weekday_indexed{std::chrono::weekday{7}, 7}}),337             SV(" 7月/日[7 is not a valid index]"));338  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{339                 std::chrono::month{8}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),340             SV(" 8月/8 is not a valid weekday[0 is not a valid index]"));341  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{342                 std::chrono::month{9}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),343             SV(" 9月/日[1]"));344#  endif // defined(_AIX)345  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{346                 std::chrono::month{10}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),347             SV("10月/日[1]"));348  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{349                 std::chrono::month{11}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),350             SV("11月/日[1]"));351  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{352                 std::chrono::month{12}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),353             SV("12月/日[1]"));354#endif   // defined(__APPLE__) || defined(_WIN32)355  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{356                 std::chrono::month{13}, std::chrono::weekday_indexed{std::chrono::weekday{0}, 1}}),357             SV("13 is not a valid month/日[1]"));358  TEST_EQUAL(stream_ja_JP_locale<CharT>(std::chrono::month_weekday{359                 std::chrono::month{255}, std::chrono::weekday_indexed{std::chrono::weekday{8}, 0}}),360             SV("255 is not a valid month/8 is not a valid weekday[0 is not a valid index]"));361}362 363int main(int, char**) {364  test<char>();365 366#ifndef TEST_HAS_NO_WIDE_CHARACTERS367  test<wchar_t>();368#endif369 370  return 0;371}372