1
0

complex.cxx 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. #include "cmTestConfigure.h"
  2. #include "cmTestConfigureEscape.h"
  3. #include "cmTestGeneratedHeader.h"
  4. #include "cmVersion.h"
  5. #include "ExtraSources/file1.h"
  6. #include "file2.h"
  7. #include "sharedFile.h"
  8. extern "C" {
  9. #include "testConly.h"
  10. }
  11. #include "cmStandardIncludes.h"
  12. #include "cmSystemTools.h"
  13. int cm_passed = 0;
  14. int cm_failed = 0;
  15. // Here is a stupid function that tries to use std::string methods
  16. // so that the dec cxx compiler will instantiate the stuff that
  17. // we are using from the CMakeLib library....
  18. void ForceStringUse()
  19. {
  20. std::vector<std::string> v;
  21. std::vector<std::string> v2;
  22. v = v2;
  23. std::string cachetest = CACHE_TEST_VAR_INTERNAL;
  24. v.push_back(cachetest);
  25. v2 = v;
  26. std::string x(5,'x');
  27. char buff[5];
  28. x.copy(buff, 1, 0);
  29. x[0] = 'a';
  30. std::string::size_type pos = 0;
  31. x.replace(pos, pos, pos, 'x');
  32. std::string copy = cachetest;
  33. cachetest.find("bar");
  34. cachetest.rfind("bar");
  35. copy.append(cachetest);
  36. copy = cachetest.substr(0, cachetest.size());
  37. }
  38. // ======================================================================
  39. void cmFailed(const char* Message, const char* m2= "")
  40. {
  41. std::cout << "FAILED: " << Message << m2 << "\n";
  42. cm_failed++;
  43. }
  44. // ======================================================================
  45. void cmPassed(const char* Message, const char* m2="")
  46. {
  47. std::cout << "Passed: " << Message << m2 << "\n";
  48. cm_passed++;
  49. }
  50. // ======================================================================
  51. void TestAndRemoveFile(const char* filename)
  52. {
  53. if (!cmSystemTools::FileExists(filename))
  54. {
  55. cmFailed("Could not find file: ", filename);
  56. }
  57. else
  58. {
  59. if (!cmSystemTools::RemoveFile(filename))
  60. {
  61. cmFailed("Unable to remove file. It does not imply that this test failed, but it *will* be corrupted thereafter if this file is not removed: ", filename);
  62. }
  63. else
  64. {
  65. cmPassed("Find and remove file: ", filename);
  66. }
  67. }
  68. }
  69. // ======================================================================
  70. void TestDir(const char* filename)
  71. {
  72. if (!cmSystemTools::FileExists(filename))
  73. {
  74. cmFailed("Could not find dir: ", filename);
  75. }
  76. else
  77. {
  78. if (!cmSystemTools::FileIsDirectory(filename))
  79. {
  80. cmFailed("Unable to check if file is a directory: ", filename);
  81. }
  82. else
  83. {
  84. cmPassed("Find dir: ", filename);
  85. }
  86. }
  87. }
  88. // ======================================================================
  89. int main()
  90. {
  91. if(sharedFunction() != 1)
  92. {
  93. cmFailed("Call to sharedFunction from shared library failed.");
  94. }
  95. else
  96. {
  97. cmPassed("Call to sharedFunction from shared library worked.");
  98. }
  99. if(CsharedFunction() != 1)
  100. {
  101. cmFailed("Call to C sharedFunction from shared library failed.");
  102. }
  103. else
  104. {
  105. cmPassed("Call to C sharedFunction from shared library worked.");
  106. }
  107. if(file1() != 1)
  108. {
  109. cmFailed("Call to file1 function from library failed.");
  110. }
  111. else
  112. {
  113. cmPassed("Call to file1 function returned 1.");
  114. }
  115. if(file2() != 1)
  116. {
  117. cmFailed("Call to file2 function from library failed.");
  118. }
  119. else
  120. {
  121. cmPassed("Call to file2 function returned 1.");
  122. }
  123. #ifndef TEST_CXX_FLAGS
  124. cmFailed("CMake CMAKE_CXX_FLAGS is not being passed to the compiler!");
  125. #else
  126. cmPassed("CMake CMAKE_CXX_FLAGS is being passed to the compiler.");
  127. #endif
  128. // ----------------------------------------------------------------------
  129. // Test ADD_DEFINITIONS
  130. #ifndef CMAKE_IS_FUN
  131. cmFailed("CMake is not fun, so it is broken and should be fixed.");
  132. #else
  133. cmPassed("CMAKE_IS_FUN is defined.");
  134. #endif
  135. // ----------------------------------------------------------------------
  136. // Test SET, VARIABLE_REQUIRES
  137. #ifdef SHOULD_NOT_BE_DEFINED
  138. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED is defined.");
  139. #else
  140. cmPassed("SHOULD_NOT_BE_DEFINED is not defined.");
  141. #endif
  142. #ifndef SHOULD_BE_DEFINED
  143. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED is not defined.\n");
  144. #else
  145. cmPassed("SHOULD_BE_DEFINED is defined.");
  146. #endif
  147. #ifndef ONE_VAR
  148. cmFailed("cmakedefine is broken, ONE_VAR is not defined.");
  149. #else
  150. cmPassed("ONE_VAR is defined.");
  151. #endif
  152. #ifndef ONE_VAR_IS_DEFINED
  153. cmFailed("cmakedefine, SET or VARIABLE_REQUIRES is broken, "
  154. "ONE_VAR_IS_DEFINED is not defined.");
  155. #else
  156. cmPassed("ONE_VAR_IS_DEFINED is defined.");
  157. #endif
  158. #ifdef ZERO_VAR
  159. cmFailed("cmakedefine is broken, ZERO_VAR is defined.");
  160. #else
  161. cmPassed("ZERO_VAR is not defined.");
  162. #endif
  163. #ifndef STRING_VAR
  164. cmFailed("the CONFIGURE_FILE command is broken, STRING_VAR is not defined.");
  165. #else
  166. if(strcmp(STRING_VAR, "CMake is great") != 0)
  167. {
  168. cmFailed("the SET or CONFIGURE_FILE command is broken. STRING_VAR == ",
  169. STRING_VAR);
  170. }
  171. else
  172. {
  173. cmPassed("STRING_VAR == ", STRING_VAR);
  174. }
  175. #endif
  176. // ----------------------------------------------------------------------
  177. // Test various IF/ELSE combinations
  178. #ifdef SHOULD_NOT_BE_DEFINED_NOT
  179. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT is defined.");
  180. #else
  181. cmPassed("SHOULD_NOT_BE_DEFINED_NOT is not defined.");
  182. #endif
  183. #ifndef SHOULD_BE_DEFINED_NOT
  184. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT is not defined.\n");
  185. #else
  186. cmPassed("SHOULD_BE_DEFINED_NOT is defined.");
  187. #endif
  188. #ifdef SHOULD_NOT_BE_DEFINED_NOT2
  189. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT2 is defined.");
  190. #else
  191. cmPassed("SHOULD_NOT_BE_DEFINED_NOT2 is not defined.");
  192. #endif
  193. #ifndef SHOULD_BE_DEFINED_NOT2
  194. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT2 is not defined.\n");
  195. #else
  196. cmPassed("SHOULD_BE_DEFINED_NOT2 is defined.");
  197. #endif
  198. #ifdef SHOULD_NOT_BE_DEFINED_AND
  199. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND is defined.");
  200. #else
  201. cmPassed("SHOULD_NOT_BE_DEFINED_AND is not defined.");
  202. #endif
  203. #ifndef SHOULD_BE_DEFINED_AND
  204. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_AND is not defined.\n");
  205. #else
  206. cmPassed("SHOULD_BE_DEFINED_AND is defined.");
  207. #endif
  208. #ifdef SHOULD_NOT_BE_DEFINED_AND2
  209. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND2 is defined.");
  210. #else
  211. cmPassed("SHOULD_NOT_BE_DEFINED_AND2 is not defined.");
  212. #endif
  213. #ifndef SHOULD_BE_DEFINED_AND2
  214. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_AND2 is not defined.\n");
  215. #else
  216. cmPassed("SHOULD_BE_DEFINED_AND2 is defined.");
  217. #endif
  218. #ifdef SHOULD_NOT_BE_DEFINED_OR
  219. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR is defined.");
  220. #else
  221. cmPassed("SHOULD_NOT_BE_DEFINED_OR is not defined.");
  222. #endif
  223. #ifndef SHOULD_BE_DEFINED_OR
  224. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_OR is not defined.\n");
  225. #else
  226. cmPassed("SHOULD_BE_DEFINED_OR is defined.");
  227. #endif
  228. #ifdef SHOULD_NOT_BE_DEFINED_OR2
  229. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR2 is defined.");
  230. #else
  231. cmPassed("SHOULD_NOT_BE_DEFINED_OR2 is not defined.");
  232. #endif
  233. #ifndef SHOULD_BE_DEFINED_OR2
  234. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_OR2 is not defined.\n");
  235. #else
  236. cmPassed("SHOULD_BE_DEFINED_OR2 is defined.");
  237. #endif
  238. #ifdef SHOULD_NOT_BE_DEFINED_MATCHES
  239. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES is defined.");
  240. #else
  241. cmPassed("SHOULD_NOT_BE_DEFINED_MATCHES is not defined.");
  242. #endif
  243. #ifndef SHOULD_BE_DEFINED_MATCHES
  244. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_MATCHES is not defined.\n");
  245. #else
  246. cmPassed("SHOULD_BE_DEFINED_MATCHES is defined.");
  247. #endif
  248. #ifdef SHOULD_NOT_BE_DEFINED_MATCHES2
  249. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES2 is defined.");
  250. #else
  251. cmPassed("SHOULD_NOT_BE_DEFINED_MATCHES2 is not defined.");
  252. #endif
  253. #ifndef SHOULD_BE_DEFINED_MATCHES2
  254. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_MATCHES2 is not defined.\n");
  255. #else
  256. cmPassed("SHOULD_BE_DEFINED_MATCHES2 is defined.");
  257. #endif
  258. #ifdef SHOULD_NOT_BE_DEFINED_COMMAND
  259. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND is defined.");
  260. #else
  261. cmPassed("SHOULD_NOT_BE_DEFINED_COMMAND is not defined.");
  262. #endif
  263. #ifndef SHOULD_BE_DEFINED_COMMAND
  264. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_COMMAND is not defined.\n");
  265. #else
  266. cmPassed("SHOULD_BE_DEFINED_COMMAND is defined.");
  267. #endif
  268. #ifdef SHOULD_NOT_BE_DEFINED_COMMAND2
  269. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND2 is defined.");
  270. #else
  271. cmPassed("SHOULD_NOT_BE_DEFINED_COMMAND2 is not defined.");
  272. #endif
  273. #ifndef SHOULD_BE_DEFINED_COMMAND2
  274. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_COMMAND2 is not defined.\n");
  275. #else
  276. cmPassed("SHOULD_BE_DEFINED_COMMAND2 is defined.");
  277. #endif
  278. #ifdef SHOULD_NOT_BE_DEFINED_EXISTS
  279. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_EXISTS is defined.");
  280. #else
  281. cmPassed("SHOULD_NOT_BE_DEFINED_EXISTS is not defined.");
  282. #endif
  283. #ifndef SHOULD_BE_DEFINED_EXISTS
  284. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_EXISTS is not defined.\n");
  285. #else
  286. cmPassed("SHOULD_BE_DEFINED_EXISTS is defined.");
  287. #endif
  288. #ifdef SHOULD_NOT_BE_DEFINED_EXISTS2
  289. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_EXISTS2 is defined.");
  290. #else
  291. cmPassed("SHOULD_NOT_BE_DEFINED_EXISTS2 is not defined.");
  292. #endif
  293. #ifndef SHOULD_BE_DEFINED_EXISTS2
  294. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_EXISTS2 is not defined.\n");
  295. #else
  296. cmPassed("SHOULD_BE_DEFINED_EXISTS2 is defined.");
  297. #endif
  298. #ifdef SHOULD_NOT_BE_DEFINED_LESS
  299. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_LESS is defined.");
  300. #else
  301. cmPassed("SHOULD_NOT_BE_DEFINED_LESS is not defined.");
  302. #endif
  303. #ifndef SHOULD_BE_DEFINED_LESS
  304. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_LESS is not defined.\n");
  305. #else
  306. cmPassed("SHOULD_BE_DEFINED_LESS is defined.");
  307. #endif
  308. #ifdef SHOULD_NOT_BE_DEFINED_LESS2
  309. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_LESS2 is defined.");
  310. #else
  311. cmPassed("SHOULD_NOT_BE_DEFINED_LESS2 is not defined.");
  312. #endif
  313. #ifndef SHOULD_BE_DEFINED_LESS2
  314. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_LESS2 is not defined.\n");
  315. #else
  316. cmPassed("SHOULD_BE_DEFINED_LESS2 is defined.");
  317. #endif
  318. #ifdef SHOULD_NOT_BE_DEFINED_GREATER
  319. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_GREATER is defined.");
  320. #else
  321. cmPassed("SHOULD_NOT_BE_DEFINED_GREATER is not defined.");
  322. #endif
  323. #ifndef SHOULD_BE_DEFINED_GREATER
  324. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_GREATER is not defined.\n");
  325. #else
  326. cmPassed("SHOULD_BE_DEFINED_GREATER is defined.");
  327. #endif
  328. #ifdef SHOULD_NOT_BE_DEFINED_GREATER2
  329. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_GREATER2 is defined.");
  330. #else
  331. cmPassed("SHOULD_NOT_BE_DEFINED_GREATER2 is not defined.");
  332. #endif
  333. #ifndef SHOULD_BE_DEFINED_GREATER2
  334. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_GREATER2 is not defined.\n");
  335. #else
  336. cmPassed("SHOULD_BE_DEFINED_GREATER2 is defined.");
  337. #endif
  338. #ifdef SHOULD_NOT_BE_DEFINED_STRLESS
  339. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRLESS is defined.");
  340. #else
  341. cmPassed("SHOULD_NOT_BE_DEFINED_STRLESS is not defined.");
  342. #endif
  343. #ifndef SHOULD_BE_DEFINED_STRLESS
  344. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_STRLESS is not defined.\n");
  345. #else
  346. cmPassed("SHOULD_BE_DEFINED_STRLESS is defined.");
  347. #endif
  348. #ifdef SHOULD_NOT_BE_DEFINED_STRLESS2
  349. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRLESS2 is defined.");
  350. #else
  351. cmPassed("SHOULD_NOT_BE_DEFINED_STRLESS2 is not defined.");
  352. #endif
  353. #ifndef SHOULD_BE_DEFINED_STRLESS2
  354. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_STRLESS2 is not defined.\n");
  355. #else
  356. cmPassed("SHOULD_BE_DEFINED_STRLESS2 is defined.");
  357. #endif
  358. #ifdef SHOULD_NOT_BE_DEFINED_STRGREATER
  359. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRGREATER is defined.");
  360. #else
  361. cmPassed("SHOULD_NOT_BE_DEFINED_STRGREATER is not defined.");
  362. #endif
  363. #ifndef SHOULD_BE_DEFINED_STRGREATER
  364. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_STRGREATER is not defined.\n");
  365. #else
  366. cmPassed("SHOULD_BE_DEFINED_STRGREATER is defined.");
  367. #endif
  368. #ifdef SHOULD_NOT_BE_DEFINED_STRGREATER2
  369. cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRGREATER2 is defined.");
  370. #else
  371. cmPassed("SHOULD_NOT_BE_DEFINED_STRGREATER2 is not defined.");
  372. #endif
  373. #ifndef SHOULD_BE_DEFINED_STRGREATER2
  374. cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_STRGREATER2 is not defined.\n");
  375. #else
  376. cmPassed("SHOULD_BE_DEFINED_STRGREATER2 is defined.");
  377. #endif
  378. // ----------------------------------------------------------------------
  379. // Test FOREACH
  380. #ifndef FOREACH_VAR1
  381. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  382. "FOREACH_VAR1 is not defined.");
  383. #else
  384. if(strcmp(FOREACH_VAR1, "VALUE1") != 0)
  385. {
  386. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  387. "FOREACH_VAR1 == ", FOREACH_VAR1);
  388. }
  389. else
  390. {
  391. cmPassed("FOREACH_VAR1 == ", FOREACH_VAR1);
  392. }
  393. #endif
  394. #ifndef FOREACH_VAR2
  395. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  396. "FOREACH_VAR2 is not defined.");
  397. #else
  398. if(strcmp(FOREACH_VAR2, "VALUE2") != 0)
  399. {
  400. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  401. "FOREACH_VAR2 == ", FOREACH_VAR2);
  402. }
  403. else
  404. {
  405. cmPassed("FOREACH_VAR2 == ", FOREACH_VAR2);
  406. }
  407. #endif
  408. #ifndef FOREACH_CONCAT
  409. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  410. "FOREACH_CONCAT is not defined.");
  411. #else
  412. if(strcmp(FOREACH_CONCAT, "abcdefg") != 0)
  413. {
  414. cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
  415. "FOREACH_CONCAT == ", FOREACH_CONCAT);
  416. }
  417. else
  418. {
  419. cmPassed("FOREACH_CONCAT == ", FOREACH_CONCAT);
  420. }
  421. #endif
  422. // ----------------------------------------------------------------------
  423. // Test FIND_FILE, FIND_PATH and various GET_FILENAME_COMPONENT combinations
  424. #ifndef FILENAME_VAR_PATH_NAME
  425. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  426. "FILENAME_VAR_PATH_NAME is not defined.");
  427. #else
  428. if(strcmp(FILENAME_VAR_PATH_NAME, "Complex") != 0)
  429. {
  430. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  431. "FILENAME_VAR_PATH_NAME == ", FILENAME_VAR_PATH_NAME);
  432. }
  433. else
  434. {
  435. cmPassed("FILENAME_VAR_PATH_NAME == ", FILENAME_VAR_PATH_NAME);
  436. }
  437. #endif
  438. #ifndef FILENAME_VAR_NAME
  439. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  440. "FILENAME_VAR_NAME is not defined.");
  441. #else
  442. if(strcmp(FILENAME_VAR_NAME, "VarTests.cmake") != 0)
  443. {
  444. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  445. "FILENAME_VAR_NAME == ", FILENAME_VAR_NAME);
  446. }
  447. else
  448. {
  449. cmPassed("FILENAME_VAR_NAME == ", FILENAME_VAR_NAME);
  450. }
  451. #endif
  452. #ifndef FILENAME_VAR_EXT
  453. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  454. "FILENAME_VAR_EXT is not defined.");
  455. #else
  456. if(strcmp(FILENAME_VAR_EXT, ".cmake") != 0)
  457. {
  458. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  459. "FILENAME_VAR_EXT == ", FILENAME_VAR_EXT);
  460. }
  461. else
  462. {
  463. cmPassed("FILENAME_VAR_EXT == ", FILENAME_VAR_EXT);
  464. }
  465. #endif
  466. #ifndef FILENAME_VAR_NAME_WE
  467. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  468. "FILENAME_VAR_NAME_WE is not defined.");
  469. #else
  470. if(strcmp(FILENAME_VAR_NAME_WE, "VarTests") != 0)
  471. {
  472. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  473. "FILENAME_VAR_NAME_WE == ", FILENAME_VAR_NAME_WE);
  474. }
  475. else
  476. {
  477. cmPassed("FILENAME_VAR_NAME_WE == ", FILENAME_VAR_NAME_WE);
  478. }
  479. #endif
  480. #ifndef PATH_VAR_NAME
  481. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  482. "PATH_VAR_NAME is not defined.");
  483. #else
  484. if(strcmp(PATH_VAR_NAME, "Complex") != 0)
  485. {
  486. cmFailed("the FIND_FILE or GET_FILENAME_COMPONENT command is broken, "
  487. "PATH_VAR_NAME == ", PATH_VAR_NAME);
  488. }
  489. else
  490. {
  491. cmPassed("PATH_VAR_NAME == ", PATH_VAR_NAME);
  492. }
  493. #endif
  494. // ----------------------------------------------------------------------
  495. // Test LOAD_CACHE
  496. #ifndef CACHE_TEST_VAR1
  497. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  498. "CACHE_TEST_VAR1 is not defined.");
  499. #else
  500. if(strcmp(CACHE_TEST_VAR1, "foo") != 0)
  501. {
  502. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  503. "CACHE_TEST_VAR1 == ", CACHE_TEST_VAR1);
  504. }
  505. else
  506. {
  507. cmPassed("CACHE_TEST_VAR1 == ", CACHE_TEST_VAR1);
  508. }
  509. #endif
  510. #ifndef CACHE_TEST_VAR2
  511. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  512. "CACHE_TEST_VAR2 is not defined.");
  513. #else
  514. if(strcmp(CACHE_TEST_VAR2, "bar") != 0)
  515. {
  516. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  517. "CACHE_TEST_VAR2 == ", CACHE_TEST_VAR2);
  518. }
  519. else
  520. {
  521. cmPassed("CACHE_TEST_VAR2 == ", CACHE_TEST_VAR2);
  522. }
  523. #endif
  524. #ifndef CACHE_TEST_VAR3
  525. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  526. "CACHE_TEST_VAR3 is not defined.");
  527. #else
  528. if(strcmp(CACHE_TEST_VAR3, "1") != 0)
  529. {
  530. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  531. "CACHE_TEST_VAR3 == ", CACHE_TEST_VAR3);
  532. }
  533. else
  534. {
  535. cmPassed("CACHE_TEST_VAR3 == ", CACHE_TEST_VAR3);
  536. }
  537. #endif
  538. #ifdef CACHE_TEST_VAR_EXCLUDED
  539. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command or cmakedefine is broken, "
  540. "CACHE_TEST_VAR_EXCLUDED is defined (should not have been loaded).");
  541. #else
  542. cmPassed("CACHE_TEST_VAR_EXCLUDED is not defined.");
  543. #endif
  544. #ifndef CACHE_TEST_VAR_INTERNAL
  545. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  546. "CACHE_TEST_VAR_INTERNAL is not defined.");
  547. #else
  548. std::string cachetest = CACHE_TEST_VAR_INTERNAL;
  549. if(cachetest != "bar")
  550. {
  551. cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
  552. "CACHE_TEST_VAR_INTERNAL == ", CACHE_TEST_VAR_INTERNAL);
  553. }
  554. else
  555. {
  556. cmPassed("CACHE_TEST_VAR_INTERNAL == ", CACHE_TEST_VAR_INTERNAL);
  557. }
  558. #endif
  559. // ----------------------------------------------------------------------
  560. // A post-build custom-command has been attached to the lib (see Library/).
  561. // It runs ${CREATE_FILE_EXE} which will create a file.
  562. // It also copies that file again using CCOMMAND.
  563. //
  564. // WARNING: if you run 'complex' manually, this *will* fail, because
  565. // the file was removed the last time 'complex' was run, and it is
  566. // only created during a build.
  567. TestAndRemoveFile(BINARY_DIR "/Library/postbuild.txt");
  568. TestAndRemoveFile(BINARY_DIR "/Library/postbuild2.txt");
  569. // ----------------------------------------------------------------------
  570. // A custom target has been created (see Library/).
  571. // It runs ${CREATE_FILE_EXE} which will create a file.
  572. //
  573. // WARNING: if you run 'complex' manually, this *will* fail, because
  574. // the file was removed the last time 'complex' was run, and it is
  575. // only created during a build.
  576. TestAndRemoveFile(BINARY_DIR "/Library/custom_target1.txt");
  577. // ----------------------------------------------------------------------
  578. // A directory has been created.
  579. TestDir(BINARY_DIR "/make_dir");
  580. // ----------------------------------------------------------------------
  581. // Test OUTPUT_REQUIRED_FILES
  582. // The files required by 'complex' have been output to a file.
  583. // The contents of this file is not tested (absolute paths).
  584. //
  585. // WARNING: if you run 'complex' manually, this *will* fail, because
  586. // the file was removed the last time 'complex' was run, and it is
  587. // only created during a build.
  588. TestAndRemoveFile(BINARY_DIR "/Executable/Temp/complex-required.txt");
  589. // ----------------------------------------------------------------------
  590. // Test FIND_LIBRARY
  591. #ifndef FIND_DUMMY_LIB
  592. cmFailed("the CONFIGURE_FILE command is broken, "
  593. "FIND_DUMMY_LIB is not defined.");
  594. #else
  595. if(strstr(FIND_DUMMY_LIB, "dummylib") == NULL)
  596. {
  597. cmFailed("the FIND_LIBRARY or CONFIGURE_FILE command is broken, "
  598. "FIND_DUMMY_LIB == ", FIND_DUMMY_LIB);
  599. }
  600. else
  601. {
  602. cmPassed("FIND_DUMMY_LIB == ", FIND_DUMMY_LIB);
  603. }
  604. #endif
  605. // ----------------------------------------------------------------------
  606. // Test SET_SOURCE_FILES_PROPERTIES
  607. #ifndef FILE_HAS_EXTRA_COMPILE_FLAGS
  608. cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_HAS_EXTRA_COMPILE_FLAGS flag");
  609. #else
  610. cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting FILE_HAS_EXTRA_COMPILE_FLAGS flag");
  611. #endif
  612. #ifndef FILE_HAS_ABSTRACT
  613. cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting ABSTRACT flag");
  614. #else
  615. cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting ABSTRACT flag");
  616. #endif
  617. #ifndef FILE_HAS_WRAP_EXCLUDE
  618. cmFailed("FILE_HAS_WRAP_EXCLUDE failed at setting WRAP_EXCLUDE flag");
  619. #else
  620. cmPassed("FILE_HAS_WRAP_EXCLUDE succeeded in setting WRAP_EXCLUDE flag");
  621. #endif
  622. #ifndef FILE_COMPILE_FLAGS
  623. cmFailed("the CONFIGURE_FILE command is broken, FILE_COMPILE_FLAGS is not defined.");
  624. #else
  625. if(strcmp(FILE_COMPILE_FLAGS, "-foo -bar") != 0)
  626. {
  627. cmFailed("the SET_SOURCE_FILES_PROPERTIES or CONFIGURE_FILE command is broken. FILE_COMPILE_FLAGS == ",
  628. FILE_COMPILE_FLAGS);
  629. }
  630. else
  631. {
  632. cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting extra flags == ", FILE_COMPILE_FLAGS);
  633. }
  634. #endif
  635. // ----------------------------------------------------------------------
  636. // Test registry (win32)
  637. #if defined(_WIN32) && !defined(__CYGWIN__)
  638. #ifndef REGISTRY_TEST_PATH
  639. cmFailed("the CONFIGURE_FILE command is broken, REGISTRY_TEST_PATH is not defined.");
  640. #else
  641. if(stricmp(REGISTRY_TEST_PATH, BINARY_DIR "/registry_dir") != 0)
  642. {
  643. cmFailed("the 'read registry value' function or CONFIGURE_FILE command is broken. REGISTRY_TEST_PATH == ",
  644. REGISTRY_TEST_PATH);
  645. }
  646. else
  647. {
  648. cmPassed("REGISTRY_TEST_PATH == ", REGISTRY_TEST_PATH);
  649. }
  650. #endif
  651. #endif // defined(_WIN32) && !defined(__CYGWIN__)
  652. if(strcmp(CMAKE_MINIMUM_REQUIRED_VERSION, "1.3") == 0)
  653. {
  654. cmPassed("CMAKE_MINIMUM_REQUIRED_VERSION is set to 1.3");
  655. }
  656. else
  657. {
  658. cmFailed("CMAKE_MINIMUM_REQUIRED_VERSION is not set to the expected 1.3");
  659. }
  660. // ----------------------------------------------------------------------
  661. // Test REMOVE command
  662. if (strcmp("a;b;d",REMOVE_STRING))
  663. {
  664. cmPassed("REMOVE is working");
  665. }
  666. else
  667. {
  668. cmFailed("REMOVE is not working");
  669. }
  670. // ----------------------------------------------------------------------
  671. // Test SEPARATE_ARGUMENTS
  672. if(strcmp("a;b;c", TEST_SEP) == 0)
  673. {
  674. cmPassed("SEPARATE_ARGUMENTS is working");
  675. }
  676. else
  677. {
  678. cmFailed("SEPARATE_ARGUMENTS is not working");
  679. }
  680. // ----------------------------------------------------------------------
  681. // Test Escape Quotes
  682. if(strcmp("\"hello world\"", STRING_WITH_QUOTES) == 0)
  683. {
  684. cmPassed("ESCAPE_QUOTES is working");
  685. }
  686. else
  687. {
  688. cmFailed("ESCAPE_QUOTES is not working");
  689. }
  690. // ----------------------------------------------------------------------
  691. // Test cmSystemTools::UpperCase
  692. std::string str = "abc";
  693. std::string strupper = "ABC";
  694. if(cmSystemTools::UpperCase(str) == strupper)
  695. {
  696. cmPassed("cmSystemTools::UpperCase is working");
  697. }
  698. else
  699. {
  700. cmFailed("cmSystemTools::UpperCase is working");
  701. }
  702. // ----------------------------------------------------------------------
  703. // Test if IF command inside a FOREACH works.
  704. #if defined(IF_INSIDE_FOREACH_THEN_EXECUTED) && !defined(IF_INSIDE_FOREACH_ELSE_EXECUTED)
  705. cmPassed("IF inside a FOREACH block works");
  706. #else
  707. cmFailed("IF inside a FOREACH block is broken");
  708. #endif
  709. #if defined(GENERATED_HEADER_INCLUDED)
  710. cmPassed("Generated header included by non-generated source works.");
  711. #else
  712. cmFailed("Generated header included by non-generated source failed.");
  713. #endif
  714. #ifdef FORCE_TEST
  715. cmFailed("CMake SET CACHE FORCE");
  716. #else
  717. cmPassed("CMake SET CACHE FORCE");
  718. #endif
  719. // ----------------------------------------------------------------------
  720. // Summary
  721. std::cout << "Passed: " << cm_passed << "\n";
  722. if(cm_failed)
  723. {
  724. std::cout << "Failed: " << cm_failed << "\n";
  725. return cm_failed;
  726. }
  727. return 0;
  728. }