X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=libstdc%2B%2B-v3%2Ftestsuite%2F22_locale%2Flocale%2Fcons%2Funicode.cc;fp=libstdc%2B%2B-v3%2Ftestsuite%2F22_locale%2Flocale%2Fcons%2Funicode.cc;h=546fb4e7949ddd7b379872b25240418b4905f406;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=0000000000000000000000000000000000000000;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git
diff --git a/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc b/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
new file mode 100644
index 00000000..546fb4e7
--- /dev/null
+++ b/libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
@@ -0,0 +1,81 @@
+// { dg-require-iconv "ISO-8859-1" }
+
+// Copyright (C) 2006, 2007, 2009 Free Software Foundation
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// .
+
+// 22.1.1.2 locale constructors and destructors [lib.locale.cons]
+
+#include // for mbstate_t
+#include
+#include
+#include
+#include
+#include
+
+typedef std::codecvt c_codecvt;
+
+#ifdef _GLIBCXX_USE_WCHAR_T
+typedef std::codecvt w_codecvt;
+#endif
+
+class gnu_facet: public std::locale::facet
+{
+public:
+ static std::locale::id id;
+};
+
+std::locale::id gnu_facet::id;
+
+void test01()
+{
+ using namespace std;
+ typedef unsigned short int_type;
+ typedef char ext_type;
+ typedef __gnu_cxx::encoding_state state_type;
+ typedef codecvt unicode_codecvt;
+
+ bool test __attribute__((unused)) = true;
+
+ // unicode_codecvt
+ locale loc01(locale::classic());
+ locale loc13(locale::classic(), new unicode_codecvt);
+ VERIFY( loc01 != loc13 );
+ VERIFY( loc13.name() == "*" );
+ try
+ {
+ VERIFY( has_facet(loc13) );
+#ifdef _GLIBCXX_USE_WCHAR_T
+ VERIFY( has_facet(loc13) );
+#endif
+ VERIFY( has_facet(loc13) );
+ }
+ catch(...)
+ { VERIFY( false ); }
+
+ try
+ { use_facet(loc13); }
+ catch(bad_cast& obj)
+ { VERIFY( true ); }
+ catch(...)
+ { VERIFY( false ); }
+}
+
+int main()
+{
+ test01();
+ return 0;
+}