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 // <complex>
11
12 // template<class T, class charT, class traits>
13 // basic_istream<charT, traits>&
14 // operator>>(basic_istream<charT, traits>& is, complex<T>& x);
15
16 #include <complex>
17 #include <sstream>
18 #include <cassert>
19
main()20 int main()
21 {
22 {
23 std::istringstream is("5");
24 std::complex<double> c;
25 is >> c;
26 assert(c == std::complex<double>(5, 0));
27 assert(is.eof());
28 }
29 {
30 std::istringstream is(" 5 ");
31 std::complex<double> c;
32 is >> c;
33 assert(c == std::complex<double>(5, 0));
34 assert(is.good());
35 }
36 {
37 std::istringstream is(" 5, ");
38 std::complex<double> c;
39 is >> c;
40 assert(c == std::complex<double>(5, 0));
41 assert(is.good());
42 }
43 {
44 std::istringstream is(" , 5, ");
45 std::complex<double> c;
46 is >> c;
47 assert(c == std::complex<double>(0, 0));
48 assert(is.fail());
49 }
50 {
51 std::istringstream is("5.5 ");
52 std::complex<double> c;
53 is >> c;
54 assert(c == std::complex<double>(5.5, 0));
55 assert(is.good());
56 }
57 {
58 std::istringstream is(" ( 5.5 ) ");
59 std::complex<double> c;
60 is >> c;
61 assert(c == std::complex<double>(5.5, 0));
62 assert(is.good());
63 }
64 {
65 std::istringstream is(" 5.5)");
66 std::complex<double> c;
67 is >> c;
68 assert(c == std::complex<double>(5.5, 0));
69 assert(is.good());
70 }
71 {
72 std::istringstream is("(5.5 ");
73 std::complex<double> c;
74 is >> c;
75 assert(c == std::complex<double>(0, 0));
76 assert(is.fail());
77 }
78 {
79 std::istringstream is("(5.5,");
80 std::complex<double> c;
81 is >> c;
82 assert(c == std::complex<double>(0, 0));
83 assert(is.fail());
84 }
85 {
86 std::istringstream is("( -5.5 , -6.5 )");
87 std::complex<double> c;
88 is >> c;
89 assert(c == std::complex<double>(-5.5, -6.5));
90 assert(!is.eof());
91 }
92 {
93 std::istringstream is("(-5.5,-6.5)");
94 std::complex<double> c;
95 is >> c;
96 assert(c == std::complex<double>(-5.5, -6.5));
97 assert(!is.eof());
98 }
99 }
100