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 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