filter_test.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 99 行
CPP
99 行
// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)// (C) Copyright 2004-2007 Jonathan Turkanis// 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.)// See http://www.boost.org/libs/iostreams for documentation.#include <string>#include <boost/iostreams/filter/test.hpp>#include <boost/test/test_tools.hpp>#include <boost/test/unit_test.hpp>#include "detail/filters.hpp"using namespace boost::iostreams;using namespace boost::iostreams::test;using boost::unit_test::test_suite;const std::string lower = "in addition to providing an abstract framework the " "library provides a number of concrete filters, sources " "and sinks which serve as example applications of the " "library but are also useful in their own right. these " "include components for accessing memory-mapped files, " "for file access via operating system file descriptors, " "for code conversion, for text filtering with regular " "expressions, for line-ending conversion and for " "compression and decompression in the zlib, gzip and " "bzip2 formats.";const std::string upper = "IN ADDITION TO PROVIDING AN ABSTRACT FRAMEWORK THE " "LIBRARY PROVIDES A NUMBER OF CONCRETE FILTERS, SOURCES " "AND SINKS WHICH SERVE AS EXAMPLE APPLICATIONS OF THE " "LIBRARY BUT ARE ALSO USEFUL IN THEIR OWN RIGHT. THESE " "INCLUDE COMPONENTS FOR ACCESSING MEMORY-MAPPED FILES, " "FOR FILE ACCESS VIA OPERATING SYSTEM FILE DESCRIPTORS, " "FOR CODE CONVERSION, FOR TEXT FILTERING WITH REGULAR " "EXPRESSIONS, FOR LINE-ENDING CONVERSION AND FOR " "COMPRESSION AND DECOMPRESSION IN THE ZLIB, GZIP AND " "BZIP2 FORMATS.";struct toupper_dual_use_filter : public dual_use_filter { template<typename Source> int get(Source& s) { int c = boost::iostreams::get(s); return c != EOF && c != WOULD_BLOCK ? std::toupper((unsigned char) c) : c; } template<typename Sink> bool put(Sink& s, char c) { return boost::iostreams::put( s, (char) std::toupper((unsigned char) c) ); }};struct tolower_dual_use_filter : public dual_use_filter { template<typename Source> int get(Source& s) { int c = boost::iostreams::get(s); return c != EOF && c != WOULD_BLOCK ? std::tolower((unsigned char) c) : c; } template<typename Sink> bool put(Sink& s, char c) { return boost::iostreams::put( s, (char) std::tolower((unsigned char) c) ); }};void filter_test(){ BOOST_CHECK(test_input_filter(toupper_filter(), lower, upper)); BOOST_CHECK(test_input_filter(toupper_multichar_filter(), lower, upper)); BOOST_CHECK(test_input_filter(toupper_dual_use_filter(), lower, upper)); BOOST_CHECK(test_output_filter(tolower_filter(), upper, lower)); BOOST_CHECK(test_output_filter(tolower_multichar_filter(), upper, lower)); BOOST_CHECK(test_output_filter(tolower_dual_use_filter(), upper, lower)); BOOST_CHECK(test_filter_pair(tolower_filter(), toupper_filter(), upper)); BOOST_CHECK( test_filter_pair( tolower_multichar_filter(), toupper_multichar_filter(), upper ) );}test_suite* init_unit_test_suite(int, char* []) { test_suite* test = BOOST_TEST_SUITE("filter test"); test->add(BOOST_TEST_CASE(&filter_test)); return test;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?