test_operators.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 177 行

CPP
177
字号
/* * * Copyright (c) 2004 * John Maddock * * Use, modification and distribution are subject to 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 "test.hpp"#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)\   && !BOOST_WORKAROUND(__HP_aCC, BOOST_TESTED_AT(55500))\   && !(defined(__GNUC__) && (__GNUC__ < 3) && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)))template <class T1, class T2>void test_less(const T1& t1, const T2& t2){   if(!(t1 < t2))   {      BOOST_REGEX_TEST_ERROR("Failed < comparison", char);   }   if(!(t1 <= t2))   {      BOOST_REGEX_TEST_ERROR("Failed <= comparison", char);   }   if(!(t1 != t2))   {      BOOST_REGEX_TEST_ERROR("Failed != comparison", char);   }   if(t1 == t2)   {      BOOST_REGEX_TEST_ERROR("Failed == comparison", char);   }   if(t1 >= t2)   {      BOOST_REGEX_TEST_ERROR("Failed >= comparison", char);   }   if(t1 > t2)   {      BOOST_REGEX_TEST_ERROR("Failed > comparison", char);   }}template <class T1, class T2>void test_greater(const T1& t1, const T2& t2){   if(t1 < t2)   {      BOOST_REGEX_TEST_ERROR("Failed < comparison", char);   }   if(t1 <= t2)   {      BOOST_REGEX_TEST_ERROR("Failed <= comparison", char);   }   if(!(t1 != t2))   {      BOOST_REGEX_TEST_ERROR("Failed != comparison", char);   }   if(t1 == t2)   {      BOOST_REGEX_TEST_ERROR("Failed == comparison", char);   }   if(!(t1 >= t2))   {      BOOST_REGEX_TEST_ERROR("Failed >= comparison", char);   }   if(!(t1 > t2))   {      BOOST_REGEX_TEST_ERROR("Failed > comparison", char);   }}template <class T1, class T2>void test_equal(const T1& t1, const T2& t2){   if(t1 < t2)   {      BOOST_REGEX_TEST_ERROR("Failed < comparison", char);   }   if(!(t1 <= t2))   {      BOOST_REGEX_TEST_ERROR("Failed <= comparison", char);   }   if(t1 != t2)   {      BOOST_REGEX_TEST_ERROR("Failed != comparison", char);   }   if(!(t1 == t2))   {      BOOST_REGEX_TEST_ERROR("Failed == comparison", char);   }   if(!(t1 >= t2))   {      BOOST_REGEX_TEST_ERROR("Failed >= comparison", char);   }   if(t1 > t2)   {      BOOST_REGEX_TEST_ERROR("Failed > comparison", char);   }}template <class T1, class T2, class T3>void test_plus(const T1& t1, const T2& t2, const T3& t3){   if(t1 + t2 != t3)   {      BOOST_REGEX_TEST_ERROR("Failed addition", char);   }   if(t3 != t1 + t2)   {      BOOST_REGEX_TEST_ERROR("Failed addition", char);   }}void test_operators(){   test_info<char>::set_typename("sub_match operators");   std::string s1("a");   std::string s2("b");   boost::sub_match<std::string::const_iterator> sub1, sub2;   sub1.first = s1.begin();   sub1.second = s1.end();   sub1.matched = true;   sub2.first = s2.begin();   sub2.second = s2.end();   sub2.matched = true;   test_less(sub1, sub2);   test_less(sub1, s2.c_str());   test_less(s1.c_str(), sub2);   test_less(sub1, *s2.c_str());   test_less(*s1.c_str(), sub2);   test_less(sub1, s2);   test_less(s1, sub2);   test_greater(sub2, sub1);   test_greater(sub2, s1.c_str());   test_greater(s2.c_str(), sub1);   test_greater(sub2, *s1.c_str());   test_greater(*s2.c_str(), sub1);   test_greater(sub2, s1);   test_greater(s2, sub1);   test_equal(sub1, sub1);   test_equal(sub1, s1.c_str());   test_equal(s1.c_str(), sub1);   test_equal(sub1, *s1.c_str());   test_equal(*s1.c_str(), sub1);   test_equal(sub1, s1);   test_equal(s1, sub1);   test_plus(sub2, sub1, "ba");   test_plus(sub2, s1.c_str(), "ba");   test_plus(s2.c_str(), sub1, "ba");   test_plus(sub2, *s1.c_str(), "ba");   test_plus(*s2.c_str(), sub1, "ba");   test_plus(sub2, s1, "ba");   test_plus(s2, sub1, "ba");}#else#include <iostream>void test_operators(){   std::cout <<   "\n<note>\n"   "This compiler version does not support the sub_match comparison operators\n"   "tests for these operators are not carried out\n"   "</note>\n";}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?