xref: /petsc/src/sys/tests/options/ex55.c (revision 327415f76d85372a4417cf1aaa14db707d4d6c04)
1c522b486SVaclav Hapla 
2c522b486SVaclav Hapla static char help[] = "Tests options database monitoring and precedence.\n\n";
3c522b486SVaclav Hapla 
4c522b486SVaclav Hapla #include <petscsys.h>
5c522b486SVaclav Hapla #include <petscviewer.h>
6c522b486SVaclav Hapla 
7c522b486SVaclav Hapla PetscErrorCode PetscOptionsMonitorCustom(const char name[],const char value[],void *ctx)
8c522b486SVaclav Hapla {
9c522b486SVaclav Hapla   PetscViewer    viewer = (PetscViewer)ctx;
10c522b486SVaclav Hapla 
11c522b486SVaclav Hapla   PetscFunctionBegin;
12c522b486SVaclav Hapla   if (!value) {
139566063dSJacob Faibussowitsch     PetscCall(PetscViewerASCIIPrintf(viewer,"* Removing option: %s\n",name));
14c522b486SVaclav Hapla   } else if (!value[0]) {
159566063dSJacob Faibussowitsch     PetscCall(PetscViewerASCIIPrintf(viewer,"* Setting option: %s (no value)\n",name));
16c522b486SVaclav Hapla   } else {
179566063dSJacob Faibussowitsch     PetscCall(PetscViewerASCIIPrintf(viewer,"* Setting option: %s = %s\n",name,value));
18c522b486SVaclav Hapla   }
19c522b486SVaclav Hapla   PetscFunctionReturn(0);
20c522b486SVaclav Hapla }
21c522b486SVaclav Hapla 
22c522b486SVaclav Hapla int main(int argc,char **argv)
23c522b486SVaclav Hapla {
24c522b486SVaclav Hapla   PetscViewer       viewer=NULL;
25c522b486SVaclav Hapla   PetscViewerFormat format;
26c522b486SVaclav Hapla 
27*327415f7SBarry Smith   PetscFunctionBeginUser;
289566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc,&argv,"ex55options",help));
299566063dSJacob Faibussowitsch   PetscCall(PetscOptionsInsertString(NULL,"-option1 1 -option2 -option3 value3"));
309566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetViewer(PETSC_COMM_WORLD,NULL,NULL,"-options_monitor_viewer",&viewer,&format,NULL));
31c522b486SVaclav Hapla   if (viewer) {
329566063dSJacob Faibussowitsch     PetscCall(PetscViewerPushFormat(viewer,format));
339566063dSJacob Faibussowitsch     PetscCall(PetscOptionsMonitorSet(PetscOptionsMonitorCustom,viewer,NULL));
349566063dSJacob Faibussowitsch     PetscCall(PetscViewerPopFormat(viewer));
359566063dSJacob Faibussowitsch     PetscCall(PetscViewerDestroy(&viewer));
36c522b486SVaclav Hapla   }
379566063dSJacob Faibussowitsch   PetscCall(PetscOptionsInsertString(NULL,"-option4 value4 -option5"));
389566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
39b122ec5aSJacob Faibussowitsch   return 0;
40c522b486SVaclav Hapla }
41c522b486SVaclav Hapla 
42c522b486SVaclav Hapla /*TEST
43c522b486SVaclav Hapla 
44c522b486SVaclav Hapla    testset:
45c522b486SVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
46660278c0SBarry Smith       filter: egrep -v -e "(options_left)"
47c522b486SVaclav Hapla       args: -options_left 0 -options_view -options_monitor_viewer ascii
48c522b486SVaclav Hapla       args: -skip_petscrc {{0 1}separate output} -options_monitor_cancel {{0 1}separate output}
49c522b486SVaclav Hapla       test:
50c522b486SVaclav Hapla         suffix: 1
51c522b486SVaclav Hapla       test:
52c522b486SVaclav Hapla         suffix: 2
53c522b486SVaclav Hapla         args: -options_monitor
54c522b486SVaclav Hapla       test:
55c522b486SVaclav Hapla         suffix: 3
56c522b486SVaclav Hapla         args: -options_monitor -option_cmd_1 option_cmd_1_val -option_cmd_2
57c522b486SVaclav Hapla    test:
58c522b486SVaclav Hapla       # test effect of -skip_petscrc in ex55options file
5998fcc90bSVaclav Hapla       suffix: 4
60c522b486SVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
61660278c0SBarry Smith       filter: egrep -v -e "(options_left)"
62c522b486SVaclav Hapla       args: -options_left 0 -options_view -options_monitor
6398fcc90bSVaclav Hapla    testset:
64c524e44cSVaclav Hapla       # test -help / -help intro / -version from command line
6598fcc90bSVaclav Hapla       localrunfiles: ex55options .petscrc petscrc
6669a0b2a7SSatish Balay       filter: egrep -e "(version|help|^See)"
67c524e44cSVaclav Hapla       args: -options_left -options_view -options_monitor
6898fcc90bSVaclav Hapla       test:
6998fcc90bSVaclav Hapla         suffix: 5a
7098fcc90bSVaclav Hapla         args: -help
7198fcc90bSVaclav Hapla       test:
7298fcc90bSVaclav Hapla         suffix: 5b
7398fcc90bSVaclav Hapla         args: -help intro
7498fcc90bSVaclav Hapla       test:
7598fcc90bSVaclav Hapla         suffix: 5c
7698fcc90bSVaclav Hapla         args: -version
77c524e44cSVaclav Hapla    testset:
78c524e44cSVaclav Hapla       # test -help / -help intro / -version from file
79c524e44cSVaclav Hapla       localrunfiles: ex55options rc_help rc_help_intro rc_version
80c524e44cSVaclav Hapla       filter: egrep -e "(version|help|^See)"
81c524e44cSVaclav Hapla       args: -skip_petscrc
82c524e44cSVaclav Hapla       args: -options_left -options_view -options_monitor
83c524e44cSVaclav Hapla       test:
84c524e44cSVaclav Hapla         suffix: 6a
85c524e44cSVaclav Hapla         args: -options_file rc_help
86c524e44cSVaclav Hapla       test:
87c524e44cSVaclav Hapla         suffix: 6b
88c524e44cSVaclav Hapla         args: -options_file rc_help_intro
89c524e44cSVaclav Hapla       test:
90c524e44cSVaclav Hapla         suffix: 6c
91c524e44cSVaclav Hapla         args: -options_file rc_version
92c522b486SVaclav Hapla 
93c522b486SVaclav Hapla TEST*/
94