#include "cmTestConfigure.h"
#include "cmTestConfigureEscape.h"
#include "cmTestGeneratedHeader.h"
#include "cmVersion.h"

#include "Aout.h"
#include "ExtraSources/file1.h"
#include "file2.h"
#include "sharedFile.h"
extern "C" {
#include "testConly.h"
}
#include <iostream>
#include <string>
#include <vector>

#include <stdio.h>
#include <string.h>

#include <sys/stat.h>
#if !defined(S_ISDIR)
#  define S_ISDIR(mode) ((mode)&_S_IFDIR)
#endif

#ifdef COMPLEX_TEST_LINK_STATIC
extern "C" {
int TestLinkGetType();
}
#endif

int cm_passed = 0;
int cm_failed = 0;
// ======================================================================

void cmFailed(const char* Message, const char* m2 = "", const char* m3 = "")
{
  std::cout << "FAILED: " << Message << m2 << m3 << "\n";
  cm_failed++;
}

// ======================================================================

void cmPassed(const char* Message, const char* m2 = "")
{
  std::cout << "Passed: " << Message << m2 << "\n";
  cm_passed++;
}

#ifndef COMPLEX_DEFINED_PRE
#  error "COMPLEX_DEFINED_PRE not defined!"
#endif

#ifdef COMPLEX_DEFINED
#  error "COMPLEX_DEFINED is defined but it should not!"
#endif

#ifndef COMPLEX_DEFINED_POST
#  error "COMPLEX_DEFINED_POST not defined!"
#endif

#ifndef CMAKE_IS_REALLY_FUN
#  error This is a problem. Looks like ADD_DEFINITIONS and REMOVE_DEFINITIONS does not work
#endif

#if defined(NDEBUG) && !defined(CMAKE_IS_FUN_IN_RELEASE_MODE)
#  error Per-configuration directory-level definition not inherited.
#endif

// ======================================================================

void TestAndRemoveFile(const char* filename)
{
  struct stat st;
  if (stat(filename, &st) < 0) {
    cmFailed("Could not find file: ", filename);
  } else {
    if (remove(filename) < 0) {
      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);
    } else {
      cmPassed("Find and remove file: ", filename);
    }
  }
}

// ======================================================================

void TestDir(const char* filename)
{
  struct stat st;
  if (stat(filename, &st) < 0 || !S_ISDIR(st.st_mode)) {
    cmFailed("Could not find dir: ", filename);
  } else {
    cmPassed("Find dir: ", filename);
  }
}

// Here is a stupid function that tries to use std::string methods
// so that the dec cxx compiler will instantiate the stuff that
// we are using from the CMakeLib library....
void ForceStringUse()
{
  std::vector<std::string> v;
  std::vector<std::string> v2;
  v = v2;
  std::string cachetest = CACHE_TEST_VAR_INTERNAL;
  v.push_back(cachetest);
  v2 = v;
  std::string x(5, 'x');
  char buff[5];
  x.copy(buff, 1, 0);
  x[0] = 'a';
  std::string::size_type pos = 0;
  x.replace(pos, pos, pos, 'x');
  std::string copy = cachetest;
  cachetest.find("bar");
  cachetest.rfind("bar");
  copy.append(cachetest);
  copy = cachetest.substr(0, cachetest.size());
}

// defined in testcflags.c
extern "C" int TestCFlags(char* m);
extern "C" int TestTargetCompileFlags(char* m);

#if 0
// defined in  Sub1/NameConflictTest.c
extern "C" int NameConflictTest1();
// defined in  Sub2/NameConflictTest.c
extern "C" int NameConflictTest2();
#endif

// ======================================================================

