Catch - a test framework for C++

Catch is a testing framework for C++, i.e. a colection of macros that simplify the process of testing functions. To use catch, start by downloading the single header version at: https://raw.githubusercontent.com/catchorg/Catch2/master/single_include/catch2/catch.hpp

The following is a minimal example of how you would use the macros in catch to test a function called inOrder. Please notice the following:

#define CATCH_CONFIG_MAIN
#include <iostream>
#include "catch.hpp"

using namespace std;

bool inOrder(const vector<int> &v) {
  for (int i = 0; i < v.size()-1; i++) {
    if (v[i] > v[i+1]) return false;
  }
  return true;
}


TEST_CASE( "My Tests", "[inOrder]" ) {
    REQUIRE( inOrder({2,3,4,10}) == true );
    REQUIRE( inOrder({12,3,4,10}) == false );
}

To compile, you need to use C++11 or later and you may need to specify the directory that contains the catch.hpp:

g++ -o inOrder inOrder.cpp -std=c++11 -I(dir that contains catch.hpp)

Here is an example using a main function:

#define CATCH_CONFIG_RUNNER
#include <iostream>
#include "catch.hpp"

using namespace std;

bool inOrder(const vector<int> &v) {
  for (int i = 0; i < v.size()-1; i++) {
    if (v[i] > v[i+1]) return false;
  }
  return true;
}


TEST_CASE( "My Tests", "[inOrder]" ) {
    REQUIRE( inOrder({2,3,4,10}) == true );
    REQUIRE( inOrder({12,3,4,10}) == false );
}


int main(int argc, char *argv[]) {
  int result = Catch::Session().run( argc, argv );
  cout << "Hello World\n";
  return result;
}