/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
/*
*
* (C) 2003 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/
#include "mpi.h"
#include <stdio.h>
#include "mpitest.h"
int main(int argc, char *argv[])
{
int errs = 0;
int rc, result;
int ranks[1];
MPI_Group group, outgroup;
MPI_Comm comm;
MTest_Init(&argc, &argv);
/* To improve reporting of problems about operations, we
* change the error handler to errors return */
MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
while (MTestGetComm(&comm, 1)) {
if (comm == MPI_COMM_NULL)
continue;
MPI_Comm_group(comm, &group);
rc = MPI_Group_incl(group, 0, 0, &outgroup);
if (rc) {
errs++;
MTestPrintError(rc);
printf("Error in creating an empty group with (0,0)\n");
/* Some MPI implementations may reject a null "ranks" pointer */
rc = MPI_Group_incl(group, 0, ranks, &outgroup);
if (rc) {
errs++;
MTestPrintError(rc);
printf("Error in creating an empty group with (0,ranks)\n");
}
}
if (outgroup != MPI_GROUP_EMPTY) {
/* Is the group equivalent to group empty? */
rc = MPI_Group_compare(outgroup, MPI_GROUP_EMPTY, &result);
if (result != MPI_IDENT) {
errs++;
MTestPrintError(rc);
printf("Did not create a group equivalent to an empty group\n");
}
}
rc = MPI_Group_free(&group);
if (rc) {
errs++;
MTestPrintError(rc);
}
if (outgroup != MPI_GROUP_NULL) {
rc = MPI_Group_free(&outgroup);
if (rc) {
errs++;
MTestPrintError(rc);
}
}
MTestFreeComm(&comm);
}
MTest_Finalize(errs);
MPI_Finalize();
return 0;
}