openfoam/applications/test/nullObject/Test-nullObject.C
Mark Olesen 0298c02b2d ENH: ensure nullObject is large enough for reinterpret
- previously occupied 1 byte. Now occupies enough to hold a pointer,
  which helps if using reinterpret_cast to something that has some
  member content.
2017-05-01 22:39:36 +02:00

82 lines
1.6 KiB
C

#include "nullObject.H"
#include "IOstreams.H"
using namespace Foam;
class SimpleClass
{
public:
//- Null constructor
SimpleClass()
{}
};
int main()
{
// Test pointer and reference to a class
SimpleClass* ptrToClass = new SimpleClass;
SimpleClass& refToClass(*ptrToClass);
typedef unsigned long ptrval;
Info<<"nullObject address=" << ptrval(&(nullObjectPtr)) << endl;
Info<<"sizeof(nullObject)" << " == "
<< sizeof(NullObject::nullObject)
<< " vs. sizeof(void*)" << " == " << sizeof(void*)
<< endl;
Info<<"nullObject pointer:" << ptrval(nullObjectPtr->pointer()) << endl;
Info<<"nullObject value:" << nullObjectPtr->value() << endl;
if (notNull(ptrToClass))
{
Info<< "Pass: ptrToClass is not null" << endl;
}
else
{
Info<< "FAIL: refToClass is null" << endl;
}
if (notNull(refToClass))
{
Info<< "Pass: refToClass is not null" << endl;
}
else
{
Info<< "FAIL: refToClass is null" << endl;
}
// Test pointer and reference to the nullObject
const SimpleClass* ptrToNull(NullObjectPtr<SimpleClass>());
const SimpleClass& refToNull(*ptrToNull);
if (isNull(ptrToNull))
{
Info<< "Pass: ptrToNull is null" << endl;
}
else
{
Info<< "FAIL: ptrToNull is not null" << endl;
}
if (isNull(refToNull))
{
Info<< "Pass: refToNull is null" << endl;
}
else
{
Info<< "FAIL: refToNull is not null" << endl;
}
// Clean-up
delete ptrToClass;
return 0;
}