blob: f9fa38ddf26a604c344b373458119e35ccf7a801 [file] [log] [blame]
Howard Hinnant3257c982010-06-17 00:34:59 +00001// -*- C++ -*-
Howard Hinnant0ce02242010-09-28 17:19:10 +00002//===----------------------------------------------------------------------===//
Howard Hinnant3257c982010-06-17 00:34:59 +00003//
4// The LLVM Compiler Infrastructure
5//
Howard Hinnantb64f8b02010-11-16 22:09:02 +00006// This file is dual licensed under the MIT and the University of Illinois Open
7// Source Licenses. See LICENSE.TXT for details.
Howard Hinnant3257c982010-06-17 00:34:59 +00008//
9//===----------------------------------------------------------------------===//
10
11// <regex>
12
13// template <class charT> struct regex_traits;
14
15// charT translate_nocase(charT c) const;
16
Dan Albert5980ce32014-11-21 01:23:04 +000017// REQUIRES: locale.en_US.UTF-8
18
Jonathan Roelofs33459612015-01-14 23:38:12 +000019// XFAIL: with_system_cxx_lib=x86_64-apple-darwin11
20// XFAIL: with_system_cxx_lib=x86_64-apple-darwin12
Howard Hinnantdd854b22013-05-07 17:37:19 +000021
Eric Fiselier79578cd2014-10-23 21:17:36 +000022// TODO: investigation needed
23// XFAIL: linux-gnu
24
Howard Hinnant3257c982010-06-17 00:34:59 +000025#include <regex>
26#include <cassert>
27
Marshall Clow83e2c4d2013-01-05 03:21:01 +000028#include "platform_support.h"
Howard Hinnantc0d0cba2011-10-03 15:23:59 +000029
Howard Hinnant3257c982010-06-17 00:34:59 +000030int main()
31{
32 {
33 std::regex_traits<char> t;
34 assert(t.translate_nocase(' ') == ' ');
35 assert(t.translate_nocase('A') == 'a');
36 assert(t.translate_nocase('\x07') == '\x07');
37 assert(t.translate_nocase('.') == '.');
38 assert(t.translate_nocase('a') == 'a');
39 assert(t.translate_nocase('1') == '1');
40 assert(t.translate_nocase('\xDA') == '\xDA');
41 assert(t.translate_nocase('\xFA') == '\xFA');
Howard Hinnantc0d0cba2011-10-03 15:23:59 +000042 t.imbue(std::locale(LOCALE_en_US_UTF_8));
Howard Hinnant3257c982010-06-17 00:34:59 +000043 assert(t.translate_nocase(' ') == ' ');
44 assert(t.translate_nocase('A') == 'a');
45 assert(t.translate_nocase('\x07') == '\x07');
46 assert(t.translate_nocase('.') == '.');
47 assert(t.translate_nocase('a') == 'a');
48 assert(t.translate_nocase('1') == '1');
Joerg Sonnenberger63d8f7e2013-05-02 19:17:48 +000049 assert(t.translate_nocase('\xDA') == '\xFA');
Howard Hinnant3257c982010-06-17 00:34:59 +000050 assert(t.translate_nocase('\xFA') == '\xFA');
51 }
52 {
53 std::regex_traits<wchar_t> t;
54 assert(t.translate_nocase(L' ') == L' ');
55 assert(t.translate_nocase(L'A') == L'a');
56 assert(t.translate_nocase(L'\x07') == L'\x07');
57 assert(t.translate_nocase(L'.') == L'.');
58 assert(t.translate_nocase(L'a') == L'a');
59 assert(t.translate_nocase(L'1') == L'1');
60 assert(t.translate_nocase(L'\xDA') == L'\xDA');
61 assert(t.translate_nocase(L'\xFA') == L'\xFA');
Howard Hinnantc0d0cba2011-10-03 15:23:59 +000062 t.imbue(std::locale(LOCALE_en_US_UTF_8));
Howard Hinnant3257c982010-06-17 00:34:59 +000063 assert(t.translate_nocase(L' ') == L' ');
64 assert(t.translate_nocase(L'A') == L'a');
65 assert(t.translate_nocase(L'\x07') == L'\x07');
66 assert(t.translate_nocase(L'.') == L'.');
67 assert(t.translate_nocase(L'a') == L'a');
68 assert(t.translate_nocase(L'1') == L'1');
69 assert(t.translate_nocase(L'\xDA') == L'\xFA');
70 assert(t.translate_nocase(L'\xFA') == L'\xFA');
71 }
72}