int main()
{
#if 0
  if(NameConflictTest1() == 0 && NameConflictTest2() == 0)
    {
    cmPassed("Sub dir with same named source works");
    }
  else
    {
    cmFailed("Sub dir with same named source fails");
    }
#endif
  if (file1() != 1) {
    cmFailed("Call to file1 function from library failed.");
  } else {
    cmPassed("Call to file1 function returned 1.");
  }
#ifndef COMPLEX_TARGET_FLAG
  cmFailed("COMPILE_FLAGS did not work with SET_TARGET_PROPERTIES");
#else
  cmPassed("COMPILE_FLAGS did work with SET_TARGET_PROPERTIES");
#endif

#ifdef ELSEIF_RESULT
  cmPassed("ELSEIF did work");
#else
  cmFailed("ELSEIF did not work");
#endif

#ifdef CONDITIONAL_PARENTHESES
  cmPassed("CONDITIONAL_PARENTHESES did work");
#else
  cmFailed("CONDITIONAL_PARENTHESES did not work");
#endif

  if (file2() != 1) {
    cmFailed("Call to file2 function from library failed.");
  } else {
    cmPassed("Call to file2 function returned 1.");
  }
#ifndef TEST_CXX_FLAGS
  cmFailed("CMake CMAKE_CXX_FLAGS is not being passed to the compiler!");
#else
  cmPassed("CMake CMAKE_CXX_FLAGS is being passed to the compiler.");
#endif
  std::string gen = CMAKE_GENERATOR;
  // visual studio is currently broken for c flags
  char msg[1024];
  if (gen.find("Visual") == gen.npos) {
#ifdef TEST_C_FLAGS
    cmFailed(
      "CMake CMAKE_C_FLAGS are being passed to c++ files the compiler!");
#else
    cmPassed("CMake CMAKE_C_FLAGS are not being passed to c++ files.");
#endif
    if (TestCFlags(msg)) {
      cmPassed("CMake CMAKE_C_FLAGS are being passed to c files and CXX flags "
               "are not.");
    } else {
      cmFailed(msg);
    }
  }
  if (TestTargetCompileFlags(msg)) {
    cmPassed(msg);
  } else {
    cmFailed(msg);
  }

  // ----------------------------------------------------------------------
  // Test ADD_DEFINITIONS

#ifndef CMAKE_IS_FUN
  cmFailed("CMake is not fun, so it is broken and should be fixed.");
#else
  cmPassed("CMAKE_IS_FUN is defined.");
#endif

#if defined(CMAKE_ARGV1) && defined(CMAKE_ARGV2) && defined(CMAKE_ARGV3) &&   \
  defined(CMAKE_ARGV4)
  cmPassed("Variable args for MACROs are working.");
#else
  cmFailed("Variable args for MACROs are failing.");
#endif

// ----------------------------------------------------------------------
// Test GET_SOURCE_FILE_PROPERTY for location
#ifndef CMAKE_FOUND_ACXX
  cmFailed("CMake did not get the location of A.cxx correctly");
#else
  cmPassed("CMake found A.cxx properly");
#endif

// ----------------------------------------------------------------------
// Test GET_DIRECTORY_PROPERTY for parent
#ifndef CMAKE_FOUND_PARENT
  cmFailed("CMake did not get the location of the parent directory properly");
#else
  cmPassed("CMake found the parent directory properly");
#endif

// ----------------------------------------------------------------------
// Test GET_DIRECTORY_PROPERTY for listfiles
#ifndef CMAKE_FOUND_LISTFILE_STACK
  cmFailed("CMake did not get the listfile stack properly");
#else
  cmPassed("CMake found the listfile stack properly");
#endif

  // ----------------------------------------------------------------------
  // Test SET, VARIABLE_REQUIRES

#ifdef SHOULD_NOT_BE_DEFINED
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED is defined.");
#endif

#ifndef ONE_VAR
  cmFailed("cmakedefine is broken, ONE_VAR is not defined.");
#else
  cmPassed("ONE_VAR is defined.");
#endif

#ifndef ONE_VAR_AND_INDENTED
  cmFailed("cmakedefine is broken, ONE_VAR_AND_INDENTED is not defined.");
#else
  cmPassed("ONE_VAR_AND_INDENTED is defined.");
#endif

#ifndef ONE_VAR_IS_DEFINED
  cmFailed("cmakedefine, SET or VARIABLE_REQUIRES is broken, "
           "ONE_VAR_IS_DEFINED is not defined.");
#else
  cmPassed("ONE_VAR_IS_DEFINED is defined.");
#endif

#ifdef ZERO_VAR
  cmFailed("cmakedefine is broken, ZERO_VAR is defined.");
#else
  cmPassed("ZERO_VAR is not defined.");
#endif

#ifdef ZERO_VAR_AND_INDENTED
  cmFailed("cmakedefine is broken, ZERO_VAR_AND_INDENTED is defined.");
#else
  cmPassed("ZERO_VAR_AND_INDENTED is not defined.");
#endif

#ifndef STRING_VAR
  cmFailed("the CONFIGURE_FILE command is broken, STRING_VAR is not defined.");
#else
  if (strcmp(STRING_VAR, "CMake is great") != 0) {
    cmFailed("the SET or CONFIGURE_FILE command is broken. STRING_VAR == ",
             STRING_VAR);
  } else {
    cmPassed("STRING_VAR == ", STRING_VAR);
  }
#endif

  // ----------------------------------------------------------------------
  // Test various IF/ELSE combinations

#ifdef SHOULD_NOT_BE_DEFINED_NOT
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_NOT is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_NOT
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_NOT is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_NOT2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_NOT2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_NOT2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_NOT2
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_NOT2 is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_NOT2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_AND
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_AND is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_AND
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_AND is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_AND is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_AND2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_AND2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_AND2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_AND2
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_AND2 is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_AND2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_OR
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_OR is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_OR
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_OR is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_OR is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_OR2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_OR2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_OR2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_OR2
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_OR2 is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_OR2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_MATCHES
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_MATCHES is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_MATCHES
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_MATCHES is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_MATCHES is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_MATCHES2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_MATCHES2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_MATCHES2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_MATCHES2
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_MATCHES2 is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_MATCHES2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_COMMAND
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_COMMAND is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_COMMAND
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_COMMAND is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_COMMAND is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_COMMAND2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_COMMAND2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_COMMAND2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_COMMAND2
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_COMMAND2 is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_COMMAND2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_EXISTS
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_EXISTS is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_EXISTS is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_EXISTS
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_EXISTS is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_EXISTS is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_EXISTS2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_EXISTS2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_EXISTS2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_EXISTS2
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_EXISTS2 is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_EXISTS2 is defined.");
#endif

#ifndef SHOULD_BE_DEFINED_IS_DIRECTORY
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_IS_DIRECTORY is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_IS_DIRECTORY is defined.");
#endif

#ifndef SHOULD_BE_DEFINED_IS_DIRECTORY2
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_IS_DIRECTORY2 is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_IS_DIRECTORY2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_LESS
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_LESS is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_LESS is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_LESS
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_LESS is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_LESS is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_LESS2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_LESS2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_LESS2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_LESS2
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_LESS2 is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_LESS2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_GREATER
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_GREATER is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_GREATER is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_GREATER
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_GREATER is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_GREATER is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_GREATER2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_GREATER2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_GREATER2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_GREATER2
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_GREATER2 is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_GREATER2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_EQUAL
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_EQUAL is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_EQUAL is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_EQUAL
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_EQUAL is not defined.\n");
#else
  cmPassed("SHOULD_BE_DEFINED_EQUAL is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_LESS_EQUAL
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_LESS_EQUAL is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_LESS_EQUAL is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_LESS_EQUAL
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_LESS_EQUAL is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_LESS_EQUAL is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_LESS_EQUAL2
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_LESS_EQUAL2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_LESS_EQUAL2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_LESS_EQUAL2
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_LESS_EQUAL2 is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_LESS_EQUAL2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_LESS_EQUAL3
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_LESS_EQUAL3 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_LESS_EQUAL3 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_LESS_EQUAL3
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_LESS_EQUAL3 is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_LESS_EQUAL3 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_GREATER_EQUAL
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_GREATER_EQUAL is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_GREATER_EQUAL is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_GREATER_EQUAL
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_GREATER_EQUAL is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_GREATER_EQUAL is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_GREATER_EQUAL2
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_GREATER_EQUAL2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_GREATER_EQUAL2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_GREATER_EQUAL2
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_GREATER_EQUAL2 is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_GREATER_EQUAL2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_GREATER_EQUAL3
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_GREATER_EQUAL3 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_GREATER_EQUAL3 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_GREATER_EQUAL3
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_GREATER_EQUAL3 is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_GREATER_EQUAL3 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRLESS
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRLESS is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRLESS is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRLESS
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_STRLESS is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRLESS is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRLESS2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRLESS2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRLESS2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRLESS2
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_STRLESS2 is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRLESS2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRGREATER
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRGREATER is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRGREATER is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRGREATER
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_STRGREATER is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRGREATER is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRGREATER2
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRGREATER2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRGREATER2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRGREATER2
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_STRGREATER2 is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRGREATER2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRLESS_EQUAL
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRLESS_EQUAL is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRLESS_EQUAL is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRLESS_EQUAL
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_STRLESS_EQUAL is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRLESS_EQUAL is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRLESS_EQUAL2
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRLESS_EQUAL2 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRLESS_EQUAL2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRLESS_EQUAL2
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_STRLESS_EQUAL2 is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRLESS_EQUAL2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRLESS_EQUAL3
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRLESS_EQUAL3 is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRLESS_EQUAL3 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRLESS_EQUAL3
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_STRLESS_EQUAL3 is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRLESS_EQUAL3 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL
  cmFailed(
    "IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL is defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRGREATER_EQUAL
  cmFailed(
    "IF or SET is broken, SHOULD_BE_DEFINED_STRGREATER_EQUAL is not defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRGREATER_EQUAL is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL2
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL2 is "
           "defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL2 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRGREATER_EQUAL2
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_STRGREATER_EQUAL2 is not "
           "defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRGREATER_EQUAL2 is defined.");
#endif

#ifdef SHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL3
  cmFailed("IF or SET is broken, SHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL3 is "
           "defined.");
#else
  cmPassed("SHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL3 is not defined.");
#endif

#ifndef SHOULD_BE_DEFINED_STRGREATER_EQUAL3
  cmFailed("IF or SET is broken, SHOULD_BE_DEFINED_STRGREATER_EQUAL3 is not "
           "defined.");
#else
  cmPassed("SHOULD_BE_DEFINED_STRGREATER_EQUAL3 is defined.");
#endif

  // ----------------------------------------------------------------------
  // Test FOREACH

#ifndef FOREACH_VAR1
  cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
           "FOREACH_VAR1 is not defined.");
#else
  if (strcmp(FOREACH_VAR1, "VALUE1") != 0) {
    cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
             "FOREACH_VAR1 == ",
             FOREACH_VAR1);
  } else {
    cmPassed("FOREACH_VAR1 == ", FOREACH_VAR1);
  }
#endif

#ifndef FOREACH_VAR2
  cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
           "FOREACH_VAR2 is not defined.");
