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