71 ECHO(SimpleObjectDB<T> sot);
75 TEST_THROW(sot.getNonconstObjRCP(0), RangeError);
77 TEST_THROW(sot.getNonconstObjPtr(0), RangeError);
101 ECHO(SimpleObjectDB<T> sot);
102 ECHO(
const int id = sot.storeNonconstObj(T::create()));
117 ECHO(SimpleObjectDB<T> sot);
118 ECHO(
const RCP<T> obj = T::create());
119 ECHO(
const int id = sot.storeNonconstObj(obj));
126 ECHO(SimpleObjectDB<T> sot);
127 ECHO(
const RCP<T> obj = T::create());
128 ECHO(
const int id = sot.storeNonconstObj(obj));
129 TEST_EQUALITY(obj.get(), getConst(sot).getConstObjRCP(
id).get());
135 ECHO(SimpleObjectDB<T> sot);
136 ECHO(
const RCP<T> obj = T::create());
137 ECHO(
const int id = sot.storeNonconstObj(obj));
144 ECHO(SimpleObjectDB<T> sot);
145 ECHO(
const RCP<T> obj = T::create());
146 ECHO(
const int id = sot.storeNonconstObj(obj));
147 TEST_EQUALITY(obj.get(), getConst(sot).getConstObjPtr(
id).get());
158 ECHO(SimpleObjectDB<T> sot);
159 ECHO(RCP<const T> obj = T::create());
160 ECHO(
const int id = sot.storeConstObj(obj));
171 ECHO(SimpleObjectDB<A> sot);
173 TEST_THROW(sot.storeNonconstObj(rcpA), NullReferenceError);
181 ECHO(SimpleObjectDB<A> sot);
183 TEST_THROW(sot.storeNonconstObj(rcp(a)), NullReferenceError);
191 ECHO(SimpleObjectDB<A> sot);
205 ECHO(SimpleObjectDB<A> sot);
206 ECHO(
const RCP<A> obj = A::create());
207 ECHO(
const int id1 = sot.storeNonconstObj(obj));
209 ECHO(sot.removeObj(id1));
216 ECHO(SimpleObjectDB<A> sot);
217 ECHO(
const RCP<A> obj = A::create());
218 ECHO(
const int id1 = sot.storeConstObj(obj));
220 ECHO(sot.removeObj(id1));
222 ECHO(
const int id2 = sot.storeConstObj(obj));
231 ECHO(SimpleObjectDB<A> sot);
232 ECHO(
const RCP<A> obj = A::create());
233 ECHO(
const int id1 = sot.storeNonconstObj(obj));
235 ECHO(
const RCP<A> obj2 = sot.removeNonconstObj(id1));
238 ECHO(
const int id2 = sot.storeNonconstObj(obj));
247 ECHO(SimpleObjectDB<A> sot);
248 ECHO(
const RCP<const A> obj = A::create());
249 ECHO(
const int id1 = sot.storeConstObj(obj));
251 ECHO(
const RCP<const A> obj2 = sot.removeConstObj(id1));
254 ECHO(
const int id2 = sot.storeConstObj(obj));
266 ECHO(SimpleObjectDB<A> sot);
268 TEST_THROW(sot.removeNonconstObj(
id), RangeError);
274 ECHO(SimpleObjectDB<A> sot);
276 TEST_THROW(sot.removeNonconstObj(
id), RangeError);
282 ECHO(SimpleObjectDB<A> sot);
284 TEST_THROW(sot.removeNonconstObj(
id), RangeError);
290 ECHO(SimpleObjectDB<A> sot);
291 ECHO(
const int id = sot.storeNonconstObj(A::create()));
292 ECHO(sot.removeObj(
id));
293 TEST_THROW(sot.removeObj(
id), NullReferenceError);
299 ECHO(SimpleObjectDB<A> sot);
300 ECHO(
const int id = sot.storeNonconstObj(A::create()));
301 ECHO(sot.removeNonconstObj(
id));
302 TEST_THROW(sot.removeNonconstObj(
id), NullReferenceError);
308 ECHO(SimpleObjectDB<A> sot);
309 ECHO(
const int id = sot.storeNonconstObj(A::create()));
310 ECHO(sot.removeConstObj(
id));
311 TEST_THROW(sot.removeConstObj(
id), NullReferenceError);
328 ECHO(SimpleObjectDB<A> sot);
330 TEST_THROW(sot.getNonconstObjRCP(
id), RangeError);
335 ECHO(SimpleObjectDB<A> sot);
337 TEST_THROW(sot.getNonconstObjRCP(
id), RangeError);
342 ECHO(SimpleObjectDB<A> sot);
344 TEST_THROW(sot.getNonconstObjRCP(
id), RangeError);
353 ECHO(SimpleObjectDB<A> sot);
354 ECHO(
int id = sot.storeNonconstObj(A::create()));
356 ECHO(
int id2 = sot.storeNonconstObj(A::create()));
358 ECHO(sot.removeNonconstObj(
id));
359 TEST_THROW(sot.getNonconstObjRCP(
id), NullReferenceError);
370 ECHO(SimpleObjectDB<T2> sot);
371 ECHO(RCP<T1> rcpT1 = rcp(
new T1));
372 ECHO(T2 *pT2 =
dynamic_cast<T2*
>(rcpT1.get()));
374 TEST_THROW(sot.storeCastedNonconstObj(rcpT1), m_bad_cast);
376 ECHO(
int id = sot.storeCastedNonconstObj(rcpT1));
394 ECHO(SimpleObjectDB<A> sot);
395 ECHO(
const RCP<A> a(
new A));
396 ECHO(
int id = sot.storeNonconstObj(a));
397 ECHO(
int id2 = sot.storeNonconstObj(a));
403 ECHO(sot.removeNonconstObj(
id));
411 TEST_THROW(sot.getNonconstObjRCP(
id), RangeError);
426 ECHO(SimpleObjectDB<A> sot);
427 ECHO(
int id = sot.storeNonconstObj(A::create()));
432 ECHO(sot.removeNonconstObj(
id));
436 ECHO(
int id2 = sot.storeNonconstObj(A::create()));
446 ECHO(SimpleObjectDB<A> sot);
447 ECHO(
int id = sot.storeNonconstObj(A::create()));
449 ECHO(
int id2 = sot.storeNonconstObj(A::create()));
454 ECHO(sot.removeNonconstObj(
id));
458 ECHO(
int id3 = sot.storeNonconstObj(A::create()));
468 ECHO(SimpleObjectDB<A> sot);
469 ECHO(
int id = sot.storeNonconstObj(A::create()));
471 ECHO(
int id2 = sot.storeNonconstObj(A::create()));
473 ECHO(
int id3 = sot.storeNonconstObj(A::create()));
478 ECHO(sot.removeNonconstObj(id2));
482 ECHO(
int id4 = sot.storeNonconstObj(A::create()));
487 ECHO(
int id5 = sot.storeNonconstObj(A::create()));
500#define UNIT_TEST_GROUP( T ) \
501 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( SimpleObjectDB, defaultConstruct, T ) \
502 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( SimpleObjectDB, createSimpleObjectDB, T ) \
503 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( SimpleObjectDB, storeNonconstObj, T ) \
504 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( SimpleObjectDB, getNonconstObjRCP, T ) \
505 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( SimpleObjectDB, getConstObjRCP, T ) \
506 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( SimpleObjectDB, getNonconstObjPtr, T ) \
507 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( SimpleObjectDB, getConstObjPtr, T ) \
508 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( SimpleObjectDB, storeConstObj, T )
510#define UNIT_TEST_GROUP_PAIR( T1, T2 ) \
511 TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT( SimpleObjectDB, storeCastedNonconstObj, T1, T2 )
513#define UNIT_TEST_GROUP_PAIR_SYM( T1, T2 ) \
514 UNIT_TEST_GROUP_PAIR( T1, T2 ) \
515 UNIT_TEST_GROUP_PAIR( T2, T1 )
#define UNIT_TEST_GROUP(T)
#define UNIT_TEST_GROUP_PAIR_SYM(T1, T2)
#define UNIT_TEST_GROUP_PAIR(T1, T2)
#define TEST_EQUALITY_CONST(v1, v2)
Assert the equality of v1 and constant v2.
#define TEST_EQUALITY(v1, v2)
Assert the equality of v1 and v2.
#define TEST_THROW(code, ExceptType)
Assert that the statement 'code' throws the exception 'ExceptType' (otherwise the test fails).
#define ECHO(statement)
Echo the given statement before it is executed.
A simple object table class for Teuchos.
#define TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL(TEST_GROUP, TEST_NAME, TYPE)
Macro for defining a templated unit test with one template parameter.
#define TEUCHOS_UNIT_TEST_TEMPLATE_2_DECL(TEST_GROUP, TEST_NAME, TYPE1, TYPE2)
Macro for defining a templated unit test with two template parameters.
#define TEUCHOS_UNIT_TEST(TEST_GROUP, TEST_NAME)
Macro for defining a (non-templated) unit test.
Null reference error exception class.
Null reference error exception class.
Smart reference counting pointer class for automatic garbage collection.
Range error exception class.
Concrete serial communicator subclass.
Simple object object database.
Exception class for bad cast.
bool nonnull(const boost::shared_ptr< T > &p)
Returns true if p.get()!=NULL.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
const T & getConst(T &t)
Return a constant reference to an object given a non-const reference.