#else
  if (strcmp(FOREACH_VAR2, "VALUE2") != 0) {
    cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
             "FOREACH_VAR2 == ",
             FOREACH_VAR2);
  } else {
    cmPassed("FOREACH_VAR2 == ", FOREACH_VAR2);
  }
#endif

#ifndef FOREACH_CONCAT
  cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
           "FOREACH_CONCAT is not defined.");
#else
  if (strcmp(FOREACH_CONCAT, "abcdefg") != 0) {
    cmFailed("the FOREACH, SET or CONFIGURE_FILE command is broken, "
             "FOREACH_CONCAT == ",
             FOREACH_CONCAT);
  } else {
    cmPassed("FOREACH_CONCAT == ", FOREACH_CONCAT);
  }
#endif

  // ----------------------------------------------------------------------
  // Test WHILE

  if (WHILE_VALUE != 1000) {
    cmFailed("WHILE command is not working");
  } else {
    cmPassed("WHILE command is working");
  }

  // ----------------------------------------------------------------------
  // Test LOAD_CACHE

#ifndef CACHE_TEST_VAR1
  cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
           "CACHE_TEST_VAR1 is not defined.");
#else
  if (strcmp(CACHE_TEST_VAR1, "foo") != 0) {
    cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
             "CACHE_TEST_VAR1 == ",
             CACHE_TEST_VAR1);
  } else {
    cmPassed("CACHE_TEST_VAR1 == ", CACHE_TEST_VAR1);
  }
