• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===----------------------------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 // XFAIL: with_system_cxx_lib=macosx10.7
11 
12 // <complex>
13 
14 // template<class T, class charT, class traits>
15 //   basic_istream<charT, traits>&
16 //   operator>>(basic_istream<charT, traits>& is, complex<T>& x);
17 
18 #include <complex>
19 #include <sstream>
20 #include <cassert>
21 
main()22 int main()
23 {
24     {
25         std::istringstream is("5");
26         std::complex<double> c;
27         is >> c;
28         assert(c == std::complex<double>(5, 0));
29         assert(is.eof());
30     }
31     {
32         std::istringstream is(" 5 ");
33         std::complex<double> c;
34         is >> c;
35         assert(c == std::complex<double>(5, 0));
36         assert(is.good());
37     }
38     {
39         std::istringstream is(" 5, ");
40         std::complex<double> c;
41         is >> c;
42         assert(c == std::complex<double>(5, 0));
43         assert(is.good());
44     }
45     {
46         std::istringstream is(" , 5, ");
47         std::complex<double> c;
48         is >> c;
49         assert(c == std::complex<double>(0, 0));
50         assert(is.fail());
51     }
52     {
53         std::istringstream is("5.5 ");
54         std::complex<double> c;
55         is >> c;
56         assert(c == std::complex<double>(5.5, 0));
57         assert(is.good());
58     }
59     {
60         std::istringstream is(" ( 5.5 ) ");
61         std::complex<double> c;
62         is >> c;
63         assert(c == std::complex<double>(5.5, 0));
64         assert(is.good());
65     }
66     {
67         std::istringstream is("  5.5)");
68         std::complex<double> c;
69         is >> c;
70         assert(c == std::complex<double>(5.5, 0));
71         assert(is.good());
72     }
73     {
74         std::istringstream is("(5.5 ");
75         std::complex<double> c;
76         is >> c;
77         assert(c == std::complex<double>(0, 0));
78         assert(is.fail());
79     }
80     {
81         std::istringstream is("(5.5,");
82         std::complex<double> c;
83         is >> c;
84         assert(c == std::complex<double>(0, 0));
85         assert(is.fail());
86     }
87     {
88         std::istringstream is("( -5.5 , -6.5 )");
89         std::complex<double> c;
90         is >> c;
91         assert(c == std::complex<double>(-5.5, -6.5));
92         assert(!is.eof());
93     }
94     {
95         std::istringstream is("(-5.5,-6.5)");
96         std::complex<double> c;
97         is >> c;
98         assert(c == std::complex<double>(-5.5, -6.5));
99         assert(!is.eof());
100     }
101 }
102