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

# Content
1 #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 *