#endif

#ifndef CACHE_TEST_VAR2
  cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
           "CACHE_TEST_VAR2 is not defined.");
#else
  if (strcmp(CACHE_TEST_VAR2, "bar") != 0) {
    cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
             "CACHE_TEST_VAR2 == ",
             CACHE_TEST_VAR2);
  } else {
    cmPassed("CACHE_TEST_VAR2 == ", CACHE_TEST_VAR2);
  }
#endif

#ifndef CACHE_TEST_VAR3
  cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
           "CACHE_TEST_VAR3 is not defined.");
#else
  if (strcmp(CACHE_TEST_VAR3, "1") != 0) {
    cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
             "CACHE_TEST_VAR3 == ",
             CACHE_TEST_VAR3);
  } else {
    cmPassed("CACHE_TEST_VAR3 == ", CACHE_TEST_VAR3);
  }
#endif

#ifdef CACHE_TEST_VAR_EXCLUDED
  cmFailed(
    "the LOAD_CACHE or CONFIGURE_FILE command or cmakedefine is broken, "
    "CACHE_TEST_VAR_EXCLUDED is defined (should not have been loaded).");
#else
  cmPassed("CACHE_TEST_VAR_EXCLUDED is not defined.");
#endif

#ifndef CACHE_TEST_VAR_INTERNAL
  cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
           "CACHE_TEST_VAR_INTERNAL is not defined.");
