testGeneratedFileStream.cxx 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*============================================================================
  2. CMake - Cross Platform Makefile Generator
  3. Copyright 2000-2011 Kitware, Inc., Insight Software Consortium
  4. Distributed under the OSI-approved BSD License (the "License");
  5. see accompanying file Copyright.txt for details.
  6. This software is distributed WITHOUT ANY WARRANTY; without even the
  7. implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  8. See the License for more information.
  9. ============================================================================*/
  10. #include "cmGeneratedFileStream.h"
  11. #include "cmSystemTools.h"
  12. #include <iostream>
  13. #include <string>
  14. #define cmFailed(m1, m2) \
  15. std::cout << "FAILED: " << (m1) << (m2) << "\n"; \
  16. failed = 1
  17. int testGeneratedFileStream(int /*unused*/, char* /*unused*/ [])
  18. {
  19. int failed = 0;
  20. cmGeneratedFileStream gm;
  21. std::string file1 = "generatedFile1";
  22. std::string file2 = "generatedFile2";
  23. std::string file3 = "generatedFile3";
  24. std::string file4 = "generatedFile4";
  25. std::string file1tmp = file1 + ".tmp";
  26. std::string file2tmp = file2 + ".tmp";
  27. std::string file3tmp = file3 + ".tmp";
  28. std::string file4tmp = file4 + ".tmp";
  29. gm.Open(file1.c_str());
  30. gm << "This is generated file 1";
  31. gm.Close();
  32. gm.Open(file2.c_str());
  33. gm << "This is generated file 2";
  34. gm.Close();
  35. gm.Open(file3.c_str());
  36. gm << "This is generated file 3";
  37. gm.Close();
  38. gm.Open(file4.c_str());
  39. gm << "This is generated file 4";
  40. gm.Close();
  41. if (cmSystemTools::FileExists(file1.c_str())) {
  42. if (cmSystemTools::FileExists(file2.c_str())) {
  43. if (cmSystemTools::FileExists(file3.c_str())) {
  44. if (cmSystemTools::FileExists(file4.c_str())) {
  45. if (cmSystemTools::FileExists(file1tmp.c_str())) {
  46. cmFailed("Something wrong with cmGeneratedFileStream. Temporary "
  47. "file is still here: ",
  48. file1tmp.c_str());
  49. } else if (cmSystemTools::FileExists(file2tmp.c_str())) {
  50. cmFailed("Something wrong with cmGeneratedFileStream. Temporary "
  51. "file is still here: ",
  52. file2tmp.c_str());
  53. } else if (cmSystemTools::FileExists(file3tmp.c_str())) {
  54. cmFailed("Something wrong with cmGeneratedFileStream. Temporary "
  55. "file is still here: ",
  56. file3tmp.c_str());
  57. } else if (cmSystemTools::FileExists(file4tmp.c_str())) {
  58. cmFailed("Something wrong with cmGeneratedFileStream. Temporary "
  59. "file is still here: ",
  60. file4tmp.c_str());
  61. } else {
  62. std::cout << "cmGeneratedFileStream works\n";
  63. }
  64. } else {
  65. cmFailed(
  66. "Something wrong with cmGeneratedFileStream. Cannot find file: ",
  67. file4.c_str());
  68. }
  69. } else {
  70. cmFailed("Something wrong with cmGeneratedFileStream. Found file: ",
  71. file3.c_str());
  72. }
  73. } else {
  74. cmFailed(
  75. "Something wrong with cmGeneratedFileStream. Cannot find file: ",
  76. file2.c_str());
  77. }
  78. } else {
  79. cmFailed("Something wrong with cmGeneratedFileStream. Cannot find file: ",
  80. file1.c_str());
  81. }
  82. cmSystemTools::RemoveFile(file1);
  83. cmSystemTools::RemoveFile(file2);
  84. cmSystemTools::RemoveFile(file3);
  85. cmSystemTools::RemoveFile(file4);
  86. cmSystemTools::RemoveFile(file1tmp);
  87. cmSystemTools::RemoveFile(file2tmp);
  88. cmSystemTools::RemoveFile(file3tmp);
  89. cmSystemTools::RemoveFile(file4tmp);
  90. return failed;
  91. }