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