⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmp_exn.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
字号:
/* Boost test/cmp_exn.cpp * test policies with respect to exception throwing * * Copyright 2004 Guillaume Melquiond * * 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/numeric/interval/interval.hpp>#include <boost/numeric/interval/checking.hpp>#include <boost/numeric/interval/compare.hpp>#include <boost/numeric/interval/policies.hpp>#include <boost/numeric/interval/compare/tribool.hpp>#include <boost/test/test_tools.hpp>struct my_checking{  static int nan()          { return -1; }  static bool is_nan(int x) { return x < 0; }  static int empty_lower()  { return -1; }  static int empty_upper()  { return -1; }  static bool is_empty(int l, int u) { return l == -1 && u == -1; }};struct empty_class {};typedef boost::numeric::interval_lib::policies< empty_class, my_checking >  my_policies;typedef boost::numeric::interval<int, my_policies> I;#define BOOST_C_EXN(e) \  BOOST_CHECK_THROW(e, boost::numeric::interval_lib::comparison_error)static void test_cer(){  I const a(I::empty()), b(1,2);  int const c = 0, d = my_checking::nan();  using namespace boost::numeric::interval_lib::compare::certain;  BOOST_C_EXN(a < b);  BOOST_C_EXN(a <= b);  BOOST_C_EXN(a > b);  BOOST_C_EXN(a >= b);  BOOST_C_EXN(a == b);  BOOST_C_EXN(a != b);  BOOST_C_EXN(b < a);  BOOST_C_EXN(b <= a);  BOOST_C_EXN(b > a);  BOOST_C_EXN(b >= a);  BOOST_C_EXN(b == a);  BOOST_C_EXN(b != a);  BOOST_C_EXN(a < c);  BOOST_C_EXN(a <= c);  BOOST_C_EXN(a > c);  BOOST_C_EXN(a >= c);  BOOST_C_EXN(a == c);  BOOST_C_EXN(a != c);  BOOST_C_EXN(b < d);  BOOST_C_EXN(b <= d);  BOOST_C_EXN(b > d);  BOOST_C_EXN(b >= d);  BOOST_C_EXN(b == d);  BOOST_C_EXN(b != d);}static void test_def(){  I const a(I::empty()), b(1,2);  int const c = 0, d = my_checking::nan();  BOOST_C_EXN(a < b);  BOOST_C_EXN(a <= b);  BOOST_C_EXN(a > b);  BOOST_C_EXN(a >= b);  BOOST_C_EXN(a == b);  BOOST_C_EXN(a != b);  BOOST_C_EXN(b < a);  BOOST_C_EXN(b <= a);  BOOST_C_EXN(b > a);  BOOST_C_EXN(b >= a);  BOOST_C_EXN(b == a);  BOOST_C_EXN(b != a);  BOOST_C_EXN(a < c);  BOOST_C_EXN(a <= c);  BOOST_C_EXN(a > c);  BOOST_C_EXN(a >= c);  BOOST_C_EXN(a == c);  BOOST_C_EXN(a != c);  BOOST_C_EXN(b < d);  BOOST_C_EXN(b <= d);  BOOST_C_EXN(b > d);  BOOST_C_EXN(b >= d);  BOOST_C_EXN(b == d);  BOOST_C_EXN(b != d);}static void test_lex(){  I const a(I::empty()), b(1,2);  int const c = 0, d = my_checking::nan();  using namespace boost::numeric::interval_lib::compare::lexicographic;  BOOST_C_EXN(a < b);  BOOST_C_EXN(a <= b);  BOOST_C_EXN(a > b);  BOOST_C_EXN(a >= b);  BOOST_C_EXN(a == b);  BOOST_C_EXN(a != b);  BOOST_C_EXN(b < a);  BOOST_C_EXN(b <= a);  BOOST_C_EXN(b > a);  BOOST_C_EXN(b >= a);  BOOST_C_EXN(b == a);  BOOST_C_EXN(b != a);  BOOST_C_EXN(a < c);  BOOST_C_EXN(a <= c);  BOOST_C_EXN(a > c);  BOOST_C_EXN(a >= c);  BOOST_C_EXN(a == c);  BOOST_C_EXN(a != c);  BOOST_C_EXN(b < d);  BOOST_C_EXN(b <= d);  BOOST_C_EXN(b > d);  BOOST_C_EXN(b >= d);  BOOST_C_EXN(b == d);  BOOST_C_EXN(b != d);}static void test_pos(){  I const a(I::empty()), b(1,2);  int const c = 0, d = my_checking::nan();  using namespace boost::numeric::interval_lib::compare::possible;  BOOST_C_EXN(a < b);  BOOST_C_EXN(a <= b);  BOOST_C_EXN(a > b);  BOOST_C_EXN(a >= b);  BOOST_C_EXN(a == b);  BOOST_C_EXN(a != b);  BOOST_C_EXN(b < a);  BOOST_C_EXN(b <= a);  BOOST_C_EXN(b > a);  BOOST_C_EXN(b >= a);  BOOST_C_EXN(b == a);  BOOST_C_EXN(b != a);  BOOST_C_EXN(a < c);  BOOST_C_EXN(a <= c);  BOOST_C_EXN(a > c);  BOOST_C_EXN(a >= c);  BOOST_C_EXN(a == c);  BOOST_C_EXN(a != c);  BOOST_C_EXN(b < d);  BOOST_C_EXN(b <= d);  BOOST_C_EXN(b > d);  BOOST_C_EXN(b >= d);  BOOST_C_EXN(b == d);  BOOST_C_EXN(b != d);}static void test_set(){  I const a(I::empty()), b(1,2);  int const c = 0;  using namespace boost::numeric::interval_lib::compare::set;  BOOST_C_EXN(a < c);  BOOST_C_EXN(a <= c);  BOOST_C_EXN(a > c);  BOOST_C_EXN(a >= c);  BOOST_C_EXN(a == c);  BOOST_C_EXN(a != c);  BOOST_C_EXN(b < c);  BOOST_C_EXN(b <= c);  BOOST_C_EXN(b > c);  BOOST_C_EXN(b >= c);  BOOST_C_EXN(b == c);  BOOST_C_EXN(b != c);}static void test_tri(){  I const a(I::empty()), b(1,2);  int const c = 0, d = my_checking::nan();  using namespace boost::numeric::interval_lib::compare::tribool;  BOOST_C_EXN(a < b);  BOOST_C_EXN(a <= b);  BOOST_C_EXN(a > b);  BOOST_C_EXN(a >= b);  BOOST_C_EXN(a == b);  BOOST_C_EXN(a != b);  BOOST_C_EXN(b < a);  BOOST_C_EXN(b <= a);  BOOST_C_EXN(b > a);  BOOST_C_EXN(b >= a);  BOOST_C_EXN(b == a);  BOOST_C_EXN(b != a);  BOOST_C_EXN(a < c);  BOOST_C_EXN(a <= c);  BOOST_C_EXN(a > c);  BOOST_C_EXN(a >= c);  BOOST_C_EXN(a == c);  BOOST_C_EXN(a != c);  BOOST_C_EXN(b < d);  BOOST_C_EXN(b <= d);  BOOST_C_EXN(b > d);  BOOST_C_EXN(b >= d);  BOOST_C_EXN(b == d);  BOOST_C_EXN(b != d);}int test_main(int, char *[]) {  test_cer();  test_def();  test_lex();  test_pos();  test_set();  test_tri();  return 0;}

⌨️ 快捷键说明

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