Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

195 lines
5.5 KiB

2 years ago
/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: ObjectFactory.cxx,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include "vtkDebugLeaks.h"
#include "vtkObjectFactory.h"
#include "vtkObjectFactoryCollection.h"
#include "vtkOutputWindow.h"
#include "vtkOverrideInformation.h"
#include "vtkOverrideInformationCollection.h"
#include "vtkVersion.h"
#include "vtkVertex.h"
int failed = 0;
class vtkTestVertex : public vtkVertex
{
public:
// Methods from vtkObject
~vtkTestVertex()
{
}
vtkTypeRevisionMacro(vtkTestVertex,vtkVertex);
static vtkTestVertex* New() { return new vtkTestVertex; }
vtkTestVertex() { }
private:
vtkTestVertex(const vtkTestVertex&);
void operator=(const vtkTestVertex&);
};
vtkCxxRevisionMacro(vtkTestVertex, "$Revision: 1.23 $");
class vtkTestVertex2 : public vtkVertex
{
public:
~vtkTestVertex2()
{
}
// Methods from vtkObject
vtkTypeRevisionMacro(vtkTestVertex2,vtkVertex);
static vtkTestVertex2* New() { return new vtkTestVertex2; }
vtkTestVertex2() { }
private:
vtkTestVertex2(const vtkTestVertex2&);
void operator=(const vtkTestVertex2&);
};
vtkCxxRevisionMacro(vtkTestVertex2, "$Revision: 1.23 $");
VTK_CREATE_CREATE_FUNCTION(vtkTestVertex);
VTK_CREATE_CREATE_FUNCTION(vtkTestVertex2);
class VTK_EXPORT TestFactory : public vtkObjectFactory
{
public:
TestFactory();
static TestFactory* New() { return new TestFactory;}
virtual const char* GetVTKSourceVersion() { return VTK_SOURCE_VERSION; }
const char* GetDescription() { return "A fine Test Factory"; }
protected:
TestFactory(const TestFactory&);
void operator=(const TestFactory&);
};
TestFactory::TestFactory()
{
this->RegisterOverride("vtkVertex",
"vtkTestVertex",
"test vertex factory override",
1,
vtkObjectFactoryCreatevtkTestVertex);
this->RegisterOverride("vtkVertex", "vtkTestVertex2",
"test vertex factory override 2",
0,
vtkObjectFactoryCreatevtkTestVertex2);
}
void TestNewVertex(vtkVertex* v, const char* expectedClassName)
{
if(strcmp(v->GetClassName(), expectedClassName) != 0)
{
failed = 1;
cout << "Test Failed" << endl;
}
}
int ObjectFactory(int, char *[])
{
vtkOutputWindow::GetInstance()->PromptUserOff();
vtkGenericWarningMacro("Test Generic Warning");
TestFactory* factory = TestFactory::New();
vtkObjectFactory::RegisterFactory(factory);
factory->Delete();
vtkVertex* v = vtkVertex::New();
TestNewVertex(v, "vtkTestVertex");
v->Delete();
// disable all vtkVertex creation with the
factory->Disable("vtkVertex");
v = vtkVertex::New();
TestNewVertex(v, "vtkVertex");
factory->SetEnableFlag(1, "vtkVertex", "vtkTestVertex2");
v->Delete();
v = vtkVertex::New();
TestNewVertex(v, "vtkTestVertex2");
factory->SetEnableFlag(0, "vtkVertex", "vtkTestVertex2");
factory->SetEnableFlag(1, "vtkVertex", "vtkTestVertex");
v->Delete();
v = vtkVertex::New();
TestNewVertex(v, "vtkTestVertex");
v->Delete();
vtkOverrideInformationCollection* oic =
vtkOverrideInformationCollection::New();
vtkObjectFactory::GetOverrideInformation("vtkVertex", oic);
vtkOverrideInformation* oi;
if(oic->GetNumberOfItems() != 2)
{
cout << "Incorrect number of overrides for vtkVertex, expected 2, got: "
<< oic->GetNumberOfItems() << "\n";
failed = 1;
if(oic->GetNumberOfItems() < 2)
{
return 1;
}
}
vtkCollectionSimpleIterator oicit;
oic->InitTraversal(oicit);
oi = oic->GetNextOverrideInformation(oicit);
oi->GetObjectFactory();
if(strcmp(oi->GetClassOverrideName(), "vtkVertex"))
{
cout << "failed: GetClassOverrideName should be vtkVertex, is: "
<< oi->GetClassOverrideName() << "\n";
failed = 1;
}
if(strcmp(oi->GetClassOverrideWithName(), "vtkTestVertex"))
{
cout << "failed: GetClassOverrideWithName should be vtkTestVertex, is: "
<< oi->GetClassOverrideWithName() << "\n";
failed = 1;
}
if(strcmp(oi->GetDescription(), "test vertex factory override"))
{
cout << "failed: GetClassOverrideWithName should be test vertex factory override, is: "
<< oi->GetDescription() << "\n";
failed = 1;
}
oi = oic->GetNextOverrideInformation(oicit);
if(strcmp(oi->GetClassOverrideName(), "vtkVertex"))
{
cout << "failed: GetClassOverrideName should be vtkVertex, is: "
<< oi->GetClassOverrideName() << "\n";
failed = 1;
}
if(strcmp(oi->GetClassOverrideWithName(), "vtkTestVertex2"))
{
cout << "failed: GetClassOverrideWithName should be vtkTestVertex2, is: "
<< oi->GetClassOverrideWithName() << "\n";
failed = 1;
}
if(strcmp(oi->GetDescription(), "test vertex factory override 2"))
{
cout << "failed: GetClassOverrideWithName should be test vertex factory override 2, is: "
<< oi->GetDescription() << "\n";
failed = 1;
}
oic->Delete();
vtkObjectFactory::UnRegisterAllFactories();
return failed;
}