#else
  std::string cachetest = CACHE_TEST_VAR_INTERNAL;
  if (cachetest != "bar") {
    cmFailed("the LOAD_CACHE or CONFIGURE_FILE command is broken, "
             "CACHE_TEST_VAR_INTERNAL == ",
             CACHE_TEST_VAR_INTERNAL);
  } else {
    cmPassed("CACHE_TEST_VAR_INTERNAL == ", CACHE_TEST_VAR_INTERNAL);
  }
#endif

  // ----------------------------------------------------------------------
  // Some pre-build/pre-link/post-build custom-commands have been
  // attached to the lib (see Library/).
  // Each runs ${CREATE_FILE_EXE} which will create a file.
  // It also copies that file again using cmake -E.
  // Similar rules have been added to this executable.
  //
  // WARNING: if you run 'complex' manually, this *will* fail, because
  // the file was removed the last time 'complex' was run, and it is
  // only created during a build.

  TestAndRemoveFile("Library/prebuild.txt");
  TestAndRemoveFile("Library/prelink.txt");
  TestAndRemoveFile("Library/postbuild.txt");
  TestAndRemoveFile("Library/postbuild2.txt");
  TestAndRemoveFile("Executable/prebuild.txt");
  TestAndRemoveFile("Executable/prelink.txt");
  TestAndRemoveFile("Executable/postbuild.txt");
  TestAndRemoveFile("Executable/postbuild2.txt");

  // ----------------------------------------------------------------------
  // A custom target has been created (see Library/).
  // It runs ${CREATE_FILE_EXE} which will create a file.
  //
  // WARNING: if you run 'complex' manually, this *will* fail, because
  // the file was removed the last time 'complex' was run, and it is
  // only created during a build.

  TestAndRemoveFile("Library/custom_target1.txt");

  // ----------------------------------------------------------------------
  // A directory has been created.

  TestDir("make_dir");

  // ----------------------------------------------------------------------
  // Test OUTPUT_REQUIRED_FILES
  // The files required by 'complex' have been output to a file.
  // The contents of this file is not tested (absolute paths).
  //
  // WARNING: if you run 'complex' manually, this *will* fail, because
  // the file was removed the last time 'complex' was run, and it is
  // only created during a build.

  TestAndRemoveFile("Executable/Temp/complex-required.txt");

  // ----------------------------------------------------------------------
  // Test FIND_LIBRARY

