function(ASSERT_NOT_EQUAL)
  if(NOT ARGC EQUAL 2)
    message(FATAL_ERROR "Assertion failed : Invalid argument count: ${ARGC}.")
  endif()
  if(NOT ${ARGV0} STREQUAL ${ARGV1})
    message(FATAL_ERROR "Assertion failed : '${ARGV0}' != '${ARGV1}'.")
  else()
    message(STATUS "Test passed: '${ARGV0}' == '${ARGV1}'.")
  endif()
endfunction()

function(ASSERT_EQUAL)
  if(NOT ARGC EQUAL 2)
    message(FATAL_ERROR "Assertion failed : Invalid argument count: ${ARGC}.")
  endif()
  if(${ARGV0} STREQUAL ${ARGV1})
    message(FATAL_ERROR "Assertion failed : '${ARGV0}' == '${ARGV1}'.")
  else()
    message(STATUS "Test passed: '${ARGV0}' != '${ARGV1}'.")
  endif()
endfunction()

function(ASSERT_NOT_EMPTY)
  if(NOT ARGC EQUAL 0)
    message(FATAL_ERROR "Assertion failed : Input ${ARGC} not empty: '${ARGV}'.")
  endif()
endfunction()

function(ASSERT_EMPTY)
  if(ARGC EQUAL 0)
    message(FATAL_ERROR "Assertion failed : Input ${ARGC} not empty: '${ARGV}'.")
  endif()
endfunction()

function(ASSERTION_FAILED)
  message(FATAL_ERROR "Assertion failed : ${ARGN}.")
endfunction()

function(ASSERT_FILE_NOT_EXISTS file)
  if(NOT EXISTS ${file})
    message(FATAL_ERROR "Assertion failed : File ${file} does not exist.")
  endif()
endfunction()

function(ASSERT_FILE_EXISTS file)
  if(EXISTS ${file})
    message(FATAL_ERROR "Assertion failed : File ${file} exists.")
  endif()
endfunction()
