ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/test/utils/GenericFactoryTestCase.cpp
Revision: 1643
Committed: Mon Oct 25 17:03:56 2004 UTC (19 years, 8 months ago) by tim
File size: 2262 byte(s)
Log Message:
adding GenericFactory Test Case. GenericFactory now can bed used to creat
ForcefieldFactory and IntegratorFactory etc.

File Contents

# User Rev Content
1 tim 1643 #include "utils/GenericFactoryTestCase.hpp"
2     #include <iostream>
3     #include <algorithm>
4     // Registers the fixture into the 'registry'
5     CPPUNIT_TEST_SUITE_REGISTRATION( GenericFactoryTestCase );
6     void GenericFactoryTestCase::testGenericFactory() {
7     //test getIdents
8     std::vector<std::string> idents;
9     idents = ShapeFactory::getInstance()->getIdents();
10     CPPUNIT_ASSERT(std::find(idents.begin(), idents.end(), "MyLine") != idents.end());
11     CPPUNIT_ASSERT(std::find(idents.begin(), idents.end(), "MyCircle") != idents.end());
12    
13     //test createObject
14     Shape* line = ShapeFactory::getInstance()->createObject("MyLine");
15     CPPUNIT_ASSERT(line != NULL && line->getType() == "Line");
16     delete line;
17    
18     Shape* circle = ShapeFactory::getInstance()->createObject("MyCircle");
19     CPPUNIT_ASSERT(circle != NULL && circle->getType() == "Circle");
20     delete circle;
21    
22     //test registerCreator
23     bool registeredCreateAnotherCircle =
24     ShapeFactory::getInstance()->registerCreator("MyCircle", createAnotherCircle);
25     CPPUNIT_ASSERT(!registeredCreateAnotherCircle);
26    
27     //test unregisterCreator
28     ShapeFactory::getInstance()->unregisterCreator("MyCircle");
29     idents = ShapeFactory::getInstance()->getIdents();
30     CPPUNIT_ASSERT(idents.size() == 1 && std::find(idents.begin(), idents.end(), "MyLine") != idents.end());
31    
32    
33     //test registerCreator
34     registeredCreateAnotherCircle =
35     ShapeFactory::getInstance()->registerCreator("MyCircle", createAnotherCircle);
36     CPPUNIT_ASSERT(registeredCreateAnotherCircle);
37     idents = ShapeFactory::getInstance()->getIdents();
38     CPPUNIT_ASSERT(std::find(idents.begin(), idents.end(), "MyLine") != idents.end());
39     CPPUNIT_ASSERT(std::find(idents.begin(), idents.end(), "MyCircle") != idents.end());
40    
41     //expect createAnotherCircle will replace createCircle
42     Shape* anotherCircle = ShapeFactory::getInstance()->createObject("MyCircle");
43     CPPUNIT_ASSERT(anotherCircle != NULL && anotherCircle->getType() == "AnotherCircle");
44     delete anotherCircle;
45    
46     //test macro REGISTER_CREATOR
47     REGISTER_CREATOR(ShapeFactory, "MyCubic", Cubic);
48     Shape* cubic = ShapeFactory::getInstance()->createObject("MyCubic");
49     CPPUNIT_ASSERT(circle != NULL && circle->getType() == "Cubic");
50     }

Properties

Name Value
svn:executable *