mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: add testFunctionObjects library with fakeError function object
The fakeError function object emits FatalError at different stages (or does nothing), which is useful for testing purposes (issue #1779). Can request errors from constructor, execute and write methods.
This commit is contained in:
3
applications/test/testFunctionObjects/Make/files
Normal file
3
applications/test/testFunctionObjects/Make/files
Normal file
@ -0,0 +1,3 @@
|
||||
fakeError/fakeErrorFunctionObject.C
|
||||
|
||||
LIB = $(FOAM_USER_LIBBIN)/libtestFunctionObjects
|
||||
2
applications/test/testFunctionObjects/Make/options
Normal file
2
applications/test/testFunctionObjects/Make/options
Normal file
@ -0,0 +1,2 @@
|
||||
/* EXE_INC = */
|
||||
/* LIB_LIBS = */
|
||||
@ -0,0 +1,146 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2020 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fakeErrorFunctionObject.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace functionObjects
|
||||
{
|
||||
defineTypeNameAndDebug(fakeErrorFunctionObject, 0);
|
||||
addToRunTimeSelectionTable
|
||||
(
|
||||
functionObject,
|
||||
fakeErrorFunctionObject,
|
||||
dictionary
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
void Foam::functionObjects::fakeErrorFunctionObject::emitError
|
||||
(
|
||||
const char* what
|
||||
) const
|
||||
{
|
||||
|
||||
if (ioError_)
|
||||
{
|
||||
FatalIOError
|
||||
<< "Error on " << what << " : " << name() << nl
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
else
|
||||
{
|
||||
FatalError
|
||||
<< "Error on " << what << " : " << name() << nl
|
||||
<< exit(FatalError);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::functionObjects::fakeErrorFunctionObject::fakeErrorFunctionObject
|
||||
(
|
||||
const word& name,
|
||||
const Time& runTime,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
timeFunctionObject(name, runTime),
|
||||
ioError_(false),
|
||||
constructError_(false),
|
||||
executeError_(false),
|
||||
writeError_(false)
|
||||
{
|
||||
read(dict);
|
||||
|
||||
if (constructError_)
|
||||
{
|
||||
emitError("construct");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
bool Foam::functionObjects::fakeErrorFunctionObject::read
|
||||
(
|
||||
const dictionary& dict
|
||||
)
|
||||
{
|
||||
functionObject::read(dict);
|
||||
|
||||
ioError_ = false;
|
||||
constructError_ = false;
|
||||
executeError_ = false;
|
||||
writeError_ = false;
|
||||
|
||||
dict.readIfPresent("ioError", ioError_);
|
||||
dict.readIfPresent("constructError", constructError_);
|
||||
dict.readIfPresent("executeError", executeError_);
|
||||
dict.readIfPresent("writeError", writeError_);
|
||||
|
||||
Log << "Reading : " << name() << nl
|
||||
<< " error on construct " << constructError_ << nl
|
||||
<< " error on execute() " << executeError_ << nl
|
||||
<< " error on write() " << writeError_ << nl
|
||||
<< " using ioerror = " << ioError_ << nl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool Foam::functionObjects::fakeErrorFunctionObject::execute()
|
||||
{
|
||||
if (executeError_)
|
||||
{
|
||||
emitError("execute()");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool Foam::functionObjects::fakeErrorFunctionObject::write()
|
||||
{
|
||||
if (writeError_)
|
||||
{
|
||||
emitError("write()");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,147 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2020 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::functionObjects::fakeErrorFunctionObject
|
||||
|
||||
Description
|
||||
A function object that emits FatalError at different stages
|
||||
(or does nothing), which is useful for testing purposes.
|
||||
|
||||
Can request errors from constructor, execute and write methods.
|
||||
|
||||
Usage
|
||||
Example of function object specification:
|
||||
|
||||
\verbatim
|
||||
test
|
||||
{
|
||||
type fakeError;
|
||||
libs (testFunctionObjects);
|
||||
...
|
||||
errors warn;
|
||||
executeError true;
|
||||
}
|
||||
\endverbatim
|
||||
|
||||
Where the entries comprise:
|
||||
\table
|
||||
Property | Description | Reqd | Deflt
|
||||
ioError | FatalIOError instead of FatalError | no | no
|
||||
constructError | generate error on construct | no | no
|
||||
executeError | generate error on execute() | no | no
|
||||
writeError | generate error on write() | no | no
|
||||
\endtable
|
||||
|
||||
SourceFiles
|
||||
fakeErrorFunctionObject.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef functionObjects_fakeErrorFunctionObject_H
|
||||
#define functionObjects_fakeErrorFunctionObject_H
|
||||
|
||||
#include "timeFunctionObject.H"
|
||||
#include "Switch.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace functionObjects
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class fakeErrorFunctionObject Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class fakeErrorFunctionObject
|
||||
:
|
||||
public timeFunctionObject
|
||||
{
|
||||
// Private Data
|
||||
|
||||
Switch ioError_;
|
||||
Switch constructError_;
|
||||
Switch executeError_;
|
||||
Switch writeError_;
|
||||
|
||||
|
||||
// Private Member Functions
|
||||
|
||||
//- Emit error for whatever
|
||||
void emitError(const char* what) const;
|
||||
|
||||
//- No copy construct
|
||||
fakeErrorFunctionObject(const fakeErrorFunctionObject&) = delete;
|
||||
|
||||
//- No copy assignment
|
||||
void operator=(const fakeErrorFunctionObject&) = delete;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("fakeError");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from Time and dictionary
|
||||
fakeErrorFunctionObject
|
||||
(
|
||||
const word& name,
|
||||
const Time& runTime,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~fakeErrorFunctionObject() = default;
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Read and report settings
|
||||
virtual bool read(const dictionary& dict);
|
||||
|
||||
//- Execute. Emit error or do nothing.
|
||||
virtual bool execute();
|
||||
|
||||
//- Write. Emit error or do nothing.
|
||||
virtual bool write();
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace functionObjects
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
Reference in New Issue
Block a user