complex.cxx 23 KB

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