#ifndef FIND_DUMMY_LIB
  cmFailed("the CONFIGURE_FILE command is broken, "
           "FIND_DUMMY_LIB is not defined.");
#else
  if (strstr(FIND_DUMMY_LIB, "dummylib") == NULL) {
    cmFailed("the FIND_LIBRARY or CONFIGURE_FILE command is broken, "
             "FIND_DUMMY_LIB == ",
             FIND_DUMMY_LIB);
  } else {
    cmPassed("FIND_DUMMY_LIB == ", FIND_DUMMY_LIB);
  }
#endif

  // ----------------------------------------------------------------------
  // Test SET_SOURCE_FILES_PROPERTIES

#ifndef FILE_HAS_EXTRA_COMPILE_FLAGS
  cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting "
           "FILE_HAS_EXTRA_COMPILE_FLAGS flag");
#else
  cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting "
           "FILE_HAS_EXTRA_COMPILE_FLAGS flag");
#endif

#if 0 // Disable until implemented everywhere.
#  ifndef FILE_DEFINE_STRING
  cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_DEFINE_STRING flag");
#  else
  if(strcmp(FILE_DEFINE_STRING, "hello") != 0)
    {
    cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting FILE_DEFINE_STRING flag correctly");
    }
  else
    {
    cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting FILE_DEFINE_STRING flag");
    }
#  endif
#endif

#ifndef FILE_HAS_ABSTRACT
  cmFailed("SET_SOURCE_FILES_PROPERTIES failed at setting ABSTRACT flag");
#else
  cmPassed("SET_SOURCE_FILES_PROPERTIES succeeded in setting ABSTRACT flag");
#endif

#ifndef FILE_HAS_WRAP_EXCLUDE
  cmFailed("FILE_HAS_WRAP_EXCLUDE failed at setting WRAP_EXCLUDE flag");
#else
  cmPassed("FILE_HAS_WRAP_EXCLUDE succeeded in setting WRAP_EXCLUDE flag");
#endif

#ifndef FILE_COMPILE_FLAGS
  cmFailed("the CONFIGURE_FILE command is broken, FILE_COMPILE_FLAGS is not "
           "defined.");
#else
  if (strcmp(FILE_COMPILE_FLAGS, "-foo -bar") != 0) {
    cmFailed("the SET_SOURCE_FILES_PROPERTIES or CONFIGURE_FILE command is "
             "broken. FILE_COMPILE_FLAGS == ",
             FILE_COMPILE_FLAGS);
  } else {
    cmPassed(
      "SET_SOURCE_FILES_PROPERTIES succeeded in setting extra flags == ",
      FILE_COMPILE_FLAGS);
  }
#endif

// ----------------------------------------------------------------------
// Test registry (win32)
#if defined(_WIN32) && !defined(__CYGWIN__)
#  ifndef REGISTRY_TEST_PATH
  cmFailed("the CONFIGURE_FILE command is broken, REGISTRY_TEST_PATH is not "
           "defined.");
