105 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: no-localization10 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 23int 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