Actual source code: ex5.c


  2: static char help[] = "Tests PetscOptionsPushGetViewerOff() via checking output of PetscViewerASCIIPrintf().\n\n";

  4: #include <petscviewer.h>

  6: int main(int argc, char **args)
  7: {
  8:   PetscViewer       viewer;
  9:   PetscViewerFormat format;
 10:   PetscBool         iascii;

 12:   PetscFunctionBeginUser;
 13:   PetscCall(PetscInitialize(&argc, &args, (char *)0, help));
 14:   PetscCall(PetscOptionsGetViewer(PETSC_COMM_WORLD, NULL, NULL, "-myviewer", &viewer, &format, NULL));
 15:   PetscCall(PetscObjectTypeCompare((PetscObject)viewer, PETSCVIEWERASCII, &iascii));
 16:   if (iascii) {
 17:     PetscBool flg;
 18:     PetscCall(PetscViewerPushFormat(viewer, format));
 19:     PetscCall(PetscViewerASCIIPrintf(viewer, "Testing PetscViewerASCIIPrintf %d\n", 0));
 20:     PetscCall(PetscViewerPopFormat(viewer));
 21:     PetscCall(PetscViewerDestroy(&viewer));
 22:     PetscCall(PetscOptionsPushGetViewerOff(PETSC_TRUE));
 23:     PetscCall(PetscOptionsGetViewer(PETSC_COMM_WORLD, NULL, NULL, "-myviewer", &viewer, &format, &flg));
 24:     PetscCheck(!flg, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Pushed viewer off, but viewer was set");
 25:     if (viewer) {
 26:       PetscCall(PetscViewerPushFormat(viewer, format));
 27:       PetscCall(PetscViewerASCIIPrintf(viewer, "Testing PetscViewerASCIIPrintf %d\n", 1));
 28:       PetscCall(PetscViewerPopFormat(viewer));
 29:     }
 30:     PetscCall(PetscOptionsPopGetViewerOff());
 31:     PetscCall(PetscOptionsGetViewer(PETSC_COMM_WORLD, NULL, NULL, "-myviewer", &viewer, &format, &flg));
 32:     PetscCall(PetscViewerPushFormat(viewer, format));
 33:     PetscCall(PetscViewerASCIIPrintf(viewer, "Testing PetscViewerASCIIPrintf %d\n", 2));
 34:     PetscCall(PetscViewerPopFormat(viewer));
 35:   }
 36:   PetscCall(PetscViewerDestroy(&viewer));
 37:   PetscCall(PetscFinalize());
 38:   return 0;
 39: }

 41: /*TEST

 43:    test:
 44:       args: -myviewer

 46: TEST*/