doctest

FORK: The fastest feature-rich C++11/14/17/20 single-header testing framework
git clone https://git.neptards.moe/neptards/doctest.git
Log | Files | Refs | README

mpi.cpp (1283B)


      1 #include <doctest/extensions/doctest_mpi.h>
      2 
      3 int f_for_test(int rank);
      4 
      5 int f_for_test(int rank) {
      6   if (rank == 0) {
      7     return 10;
      8   }
      9   else if (rank == 1) {
     10     return 11;
     11   }
     12   return 0;
     13 }
     14 
     15 
     16 
     17 MPI_TEST_CASE("Parallel test on 2 processes",2) { // if MPI_SIZE < 2, report test can't be run
     18   // 3 objects accessible in the test:
     19   //    test_comm: MPI_Comm of size 2
     20   //    test_rank: integer of value the rank of the process in test_comm
     21   //    test_nb_procs: integer of value the size of the process (here: 2)
     22 
     23   int x = f_for_test(test_rank);
     24 
     25   MPI_CHECK( 0,  x==10 ); // CHECK for rank 0, that x==10
     26   MPI_CHECK( 1,  x==11 ); // CHECK for rank 1, that x==11
     27   //MPI_CHECK( 2,  x==0 ); // will trigger a static assert because non-existing rank
     28 }
     29 
     30 MPI_TEST_CASE("Parallel test on 3 processes (failing)",3) {
     31   int x = f_for_test(test_rank);
     32 
     33   MPI_CHECK( 0,  x==10 ); // CHECK for rank 0, that x==10
     34   MPI_CHECK( 1,  x==11 ); // CHECK for rank 1, that x==11
     35   MPI_CHECK( 2,  x==-1 ); // CHECK for rank 2, that x==-1 (which is not the case -> will trigger a failure report)
     36 }
     37 
     38 MPI_TEST_CASE("Parallel tests with subcases",2) {
     39 
     40   SUBCASE("sub_case 0") {
     41     CHECK( test_nb_procs == 2 );
     42   }
     43   SUBCASE("sub_case 1") {
     44     CHECK( test_rank == 0 ); // should fail on proc 1
     45   }
     46 }