1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 // UNSUPPORTED: no-localization
10
11 // <complex>
12
13 // template<class T, class charT, class traits>
14 // basic_istream<charT, traits>&
15 // operator>>(basic_istream<charT, traits>& is, complex<T>& x);
16
17 #include <complex>
18 #include <sstream>
19 #include <cassert>
20
21 #include "test_macros.h"
22
main(int,char **)23 int main(int, char**)
24 {
25 {
26 std::istringstream is("5");
27 std::complex<double> c;
28 is >> c;
29 assert(c == std::complex<double>(5, 0));
30 assert(is.eof());
31 }
32 {
33 std::istringstream is(" 5 ");
34 std::complex<double> c;
35 is >> c;
36 assert(c == std::complex<double>(5, 0));
37 assert(is.good());
38 }
39 {
40 std::istringstream is(" 5, ");
41 std::complex<double> c;
42 is >> c;
43 assert(c == std::complex<double>(5, 0));
44 assert(is.good());
45 }
46 {
47 std::istringstream is(" , 5, ");
48 std::complex<double> c;
49 is >> c;
50 assert(c == std::complex<double>(0, 0));
51 assert(is.fail());
52 }
53 {
54 std::istringstream is("5.5 ");
55 std::complex<double> c;
56 is >> c;
57 assert(c == std::complex<double>(5.5, 0));
58 assert(is.good());
59 }
60 {
61 std::istringstream is(" ( 5.5 ) ");
62 std::complex<double> c;
63 is >> c;
64 assert(c == std::complex<double>(5.5, 0));
65 assert(is.good());
66 }
67 {
68 std::istringstream is(" 5.5)");
69 std::complex<double> c;
70 is >> c;
71 assert(c == std::complex<double>(5.5, 0));
72 assert(is.good());
73 }
74 {
75 std::istringstream is("(5.5 ");
76 std::complex<double> c;
77 is >> c;
78 assert(c == std::complex<double>(0, 0));
79 assert(is.fail());
80 }
81 {
82 std::istringstream is("(5.5,");
83 std::complex<double> c;
84 is >> c;
85 assert(c == std::complex<double>(0, 0));
86 assert(is.fail());
87 }
88 {
89 std::istringstream is("( -5.5 , -6.5 )");
90 std::complex<double> c;
91 is >> c;
92 assert(c == std::complex<double>(-5.5, -6.5));
93 assert(!is.eof());
94 }
95 {
96 std::istringstream is("(-5.5,-6.5)");
97 std::complex<double> c;
98 is >> c;
99 assert(c == std::complex<double>(-5.5, -6.5));
100 assert(!is.eof());
101 }
102
103 return 0;
104 }
105