File: test_trailing_io_delim.cpp

package info (click to toggle)
boost1.90 1.90.0-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 593,120 kB
  • sloc: cpp: 4,190,908; xml: 196,648; python: 34,618; ansic: 23,145; asm: 5,468; sh: 3,774; makefile: 1,161; perl: 1,020; sql: 728; ruby: 676; yacc: 478; java: 77; lisp: 24; csh: 6
file content (131 lines) | stat: -rw-r--r-- 3,121 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
///////////////////////////////////////////////////////////////
//  Copyright 2022 John Maddock. 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).

#ifdef TEST_CPP_INT
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/multiprecision/cpp_bin_float.hpp>
#include <boost/multiprecision/cpp_complex.hpp>
#endif
#ifdef TEST_GMP
#include <boost/multiprecision/gmp.hpp>
#endif
#ifdef TEST_TOMMATH
#include <boost/multiprecision/tommath.hpp>
#endif
#ifdef TEST_FLOAT128
#include <boost/multiprecision/float128.hpp>
#include <boost/multiprecision/complex128.hpp>
#endif
#ifdef TEST_MPC
#include <boost/multiprecision/mpc.hpp>
#endif
#ifdef TEST_MPFI
#include <boost/multiprecision/mpfi.hpp>
#endif

#include <sstream>
#include "test.hpp"

template <class T>
void test_integer()
{
   std::istringstream iss("123#");
   T                  val;
   iss >> val;
   BOOST_CHECK_EQUAL(val, 123);
}

template <class T>
void test_rational()
{
   {
      std::istringstream iss("123#");
      T                  val;
      iss >> val;
      BOOST_CHECK_EQUAL(val, 123);
   }
   {
      std::istringstream iss("123/23#");
      T                  val;
      iss >> val;
      BOOST_CHECK_EQUAL(val, T(123, 23));
   }
}

template <class T>
void test_float()
{
   std::istringstream iss("123.0#");
   T                  val;
   iss >> val;
   BOOST_CHECK_EQUAL(val, 123.0);
}

template <class T>
void test_complex()
{
   {
      std::istringstream iss("123.0#");
      T                  val;
      iss >> val;
      BOOST_CHECK_EQUAL(val, 123.0);
   }
   {
      std::istringstream iss("(123.0,23.0)#");
      T                  val;
      iss >> val;
      BOOST_CHECK_EQUAL(val, T(123.0, 23.0));
   }
}

template <class T>
void test_interval()
{
   {
      std::istringstream iss("123.0#");
      T                  val;
      iss >> val;
      BOOST_CHECK_EQUAL(val, 123.0);
   }
   {
      std::istringstream iss("{123.0,124.0}#");
      T                  val;
      iss >> val;
      std::cout << val << std::endl;
      BOOST_CHECK_EQUAL(val, T(123.0, 124.0));
   }
}


int main()
{
#ifdef TEST_CPP_INT
   test_integer<boost::multiprecision::cpp_int>();
   test_rational<boost::multiprecision::cpp_rational>();
   test_float<boost::multiprecision::cpp_bin_float_50>();
   test_complex<boost::multiprecision::cpp_complex_50>();
#endif
#ifdef TEST_GMP
   test_integer<boost::multiprecision::mpz_int>();
   test_rational<boost::multiprecision::mpq_rational>();
   test_float<boost::multiprecision::mpf_float_50>();
#endif
#ifdef TEST_TOMMATH
   test_integer<boost::multiprecision::tom_int>();
   test_rational<boost::multiprecision::tom_rational>();
#endif
#ifdef TEST_FLOAT128
   test_float<boost::multiprecision::float128>();
   test_complex<boost::multiprecision::complex128>();
#endif
#ifdef TEST_MPC
   test_float<boost::multiprecision::mpfr_float_50>();
   test_complex<boost::multiprecision::mpc_complex_50>();
#endif
#ifdef TEST_MPFI
   test_interval<boost::multiprecision::mpfi_float_50>();
#endif
   return 0;
}