testIOS.cxx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. #include "kwsysPrivate.h"
  2. #include KWSYS_HEADER(stl/vector)
  3. #include KWSYS_HEADER(ios/sstream)
  4. #include KWSYS_HEADER(ios/iostream)
  5. // Work-around CMake dependency scanning limitation. This must
  6. // duplicate the above list of headers.
  7. #if 0
  8. # include "kwsys_stl_string.hxx.in"
  9. # include "kwsys_stl_vector.h.in"
  10. # include "kwsys_ios_sstream.h.in"
  11. # include "kwsys_ios_iostream.h.in"
  12. #endif
  13. int testIOS(int, char*[])
  14. {
  15. kwsys_ios::ostringstream ostr;
  16. const char hello[] = "hello";
  17. ostr << hello;
  18. if(ostr.str() != hello)
  19. {
  20. kwsys_ios::cerr << "failed to write hello to ostr" << kwsys_ios::endl;
  21. return 1;
  22. }
  23. const char world[] = "world";
  24. kwsys_ios::ostringstream ostr2;
  25. ostr2.write( hello, strlen(hello) );
  26. ostr2.put( '\0' );
  27. ostr2.write( world, strlen(world) );
  28. if(ostr2.str().size() != strlen(hello) + 1 + strlen(world) )
  29. {
  30. kwsys_ios::cerr << "failed to write hello to ostr2" << kwsys_ios::endl;
  31. return 1;
  32. }
  33. kwsys_ios::istringstream istr(" 10 20 str ");
  34. kwsys_stl::string s;
  35. int x;
  36. if(istr >> x)
  37. {
  38. if(x != 10)
  39. {
  40. kwsys_ios::cerr << "x != 10" << kwsys_ios::endl;
  41. return 1;
  42. }
  43. }
  44. else
  45. {
  46. kwsys_ios::cerr << "Failed to read 10 from istr" << kwsys_ios::endl;
  47. return 1;
  48. }
  49. if(istr >> x)
  50. {
  51. if(x != 20)
  52. {
  53. kwsys_ios::cerr << "x != 20" << kwsys_ios::endl;
  54. return 1;
  55. }
  56. }
  57. else
  58. {
  59. kwsys_ios::cerr << "Failed to read 20 from istr" << kwsys_ios::endl;
  60. return 1;
  61. }
  62. if(istr >> s)
  63. {
  64. if(s != "str")
  65. {
  66. kwsys_ios::cerr << "s != \"str\"" << kwsys_ios::endl;
  67. return 1;
  68. }
  69. }
  70. else
  71. {
  72. kwsys_ios::cerr << "Failed to read str from istr" << kwsys_ios::endl;
  73. return 1;
  74. }
  75. if(istr >> s)
  76. {
  77. kwsys_ios::cerr << "Able to read past end of stream" << kwsys_ios::endl;
  78. return 1;
  79. }
  80. else
  81. {
  82. // Clear the failure.
  83. istr.clear(istr.rdstate() & ~kwsys_ios::ios::eofbit);
  84. istr.clear(istr.rdstate() & ~kwsys_ios::ios::failbit);
  85. }
  86. istr.str("30");
  87. if(istr >> x)
  88. {
  89. if(x != 30)
  90. {
  91. kwsys_ios::cerr << "x != 30" << kwsys_ios::endl;
  92. return 1;
  93. }
  94. }
  95. else
  96. {
  97. kwsys_ios::cerr << "Failed to read 30 from istr" << kwsys_ios::endl;
  98. return 1;
  99. }
  100. kwsys_ios::stringstream sstr;
  101. sstr << "40 str2";
  102. if(sstr >> x)
  103. {
  104. if(x != 40)
  105. {
  106. kwsys_ios::cerr << "x != 40" << kwsys_ios::endl;
  107. return 1;
  108. }
  109. }
  110. else
  111. {
  112. kwsys_ios::cerr << "Failed to read 40 from sstr" << kwsys_ios::endl;
  113. return 1;
  114. }
  115. if(sstr >> s)
  116. {
  117. if(s != "str2")
  118. {
  119. kwsys_ios::cerr << "s != \"str2\"" << kwsys_ios::endl;
  120. return 1;
  121. }
  122. }
  123. else
  124. {
  125. kwsys_ios::cerr << "Failed to read str2 from sstr" << kwsys_ios::endl;
  126. return 1;
  127. }
  128. kwsys_ios::cout << "IOS tests passed" << kwsys_ios::endl;
  129. return 0;
  130. }