X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=libstdc%2B%2B-v3%2Ftestsuite%2F22_locale%2Fcodecvt%2Fin%2Fchar%2F1.cc;fp=libstdc%2B%2B-v3%2Ftestsuite%2F22_locale%2Fcodecvt%2Fin%2Fchar%2F1.cc;h=6da273c249f8615e4b17207058748ca478c23d4b;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=0000000000000000000000000000000000000000;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git diff --git a/libstdc++-v3/testsuite/22_locale/codecvt/in/char/1.cc b/libstdc++-v3/testsuite/22_locale/codecvt/in/char/1.cc new file mode 100644 index 00000000..6da273c2 --- /dev/null +++ b/libstdc++-v3/testsuite/22_locale/codecvt/in/char/1.cc @@ -0,0 +1,69 @@ +// 2000-08-17 Benjamin Kosnik + +// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 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.2.1.5 - Template class codecvt [lib.locale.codecvt] + +#include +#include +#include + +// Required instantiation, degenerate conversion. +// codecvt +void test01() +{ + using namespace std; + typedef codecvt_base::result result; + typedef codecvt c_codecvt; + + bool test __attribute__((unused)) = true; + const char* c_lit = "black pearl jasmine tea"; + const char* from_next; + int size = 23; + char* c_arr = new char[size]; + char* c_ref = new char[size]; + char* to_next; + + locale loc = locale::classic(); + c_codecvt::state_type state; + const c_codecvt* cvt = &use_facet(loc); + + // According to the resolution of DR19 (see also libstd++/9168), in + // case of degenerate conversion ('noconv'), "there are no changes to + // the values in [to, to_limit)." + memset(c_ref, 'X', size); + + // in + memset(c_arr, 'X', size); + result r1 = cvt->in(state, c_lit, c_lit + size, from_next, + c_arr, c_arr + size, to_next); + VERIFY( r1 == codecvt_base::noconv ); + VERIFY( !memcmp(c_arr, c_ref, size) ); + VERIFY( from_next == c_lit ); + VERIFY( to_next == c_arr ); + + delete [] c_arr; + delete [] c_ref; +} + +int main () +{ + test01(); + return 0; +}