2
0
mirror of https://github.com/boostorg/nowide.git synced 2026-02-22 15:32:35 +00:00
Files
nowide/test/test_iostream.cpp
2019-12-03 16:28:40 +02:00

62 lines
1.8 KiB
C++

//
// Copyright (c) 2015 Artyom Beilis (Tonkikh)
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
#include <boost/nowide/iostream.hpp>
#include <boost/core/lightweight_test.hpp>
#include <string>
#define TEST BOOST_TEST
int main(int argc,char **argv)
{
char const *example = "Basic letters: \xd7\xa9-\xd0\xbc-\xce\xbd\n"
"East Asian Letters: \xe5\x92\x8c\xe5\xb9\xb3\n"
"Non-BMP letters: \xf0\x9d\x84\x9e\n";
try {
int maxval = 15000;
for(int i=0;i<maxval;i++) {
char c = i % 96 + ' ';
TEST(boost::nowide::cin.putback(c));
}
for(int i=maxval-1;i>=0;i--) {
int c = i % 96 + ' ';
TEST(boost::nowide::cin.get() == c);
}
std::string v1,v2;
boost::nowide::cout << "Normal I/O:" << std::endl;
boost::nowide::cout << example << std::endl;
boost::nowide::cerr << example << std::endl;
boost::nowide::cout << "Flushing each character:" << std::endl;
for(char const *s=example;*s;s++) {
boost::nowide::cout << *s << std::flush;
TEST(boost::nowide::cout);
}
TEST(boost::nowide::cout);
TEST(boost::nowide::cerr);
if(argc==2 && argv[1]==std::string("-i")) {
boost::nowide::cin >> v1 >> v2;
TEST(boost::nowide::cin);
boost::nowide::cout << "First: "<< v1 << std::endl;
boost::nowide::cout << "Second: "<< v2 << std::endl;
TEST(boost::nowide::cout);
}
}
catch(std::exception const &e) {
std::cerr << "Fail: " << e.what() << std::endl;
return 1;
}
return boost::report_errors();
}