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