gcc/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc

127 lines
3.4 KiB
C++
Raw Normal View History

// Copyright (C) 2003 Free Software Foundation, Inc.
//
// 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 2, 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 COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// 27.8.1.4 Overridden virtual functions
#include <fstream>
typedef unsigned char Char;
namespace std
{
template <>
class codecvt<Char, char, mbstate_t> :
public locale::facet, public codecvt_base
{
public:
typedef Char intern_type;
typedef char extern_type;
typedef mbstate_t state_type;
explicit codecvt(size_t refs = 0)
: locale::facet(refs) { }
result out(mbstate_t& state, const Char* from,
const Char* from_end, const Char*& from_next,
char* to, char* to_limit, char*& to_next) const
{
return do_out(state, from, from_end, from_next,
to, to_limit, to_next);
}
result in(mbstate_t& state, const char* from,
const char* from_end, const char*& from_next,
Char* to, Char* to_limit, Char*& to_next) const
{
return do_in(state, from, from_end, from_next,
to, to_limit, to_next);
}
result unshift(mbstate_t& state, char* to, char* to_end,
char*& to_next) const
{ return do_unshift(state, to, to_end, to_next); }
int length(mbstate_t& state, const char* from,
const char* from_end, size_t max) const
{ return do_length(state, from, from_end, max); }
int encoding() const throw()
{ return do_encoding(); }
bool always_noconv() const throw()
{ return do_always_noconv(); }
int max_length() const throw()
{ return do_max_length(); }
static locale::id id;
protected:
mt_allocator.h (__mt_alloc::__mt_alloc): Remove name of unused parameter. 2005-12-26 Chris Jefferson <chris@bubblescope.net> * include/ext/mt_allocator.h (__mt_alloc::__mt_alloc): Remove name of unused parameter. * include/bits/stream_iterator.h (istream_iterator::istream_iterator): Construct _M_value. * include/debug/functions.h (__check_valid_range): Add __attribute__((unused)). * include/tr1/hashtable (hashtable::end): Remove name of unused parameter. * include/tr1/tuple_iterate.h (tuple::tuple): Likewise. (tuple::operator=): Add __attribute__((unused)). * include/tr1/functional (Fnv_hash<4>::hash): Add static_cast. (Fnv_hash<8>::hash): Likewise. * testsuite/25_algorithms/iter_swap/20577.cc (swap): Remove name of unused parameter. * testsuite/25_algorithms/unique_copy/check_type.cc (S2::S2,X2::X2): Likewise. * testsuite/22_locale/ctype/narrow/char/19955.cc (do_narrow): Likewise. * testsuite/22_locale/ctype/is/char/9858.cc (Derived::do_is, Derived::do_scan_is, Derived::do_scan_not, Derived2::do_is, Derived2::do_scan_is, Derived2::do_scan_not): Likewise. * testsuite/22_locale/time_put/put/wchar_t/12439_1.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/wchar_t/12439_3.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/char/12439_1.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/char/12439_3.cc (TP::do_put): Likewise. * testsuite/testsuite_io.h (fail_num_get::do_get, fail_num_put::do_put): Likewise. * testsuite/25_algorithms/find/17441.cc (find): Likewise. * testsuite/23_containers/vector/cons/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/vector/bool/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/list/cons/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/set/modifiers/16728.cc (test_container): Likewise. * testsuite/27_io/basic_ios/cons/char/3.cc (char_traits::to_char_type, to_int_type): Likewise. * testsuite/27_io/basic_filebuf/imbue/12206.cc (codecvt::do_out, do_in, do_unshift, do_length): Likewise. * testsuite/21_strings/basic_string/capacity/1.cc (operator==(A<T>,A<T>), operator<(A<T>,A<T>), char_traits::to_char_type, char_traits::to_int_type): Likewise * testsuite/testsuite_character.h (ctype::do_is, ctype::do_scan_is, ctype::do_scan_not, do_toupper, do_tolower): Likewise. * testsuite/25_algorithms/replace_copy/check_type.cc (Z::operator=): Add missing return statement. * testsuite/25_algorithms/replace_copy_if/check_type.cc (Z::operator=): Likewise. * testsuite/testsuite_iterators.h (output_iterator_wrapper::operator=, random_access_iterator_wrapper::operator==): Likewise. * testsuite/20_util/functional/binders/1.cc (s::f_int_int_const, s::f_int_int, s::f_int_void_const, s::f_int_void): Likewise. * testsuite/27_io/types/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/write/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/write/char/1.cc (test01): Likewise. * testsuite/21_strings/c_strings/wchar_t/24559.cc (main): Likewise. * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc (check): Add static cast. * testsuite/27_io/basic_istream/ignore/char/2.cc (check): Likewise. * testsuite/27_io/basic_istream/getline/wchar_t/5.cc (check): Likewise. * testsuite/27_io/basic_istream/getline/char/5.cc (check): Likewise. * testsuite/testsuite_allocator.h (check_new): Likewise. (check_deallocate_null): Add missing return value. * testsuite/ext/pool_allocator/allocate_chunk.cc (test01): Make variable unsigned. * testsuite/23_containers/vector/modifiers/erase/1.cc (N,N1,N2,N3,N4, N5,test01): Likewise. * testsuite/26_numerics/valarray/valarray_subset_assignment.cc (check_array): Likewise. (main): Removed unused variable. * testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc (test05): Removed unused variable. * testsuite/27_io/basic_ostream/flush/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/flush/char/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/endl/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/endl/char/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/ends/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/ends/char/1.cc (test01): Likewise. * testsuite/tr1/2_general_utilities/memory/shared_ptr/ assign/shared_ptr.cc (test01): Correct return type. * testsuite/27_io/basic_filebuf/close/char/2.cc (test_02): Add default value to close_num. From-SVN: r109062
2005-12-26 11:53:42 +01:00
virtual result do_out(mbstate_t&, const Char*,
const Char*,
const Char*&, char*,
char*, char*&) const
{ return ok; }
mt_allocator.h (__mt_alloc::__mt_alloc): Remove name of unused parameter. 2005-12-26 Chris Jefferson <chris@bubblescope.net> * include/ext/mt_allocator.h (__mt_alloc::__mt_alloc): Remove name of unused parameter. * include/bits/stream_iterator.h (istream_iterator::istream_iterator): Construct _M_value. * include/debug/functions.h (__check_valid_range): Add __attribute__((unused)). * include/tr1/hashtable (hashtable::end): Remove name of unused parameter. * include/tr1/tuple_iterate.h (tuple::tuple): Likewise. (tuple::operator=): Add __attribute__((unused)). * include/tr1/functional (Fnv_hash<4>::hash): Add static_cast. (Fnv_hash<8>::hash): Likewise. * testsuite/25_algorithms/iter_swap/20577.cc (swap): Remove name of unused parameter. * testsuite/25_algorithms/unique_copy/check_type.cc (S2::S2,X2::X2): Likewise. * testsuite/22_locale/ctype/narrow/char/19955.cc (do_narrow): Likewise. * testsuite/22_locale/ctype/is/char/9858.cc (Derived::do_is, Derived::do_scan_is, Derived::do_scan_not, Derived2::do_is, Derived2::do_scan_is, Derived2::do_scan_not): Likewise. * testsuite/22_locale/time_put/put/wchar_t/12439_1.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/wchar_t/12439_3.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/char/12439_1.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/char/12439_3.cc (TP::do_put): Likewise. * testsuite/testsuite_io.h (fail_num_get::do_get, fail_num_put::do_put): Likewise. * testsuite/25_algorithms/find/17441.cc (find): Likewise. * testsuite/23_containers/vector/cons/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/vector/bool/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/list/cons/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/set/modifiers/16728.cc (test_container): Likewise. * testsuite/27_io/basic_ios/cons/char/3.cc (char_traits::to_char_type, to_int_type): Likewise. * testsuite/27_io/basic_filebuf/imbue/12206.cc (codecvt::do_out, do_in, do_unshift, do_length): Likewise. * testsuite/21_strings/basic_string/capacity/1.cc (operator==(A<T>,A<T>), operator<(A<T>,A<T>), char_traits::to_char_type, char_traits::to_int_type): Likewise * testsuite/testsuite_character.h (ctype::do_is, ctype::do_scan_is, ctype::do_scan_not, do_toupper, do_tolower): Likewise. * testsuite/25_algorithms/replace_copy/check_type.cc (Z::operator=): Add missing return statement. * testsuite/25_algorithms/replace_copy_if/check_type.cc (Z::operator=): Likewise. * testsuite/testsuite_iterators.h (output_iterator_wrapper::operator=, random_access_iterator_wrapper::operator==): Likewise. * testsuite/20_util/functional/binders/1.cc (s::f_int_int_const, s::f_int_int, s::f_int_void_const, s::f_int_void): Likewise. * testsuite/27_io/types/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/write/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/write/char/1.cc (test01): Likewise. * testsuite/21_strings/c_strings/wchar_t/24559.cc (main): Likewise. * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc (check): Add static cast. * testsuite/27_io/basic_istream/ignore/char/2.cc (check): Likewise. * testsuite/27_io/basic_istream/getline/wchar_t/5.cc (check): Likewise. * testsuite/27_io/basic_istream/getline/char/5.cc (check): Likewise. * testsuite/testsuite_allocator.h (check_new): Likewise. (check_deallocate_null): Add missing return value. * testsuite/ext/pool_allocator/allocate_chunk.cc (test01): Make variable unsigned. * testsuite/23_containers/vector/modifiers/erase/1.cc (N,N1,N2,N3,N4, N5,test01): Likewise. * testsuite/26_numerics/valarray/valarray_subset_assignment.cc (check_array): Likewise. (main): Removed unused variable. * testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc (test05): Removed unused variable. * testsuite/27_io/basic_ostream/flush/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/flush/char/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/endl/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/endl/char/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/ends/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/ends/char/1.cc (test01): Likewise. * testsuite/tr1/2_general_utilities/memory/shared_ptr/ assign/shared_ptr.cc (test01): Correct return type. * testsuite/27_io/basic_filebuf/close/char/2.cc (test_02): Add default value to close_num. From-SVN: r109062
2005-12-26 11:53:42 +01:00
virtual result do_in(mbstate_t&, const char*,
const char*,
const char*&, Char*,
Char*, Char*&) const
{ return ok; }
mt_allocator.h (__mt_alloc::__mt_alloc): Remove name of unused parameter. 2005-12-26 Chris Jefferson <chris@bubblescope.net> * include/ext/mt_allocator.h (__mt_alloc::__mt_alloc): Remove name of unused parameter. * include/bits/stream_iterator.h (istream_iterator::istream_iterator): Construct _M_value. * include/debug/functions.h (__check_valid_range): Add __attribute__((unused)). * include/tr1/hashtable (hashtable::end): Remove name of unused parameter. * include/tr1/tuple_iterate.h (tuple::tuple): Likewise. (tuple::operator=): Add __attribute__((unused)). * include/tr1/functional (Fnv_hash<4>::hash): Add static_cast. (Fnv_hash<8>::hash): Likewise. * testsuite/25_algorithms/iter_swap/20577.cc (swap): Remove name of unused parameter. * testsuite/25_algorithms/unique_copy/check_type.cc (S2::S2,X2::X2): Likewise. * testsuite/22_locale/ctype/narrow/char/19955.cc (do_narrow): Likewise. * testsuite/22_locale/ctype/is/char/9858.cc (Derived::do_is, Derived::do_scan_is, Derived::do_scan_not, Derived2::do_is, Derived2::do_scan_is, Derived2::do_scan_not): Likewise. * testsuite/22_locale/time_put/put/wchar_t/12439_1.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/wchar_t/12439_3.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/char/12439_1.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/char/12439_3.cc (TP::do_put): Likewise. * testsuite/testsuite_io.h (fail_num_get::do_get, fail_num_put::do_put): Likewise. * testsuite/25_algorithms/find/17441.cc (find): Likewise. * testsuite/23_containers/vector/cons/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/vector/bool/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/list/cons/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/set/modifiers/16728.cc (test_container): Likewise. * testsuite/27_io/basic_ios/cons/char/3.cc (char_traits::to_char_type, to_int_type): Likewise. * testsuite/27_io/basic_filebuf/imbue/12206.cc (codecvt::do_out, do_in, do_unshift, do_length): Likewise. * testsuite/21_strings/basic_string/capacity/1.cc (operator==(A<T>,A<T>), operator<(A<T>,A<T>), char_traits::to_char_type, char_traits::to_int_type): Likewise * testsuite/testsuite_character.h (ctype::do_is, ctype::do_scan_is, ctype::do_scan_not, do_toupper, do_tolower): Likewise. * testsuite/25_algorithms/replace_copy/check_type.cc (Z::operator=): Add missing return statement. * testsuite/25_algorithms/replace_copy_if/check_type.cc (Z::operator=): Likewise. * testsuite/testsuite_iterators.h (output_iterator_wrapper::operator=, random_access_iterator_wrapper::operator==): Likewise. * testsuite/20_util/functional/binders/1.cc (s::f_int_int_const, s::f_int_int, s::f_int_void_const, s::f_int_void): Likewise. * testsuite/27_io/types/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/write/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/write/char/1.cc (test01): Likewise. * testsuite/21_strings/c_strings/wchar_t/24559.cc (main): Likewise. * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc (check): Add static cast. * testsuite/27_io/basic_istream/ignore/char/2.cc (check): Likewise. * testsuite/27_io/basic_istream/getline/wchar_t/5.cc (check): Likewise. * testsuite/27_io/basic_istream/getline/char/5.cc (check): Likewise. * testsuite/testsuite_allocator.h (check_new): Likewise. (check_deallocate_null): Add missing return value. * testsuite/ext/pool_allocator/allocate_chunk.cc (test01): Make variable unsigned. * testsuite/23_containers/vector/modifiers/erase/1.cc (N,N1,N2,N3,N4, N5,test01): Likewise. * testsuite/26_numerics/valarray/valarray_subset_assignment.cc (check_array): Likewise. (main): Removed unused variable. * testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc (test05): Removed unused variable. * testsuite/27_io/basic_ostream/flush/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/flush/char/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/endl/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/endl/char/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/ends/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/ends/char/1.cc (test01): Likewise. * testsuite/tr1/2_general_utilities/memory/shared_ptr/ assign/shared_ptr.cc (test01): Correct return type. * testsuite/27_io/basic_filebuf/close/char/2.cc (test_02): Add default value to close_num. From-SVN: r109062
2005-12-26 11:53:42 +01:00
virtual result do_unshift(mbstate_t&, char*, char*,
char*&) const
{ return noconv; }
mt_allocator.h (__mt_alloc::__mt_alloc): Remove name of unused parameter. 2005-12-26 Chris Jefferson <chris@bubblescope.net> * include/ext/mt_allocator.h (__mt_alloc::__mt_alloc): Remove name of unused parameter. * include/bits/stream_iterator.h (istream_iterator::istream_iterator): Construct _M_value. * include/debug/functions.h (__check_valid_range): Add __attribute__((unused)). * include/tr1/hashtable (hashtable::end): Remove name of unused parameter. * include/tr1/tuple_iterate.h (tuple::tuple): Likewise. (tuple::operator=): Add __attribute__((unused)). * include/tr1/functional (Fnv_hash<4>::hash): Add static_cast. (Fnv_hash<8>::hash): Likewise. * testsuite/25_algorithms/iter_swap/20577.cc (swap): Remove name of unused parameter. * testsuite/25_algorithms/unique_copy/check_type.cc (S2::S2,X2::X2): Likewise. * testsuite/22_locale/ctype/narrow/char/19955.cc (do_narrow): Likewise. * testsuite/22_locale/ctype/is/char/9858.cc (Derived::do_is, Derived::do_scan_is, Derived::do_scan_not, Derived2::do_is, Derived2::do_scan_is, Derived2::do_scan_not): Likewise. * testsuite/22_locale/time_put/put/wchar_t/12439_1.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/wchar_t/12439_3.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/char/12439_1.cc (TP::do_put): Likewise. * testsuite/22_locale/time_put/put/char/12439_3.cc (TP::do_put): Likewise. * testsuite/testsuite_io.h (fail_num_get::do_get, fail_num_put::do_put): Likewise. * testsuite/25_algorithms/find/17441.cc (find): Likewise. * testsuite/23_containers/vector/cons/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/vector/bool/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/list/cons/clear_allocator.cc (clear_alloc::clear_alloc): Likewise. * testsuite/23_containers/set/modifiers/16728.cc (test_container): Likewise. * testsuite/27_io/basic_ios/cons/char/3.cc (char_traits::to_char_type, to_int_type): Likewise. * testsuite/27_io/basic_filebuf/imbue/12206.cc (codecvt::do_out, do_in, do_unshift, do_length): Likewise. * testsuite/21_strings/basic_string/capacity/1.cc (operator==(A<T>,A<T>), operator<(A<T>,A<T>), char_traits::to_char_type, char_traits::to_int_type): Likewise * testsuite/testsuite_character.h (ctype::do_is, ctype::do_scan_is, ctype::do_scan_not, do_toupper, do_tolower): Likewise. * testsuite/25_algorithms/replace_copy/check_type.cc (Z::operator=): Add missing return statement. * testsuite/25_algorithms/replace_copy_if/check_type.cc (Z::operator=): Likewise. * testsuite/testsuite_iterators.h (output_iterator_wrapper::operator=, random_access_iterator_wrapper::operator==): Likewise. * testsuite/20_util/functional/binders/1.cc (s::f_int_int_const, s::f_int_int, s::f_int_void_const, s::f_int_void): Likewise. * testsuite/27_io/types/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/write/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/write/char/1.cc (test01): Likewise. * testsuite/21_strings/c_strings/wchar_t/24559.cc (main): Likewise. * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc (check): Add static cast. * testsuite/27_io/basic_istream/ignore/char/2.cc (check): Likewise. * testsuite/27_io/basic_istream/getline/wchar_t/5.cc (check): Likewise. * testsuite/27_io/basic_istream/getline/char/5.cc (check): Likewise. * testsuite/testsuite_allocator.h (check_new): Likewise. (check_deallocate_null): Add missing return value. * testsuite/ext/pool_allocator/allocate_chunk.cc (test01): Make variable unsigned. * testsuite/23_containers/vector/modifiers/erase/1.cc (N,N1,N2,N3,N4, N5,test01): Likewise. * testsuite/26_numerics/valarray/valarray_subset_assignment.cc (check_array): Likewise. (main): Removed unused variable. * testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc (test05): Removed unused variable. * testsuite/27_io/basic_ostream/flush/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/flush/char/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/endl/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/endl/char/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/ends/wchar_t/1.cc (test01): Likewise. * testsuite/27_io/basic_ostream/ends/char/1.cc (test01): Likewise. * testsuite/tr1/2_general_utilities/memory/shared_ptr/ assign/shared_ptr.cc (test01): Correct return type. * testsuite/27_io/basic_filebuf/close/char/2.cc (test_02): Add default value to close_num. From-SVN: r109062
2005-12-26 11:53:42 +01:00
virtual int do_length(mbstate_t&, const char*,
const char*, size_t) const
{ return 1; }
virtual int do_encoding() const throw()
{ return 1; }
virtual bool do_always_noconv() const throw()
{ return false; }
virtual int do_max_length() const throw()
{ return 1; }
};
locale::id codecvt<Char, char, mbstate_t>::id;
}
// libstdc++/12206
void test01()
{
using namespace std;
bool test __attribute__((unused)) = true;
locale loc(locale::classic(),
new codecvt<Char, char, std::mbstate_t>);
locale::global(loc);
basic_filebuf<Char, char_traits<Char> > fb;
loc = locale::classic();
locale::global(loc);
fb.pubimbue(loc);
fb.open("tmp_12206", ios_base::out);
try
{
fb.pubseekoff(0, ios_base::cur);
}
catch (std::exception&)
{
}
fb.close();
}
int main()
{
test01();
return 0;
}