#  else
  std::cout << "REGISTRY_TEST_PATH == " << REGISTRY_TEST_PATH << "\n";
  if (stricmp(REGISTRY_TEST_PATH, BINARY_DIR "/registry_dir") != 0) {
    cmFailed("the 'read registry value' function or CONFIGURE_FILE command is "
             "broken. REGISTRY_TEST_PATH == ",
             REGISTRY_TEST_PATH, " is not " BINARY_DIR "/registry_dir");
  } else {
    cmPassed("REGISTRY_TEST_PATH == ", REGISTRY_TEST_PATH);
  }
#  endif
#endif // defined(_WIN32) && !defined(__CYGWIN__)

  if (strcmp(CMAKE_MINIMUM_REQUIRED_VERSION, "2.4") == 0) {
    cmPassed("CMAKE_MINIMUM_REQUIRED_VERSION is set to 2.4");
  } else {
    cmFailed("CMAKE_MINIMUM_REQUIRED_VERSION is not set to the expected 2.4");
  }

  // ----------------------------------------------------------------------
  // Test REMOVE command
  if (strcmp("a;b;d", REMOVE_STRING) == 0) {
    cmPassed("REMOVE is working");
  } else {
    cmFailed("REMOVE is not working");
  }

  // ----------------------------------------------------------------------
  // Test SEPARATE_ARGUMENTS
  if (strcmp("a;b;c", TEST_SEP) == 0) {
    cmPassed("SEPARATE_ARGUMENTS is working");
  } else {
    cmFailed("SEPARATE_ARGUMENTS is not working");
  }

  // ----------------------------------------------------------------------
  // Test Escape Quotes
  if (strcmp("\"hello world\"", STRING_WITH_QUOTES) == 0) {
    cmPassed("ESCAPE_QUOTES is working");
  } else {
    cmFailed("ESCAPE_QUOTES is not working");
  }

// ----------------------------------------------------------------------
// Test if IF command inside a FOREACH works.
#if defined(IF_INSIDE_FOREACH_THEN_EXECUTED) &&                               \
  !defined(IF_INSIDE_FOREACH_ELSE_EXECUTED)
  cmPassed("IF inside a FOREACH block works");
#else
  cmFailed("IF inside a FOREACH block is broken");
#endif

#if defined(GENERATED_HEADER_INCLUDED)
  cmPassed("Generated header included by non-generated source works.");
#else
  cmFailed("Generated header included by non-generated source failed.");
#endif
  if (SHOULD_BE_ZERO == 0) {
    cmPassed("cmakedefine01 is working for 0");
  } else {
    cmFailed("cmakedefine01 is not working for 0");
  }
  if (SHOULD_BE_ONE == 1) {
    cmPassed("cmakedefine01 is working for 1");
  } else {
    cmFailed("cmakedefine01 is not working for 1");
  }
  if (SHOULD_BE_ZERO_AND_INDENTED == 0) {
    cmPassed("cmakedefine01 is working for 0 and indented");
  } else {
    cmFailed("cmakedefine01 is not working for 0 and indented");
  }
  if (SHOULD_BE_ONE_AND_INDENTED == 1) {
    cmPassed("cmakedefine01 is working for 1 and indented");
  } else {
    cmFailed("cmakedefine01 is not working for 1 and indented");
  }
#ifdef FORCE_TEST
  cmFailed("CMake SET CACHE FORCE");
#else
  cmPassed("CMake SET CACHE FORCE");
#endif

#ifdef COMPLEX_TEST_LINK_STATIC
  if (TestLinkGetType()) {
    cmPassed("Link to static over shared worked.");
  } else {
    cmFailed("Link to static over shared failed.");
  }
#endif

#if defined(A_VALUE) && A_VALUE == 10
  cmPassed("Single-character executable A worked.");
#else
  cmFailed("Single-character executable A failed.");
#endif

  // ----------------------------------------------------------------------
  // Summary

  std::cout << "Passed: " << cm_passed << "\n";
  if (cm_failed) {
    std::cout << "Failed: " << cm_failed << "\n";
    return cm_failed;
  }
  return 0;
}
