Newer
Older
#ifndef PROPERTYWITHVALUETEST_H_
#define PROPERTYWITHVALUETEST_H_
#include <cxxtest/TestSuite.h>
#include "MantidKernel/PropertyWithValue.h"
#include "MantidKernel/MandatoryValidator.h"
#include "MantidKernel/BoundedValidator.h"
#include "MantidKernel/ListValidator.h"
using namespace Mantid::Kernel;
class PropertyWithValueTest : public CxxTest::TestSuite
{
public:
Russell Taylor
committed
static PropertyWithValueTest *createSuite() { return new PropertyWithValueTest(); }
static void destroySuite(PropertyWithValueTest *suite) { delete suite; }
PropertyWithValueTest()
{
iProp = new PropertyWithValue<int>("intProp", 1);
dProp = new PropertyWithValue<double>("doubleProp", 9.99);
sProp = new PropertyWithValue<std::string>("stringProp", "theValue");
lProp = new PropertyWithValue<long long>("int64Prop",-9876543210987654LL);
Russell Taylor
committed
Steve Williams
committed
~PropertyWithValueTest()
{
delete iProp;
delete dProp;
delete sProp;
Steve Williams
committed
}
void testConstructor()
{
// Test that all the base class member variables are correctly assigned to
TS_ASSERT( ! iProp->name().compare("intProp") );
TS_ASSERT( ! iProp->documentation().compare("") );
TS_ASSERT( typeid( int ) == *iProp->type_info() );
TS_ASSERT( iProp->isDefault() );
TS_ASSERT( ! dProp->name().compare("doubleProp") );
TS_ASSERT( ! dProp->documentation().compare("") );
TS_ASSERT( typeid( double ) == *dProp->type_info() );
TS_ASSERT( dProp->isDefault() );
TS_ASSERT( ! sProp->name().compare("stringProp") );
TS_ASSERT( ! sProp->documentation().compare("") );
TS_ASSERT( typeid( std::string ) == *sProp->type_info() );
TS_ASSERT( sProp->isDefault() );
TS_ASSERT( ! lProp->name().compare("int64Prop") );
TS_ASSERT( ! lProp->documentation().compare("") );
TS_ASSERT( typeid( long long ) == *lProp->type_info() );
TS_ASSERT( lProp->isDefault() );
Russell Taylor
committed
TS_ASSERT( ! iProp->value().compare("1") );
Gigg, Martyn Anthony
committed
// Note that some versions of boost::lexical_cast > 1.34 give a string such as
// 9.9900000000000002 rather than 9.99. Converting back to a double however does
// still give the correct 9.99.
TS_ASSERT( ! dProp->value().substr(0,4).compare("9.99") );
TS_ASSERT( ! sProp->value().compare("theValue") );
TS_ASSERT( ! lProp->value().compare("-9876543210987654") );
void testSetValue()
{
PropertyWithValue<int> i("test", 1);
TS_ASSERT_EQUALS( i.setValue("10"), "" );
TS_ASSERT_EQUALS( i, 10 );
Steve Williams
committed
TS_ASSERT_EQUALS( i.setValue("9.99"),
"Could not set property test. Can not convert \"9.99\" to " + i.type() );
Steve Williams
committed
TS_ASSERT_EQUALS( i.setValue("garbage"),
"Could not set property test. Can not convert \"garbage\" to " + i.type() );
Russell Taylor
committed
PropertyWithValue<double> d("test", 5.55);
TS_ASSERT_EQUALS( d.setValue("-9.99"), "" );
TS_ASSERT_EQUALS( d, -9.99 );
TS_ASSERT_EQUALS( d.setValue("0"), "" );
TS_ASSERT_EQUALS( d, 0 );
Steve Williams
committed
TS_ASSERT_EQUALS( d.setValue("garbage"),
"Could not set property test. Can not convert \"garbage\" to " + d.type());
Russell Taylor
committed
PropertyWithValue<std::string> s("test", "test");
TS_ASSERT_EQUALS( s.setValue("-9.99"), "" );
TS_ASSERT_EQUALS( s.operator()(), "-9.99" );
TS_ASSERT_EQUALS( s.setValue("0"), "" );
TS_ASSERT_EQUALS( s.operator()(), "0" );
TS_ASSERT_EQUALS( s.setValue("it works"), "" );
TS_ASSERT_EQUALS( s.operator()(), "it works" );
PropertyWithValue<long long> l("test", 1);
TS_ASSERT_EQUALS( l.setValue("10"), "" );
TS_ASSERT_EQUALS( l, 10 );
TS_ASSERT_EQUALS( l.setValue("1234567890123456"), "" );
TS_ASSERT_EQUALS( l, 1234567890123456LL );
TS_ASSERT_EQUALS( l.setValue("9.99"),
"Could not set property test. Can not convert \"9.99\" to " + l.type() );
TS_ASSERT_EQUALS( l.setValue("garbage"),
"Could not set property test. Can not convert \"garbage\" to " + l.type() );
Steve Williams
committed
{
PropertyWithValue<std::string> s("defau=theDef", "theDef");
TS_ASSERT_EQUALS( s.getDefault(), "theDef" );
TS_ASSERT_EQUALS( s.setValue("somethingElse"), "" );
TS_ASSERT_EQUALS( s.getDefault(), "theDef" );
Steve Williams
committed
PropertyWithValue<int> i("defau1", 3);
TS_ASSERT_EQUALS( i.getDefault(), "3" );
TS_ASSERT_EQUALS( i.setValue("5"), "" );
TS_ASSERT_EQUALS( i.getDefault(), "3" );
Steve Williams
committed
TS_ASSERT_EQUALS( i.setValue("garbage"),
"Could not set property defau1. Can not convert \"garbage\" to " + i.type() );
TS_ASSERT_EQUALS( i.getDefault(), "3" );
PropertyWithValue<long long> l("defau1", 987987987987LL);
TS_ASSERT_EQUALS( l.getDefault(), "987987987987" );
TS_ASSERT_EQUALS( l.setValue("5"), "" );
TS_ASSERT_EQUALS( l.getDefault(), "987987987987" );
TS_ASSERT_EQUALS( l.setValue("garbage"),
"Could not set property defau1. Can not convert \"garbage\" to " + l.type() );
TS_ASSERT_EQUALS( l.getDefault(), "987987987987" );
Steve Williams
committed
Gigg, Martyn Anthony
committed
// Note that some versions of boost::lexical_cast > 1.34 give a string such as
// 9.9900000000000002 rather than 9.99. Converting back to a double however does
// still give the correct 9.99.
Steve Williams
committed
PropertyWithValue<double> d("defau3.33", 3.33);
TS_ASSERT_EQUALS( d.getDefault().substr(0,4), "3.33" );
TS_ASSERT_EQUALS( d.setValue("1.6"), "" );
TS_ASSERT_EQUALS( d.getDefault().substr(0,4), "3.33" );
Steve Williams
committed
TS_ASSERT_EQUALS( d.setValue("garbage"),
"Could not set property defau3.33. Can not convert \"garbage\" to " + d.type() );
TS_ASSERT_EQUALS( d.getDefault().substr(0,4), "3.33" );
Steve Williams
committed
}
void testCopyConstructor()
{
PropertyWithValue<int> i = *iProp;
TS_ASSERT( ! i.name().compare("intProp") );
TS_ASSERT( ! i.documentation().compare("") );
TS_ASSERT( typeid( int ) == *i.type_info() );
TS_ASSERT( i.isDefault() );
TS_ASSERT_EQUALS( i, 1 );
Russell Taylor
committed
Russell Taylor
committed
PropertyWithValue<double> d = *dProp;
TS_ASSERT( ! d.name().compare("doubleProp") );
TS_ASSERT( ! d.documentation().compare("") );
TS_ASSERT( typeid( double ) == *d.type_info() );
TS_ASSERT( d.isDefault() );
TS_ASSERT_EQUALS( d, 9.99 );
Russell Taylor
committed
Russell Taylor
committed
PropertyWithValue<std::string> s = *sProp;
TS_ASSERT( ! s.name().compare("stringProp") );
TS_ASSERT( ! s.documentation().compare("") );
TS_ASSERT( typeid( std::string ) == *s.type_info() );
TS_ASSERT( s.isDefault() );
TS_ASSERT_EQUALS( sProp->operator()(), "theValue" );
PropertyWithValue<long long> l = *lProp;
TS_ASSERT( ! lProp->name().compare("int64Prop") );
TS_ASSERT( ! lProp->documentation().compare("") );
TS_ASSERT( typeid( long long ) == *lProp->type_info() );
TS_ASSERT( lProp->isDefault() );
TS_ASSERT_EQUALS( l, -9876543210987654LL );
Russell Taylor
committed
void testCopyAssignmentOperator()
{
Russell Taylor
committed
PropertyWithValue<int> i("Prop1",5);
i = *iProp;
TS_ASSERT( ! i.name().compare("Prop1") );
TS_ASSERT( ! i.documentation().compare("") );
TS_ASSERT( ! i.isDefault() );
TS_ASSERT_EQUALS( i, 1 );
Russell Taylor
committed
Russell Taylor
committed
PropertyWithValue<double> d("Prop2",5.5);
d = *dProp;
TS_ASSERT( ! d.name().compare("Prop2") );
TS_ASSERT( ! d.documentation().compare("") );
TS_ASSERT( ! d.isDefault() );
TS_ASSERT_EQUALS( d, 9.99 );
Russell Taylor
committed
Russell Taylor
committed
PropertyWithValue<std::string> s("Prop3","test");
s = *sProp;
TS_ASSERT( ! s.name().compare("Prop3") );
TS_ASSERT( ! s.documentation().compare("") );
TS_ASSERT( ! s.isDefault() );
TS_ASSERT_EQUALS( sProp->operator()(), "theValue" );
PropertyWithValue<long long> l("Prop4",5);
l = *lProp;
TS_ASSERT( ! l.name().compare("Prop4") );
TS_ASSERT( ! l.documentation().compare("") );
TS_ASSERT( ! l.isDefault() );
TS_ASSERT_EQUALS( l, -9876543210987654LL );
Russell Taylor
committed
PropertyWithValue<int> i("Prop1",5);
TS_ASSERT_EQUALS( i = 2, 2 );
TS_ASSERT( !i.isDefault() );
Steve Williams
committed
i = 5;
TS_ASSERT( i.isDefault() );
Steve Williams
committed
PropertyWithValue<double> d("Prop2",5.5);
TS_ASSERT_EQUALS( d = 7.77, 7.77 );
TS_ASSERT( !d.isDefault() );
Steve Williams
committed
d = 5.5;
TS_ASSERT( d.isDefault() );
Steve Williams
committed
Russell Taylor
committed
PropertyWithValue<std::string> s("Prop3", "testing");
s = "test";
TS_ASSERT_EQUALS( s.operator()(), "test" );
TS_ASSERT( !s.isDefault() );
Steve Williams
committed
s = "testing";
TS_ASSERT( i.isDefault() );
PropertyWithValue<long long> l("Prop4",987987987987LL);
TS_ASSERT_EQUALS( l = 2, 2 );
TS_ASSERT( !l.isDefault() );
TS_ASSERT( l.isDefault() );
Russell Taylor
committed
Russell Taylor
committed
PropertyWithValue<int> ii("Prop1.1",6);
i = ii = 10;
TS_ASSERT_EQUALS( ii, 10 );
TS_ASSERT_EQUALS( i, 10 );
Russell Taylor
committed
Russell Taylor
committed
PropertyWithValue<double> dd("Prop2.2",6.5);
d = dd = 1.111;
TS_ASSERT_EQUALS( dd, 1.111 );
TS_ASSERT_EQUALS( d, 1.111 );
Russell Taylor
committed
PropertyWithValue<std::string> ss("Prop3.3", "testing2");
Russell Taylor
committed
s = ss = "tested";
TS_ASSERT_EQUALS( ss.operator()(), "tested" );
TS_ASSERT_EQUALS( s.operator()(), "tested" );
PropertyWithValue<long long> ll("Prop4.4",6);
l = ll = 789789789789LL;
TS_ASSERT_EQUALS( ll, 789789789789LL );
TS_ASSERT_EQUALS( l, 789789789789LL );
TS_ASSERT_EQUALS( iProp->operator()(), 1 );
TS_ASSERT_EQUALS( dProp->operator()(), 9.99 );
TS_ASSERT_EQUALS( sProp->operator()(), "theValue" );
TS_ASSERT_EQUALS( lProp->operator()(), -9876543210987654LL );
void testPlusEqualOperator()
{
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
PropertyWithValue< std::vector<int> > * pv = new PropertyWithValue< std::vector<int> >("some_array", v);
PropertyWithValue< std::vector<int> > * pv2 = new PropertyWithValue< std::vector<int> >("some_array", v);
(*pv) += pv2;
TS_ASSERT_EQUALS(pv->value(), "1,2,3,1,2,3")
}
void testPlusEqualOperatorOnYourself()
{
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
PropertyWithValue< std::vector<int> > * pv = new PropertyWithValue< std::vector<int> >("some_array", v);
(*pv) += pv;
TS_ASSERT_EQUALS(pv->value(), "1,2,3,1,2,3")
}
int i = *iProp;
TS_ASSERT_EQUALS( i, 1 );
double d = *dProp;
TS_ASSERT_EQUALS( d, 9.99 );
std::string str(*sProp);
TS_ASSERT( ! str.compare("theValue") );
long long l = *lProp;
TS_ASSERT_EQUALS( l, -9876543210987654LL );
Russell Taylor
committed
TS_ASSERT( iProp->allowedValues().empty() );
TS_ASSERT( dProp->allowedValues().empty() );
TS_ASSERT( sProp->allowedValues().empty() );
TS_ASSERT( lProp->allowedValues().empty() );
// Tests using a ListValidator are below
Russell Taylor
committed
Russell Taylor
committed
{
TS_ASSERT_DIFFERS( dynamic_cast<Property*>(iProp), static_cast<Property*>(0) );
Russell Taylor
committed
PropertyWithValue<int> i("Prop1",5);
Property *p = dynamic_cast<Property*>(&i);
TS_ASSERT( ! p->name().compare("Prop1") );
TS_ASSERT( ! p->value().compare("5") );
TS_ASSERT_EQUALS( p->setValue("10"), "" );
TS_ASSERT( ! p->value().compare("10") );
TS_ASSERT_EQUALS( i, 10 );
Russell Taylor
committed
TS_ASSERT_DIFFERS( dynamic_cast<Property*>(dProp), static_cast<Property*>(0) );
Russell Taylor
committed
PropertyWithValue<double> d("Prop2",5.5);
Property *pp = dynamic_cast<Property*>(&d);
TS_ASSERT( ! pp->name().compare("Prop2") );
TS_ASSERT( ! pp->value().compare("5.5") );
TS_ASSERT_EQUALS( pp->setValue("7.777"), "" );
Gigg, Martyn Anthony
committed
// Note that some versions of boost::lexical_cast > 1.34 give a string such as
// 9.9900000000000002 rather than 9.99. Converting back to a double however does
// still give the correct 9.99.
TS_ASSERT( ! pp->value().substr(0,5).compare("7.777") );
TS_ASSERT_EQUALS( d, 7.777 );
Russell Taylor
committed
TS_ASSERT_DIFFERS( dynamic_cast<Property*>(sProp), static_cast<Property*>(0) );
Russell Taylor
committed
PropertyWithValue<std::string> s("Prop3", "testing");
Property *ppp = dynamic_cast<Property*>(&s);
TS_ASSERT( ! ppp->name().compare("Prop3") );
TS_ASSERT( ! ppp->value().compare("testing") );
TS_ASSERT_EQUALS( ppp->setValue("newValue"), "" );
TS_ASSERT( ! ppp->value().compare("newValue") );
TS_ASSERT_EQUALS( s.operator()(), "newValue" );
TS_ASSERT_DIFFERS( dynamic_cast<Property*>(lProp), static_cast<Property*>(0) );
PropertyWithValue<long long> l("Prop4",789789789789LL);
Property *pppp = dynamic_cast<Property*>(&l);
TS_ASSERT( ! pppp->name().compare("Prop4") );
TS_ASSERT( ! pppp->value().compare("789789789789") );
TS_ASSERT_EQUALS( pppp->setValue("10"), "" );
TS_ASSERT( ! pppp->value().compare("10") );
TS_ASSERT_EQUALS( l, 10 );
PropertyWithValue<std::string> p("test", "", new MandatoryValidator<std::string>());
TS_ASSERT_EQUALS( p.isValid(), "A value must be entered for this parameter");
TS_ASSERT_EQUALS( p.setValue("I'm here"), "" );
TS_ASSERT_EQUALS(p.isValid(), "" );
TS_ASSERT_EQUALS( p.setValue(""), "A value must be entered for this parameter" );
TS_ASSERT_EQUALS(p.value(),"I'm here");
}
Steve Williams
committed
std::string start("Selected value "), end(")"),
greaterThan(" is > the upper bound ("),
//int tests
PropertyWithValue<int> pi("test", 11, new BoundedValidator<int>(1,10));
TS_ASSERT_EQUALS(pi.isValid(), start + "11" + greaterThan + "10" + end);
TS_ASSERT_EQUALS( pi.setValue("0"), start + "0" + lessThan + "1" + end );
Steve Williams
committed
TS_ASSERT_EQUALS(pi.value(),"11");
TS_ASSERT_EQUALS(pi.isValid(), start + "11" + greaterThan + "10" + end );
Steve Williams
committed
TS_ASSERT_EQUALS( pi.setValue("1"), "" );
Steve Williams
committed
TS_ASSERT_EQUALS( pi.setValue("10"), "" );
TS_ASSERT_EQUALS( pi.setValue("11"), start + "11" + greaterThan + "10" + end );
Steve Williams
committed
TS_ASSERT_EQUALS(pi.value(),"10");
TS_ASSERT_EQUALS(pi.isValid(), "");
Steve Williams
committed
std::string errorMsg = pi.setValue("");
//when the string can't be converted to the correct type we get a system dependent meassage that in this case should look like the string below
TS_ASSERT_EQUALS( errorMsg.find("Could not set property test. Can not convert \"\" to ",0), 0);
Steve Williams
committed
PropertyWithValue<double> pd("test", 11.0, new BoundedValidator<double>(1.0,10.0));
TS_ASSERT_EQUALS(pd.isValid(), start + "11" + greaterThan + "10" + end);
TS_ASSERT_EQUALS( pd.setValue("0.9"), start + "0.9" + lessThan + "1" + end );
Steve Williams
committed
TS_ASSERT_EQUALS(pd.value(),"11");
TS_ASSERT_EQUALS(pd.isValid(), start + "11" + greaterThan + "10" + end );
Steve Williams
committed
TS_ASSERT_EQUALS( pd.setValue("1"), "" );
Steve Williams
committed
TS_ASSERT_EQUALS( pd.setValue("10"), "" );
TS_ASSERT_EQUALS( pd.setValue("10.1"), start + "10.1" + greaterThan + "10" + end );
Steve Williams
committed
TS_ASSERT_EQUALS(pd.value(),"10");
TS_ASSERT_EQUALS(pd.isValid(), "");
PropertyWithValue<std::string> ps("test", "", new BoundedValidator<std::string>("B","T"));
TS_ASSERT_EQUALS(ps.isValid(), start + "" + lessThan + "B" + end);
TS_ASSERT_EQUALS( ps.setValue("AZ"), start + "AZ" + lessThan + "B" + end );
Steve Williams
committed
TS_ASSERT_EQUALS(ps.value(),"");
TS_ASSERT_EQUALS(ps.isValid(), start + "" + lessThan + "B" + end);
Steve Williams
committed
TS_ASSERT_EQUALS( ps.setValue("B"), "" );
Steve Williams
committed
TS_ASSERT_EQUALS( ps.setValue("T"), "" );
TS_ASSERT_EQUALS( ps.setValue("TA"), start + "TA" + greaterThan + "T" + end);
Steve Williams
committed
TS_ASSERT_EQUALS(ps.value(),"T");
TS_ASSERT_EQUALS(ps.isValid(), "");
PropertyWithValue<long long> pl("test", 987987987987LL, new BoundedValidator<long long>(0,789789789789LL));
TS_ASSERT_EQUALS( pl.isValid(), start + "987987987987" + greaterThan + "789789789789" + end);
TS_ASSERT_EQUALS( pl.setValue("-1"), start + "-1" + lessThan + "0" + end );
TS_ASSERT_EQUALS( pl.value(),"987987987987");
TS_ASSERT_EQUALS( pl.setValue("0"), "" );
TS_ASSERT_EQUALS( pl.isValid(), "");
TS_ASSERT_EQUALS( pl.setValue("789789789789"), "" );
TS_ASSERT_EQUALS( pl.isValid(), "");
TS_ASSERT_EQUALS( pl.setValue("789789789790"), start + "789789789790" + greaterThan + "789789789789" + end );
TS_ASSERT_EQUALS( pl.value(),"789789789789");
}
Steve Williams
committed
std::string start("The value '"),
end("' is not in the list of allowed values");
Steve Williams
committed
std::vector<std::string> empt, vec;
PropertyWithValue<std::string> empty("test","", new ListValidator(empt));
TS_ASSERT_EQUALS( empty.isValid(), "Select a value" );
vec.push_back("one");
vec.push_back("two");
PropertyWithValue<std::string> p("test","", new ListValidator(vec));
TS_ASSERT_EQUALS( p.isValid(), "Select a value" );
TS_ASSERT_EQUALS( p.setValue("one"), "" );
TS_ASSERT_EQUALS( p.isValid(), "" );
TS_ASSERT_EQUALS( p.setValue("two"), "" );
TS_ASSERT_EQUALS( p.isValid(), "" );
TS_ASSERT_EQUALS( p.setValue("three"), "The value \"three\" is not in the list of allowed values" );
TS_ASSERT_EQUALS( p.value(), "two" );
TS_ASSERT_EQUALS( p.isValid(), "" );
std::set<std::string> vals;
TS_ASSERT_THROWS_NOTHING( vals = p.allowedValues() );
TS_ASSERT_EQUALS( vals.size(), 2 );
TS_ASSERT( vals.count("one") );
TS_ASSERT( vals.count("two") );
Gigg, Martyn Anthony
committed
Steve Williams
committed
void testIsDefault()
{
TS_ASSERT_EQUALS( iProp->setValue("1"), "" );
//1 is was the initial value and so the next test should pass
TS_ASSERT( iProp->isDefault() );
Steve Williams
committed
TS_ASSERT_EQUALS( iProp->setValue("2"), "" );
TS_ASSERT( !iProp->isDefault() ) ;
Steve Williams
committed
}
Janik Zikovsky
committed
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
//class A
//{
//public:
// virtual A& fun(const A& rhs)
// {
// std::cout << "fun() called from class A\n";
// }
//};
//
//template <typename T>
//class B : public A
//{
//public:
// B(T value) : m_value(value)
// {
//
// }
//
// virtual A& fun(const A& rhs)
// {
// std::cout << "fun() called from class B<T>. I contain " << m_value << " and the parameter contains " << rhs.m_value << "\n";
// }
// T m_value;
//};
//
// void testTemplates()
// {
// std::cout << "\n\n";
// A myA;
// B<int> myB(12);
// myA.fun(myA);
// myB.fun(myB);
//
// A * myAptr = new A();
// A * myBptr = new B<int>(23);
//
// myAptr->fun(*myAptr);
// myBptr->fun(*myBptr);
//
// }
void testAdditionOperator()
{
Janik Zikovsky
committed
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
Property * p1;
Property * p2;
// --- Numbers are added together ----
p1 = new PropertyWithValue<double>("Prop1", 12.0);
p2 = new PropertyWithValue<double>("Prop1", 23.0);
(*p1) += p2;
PropertyWithValue<double> * pd = dynamic_cast< PropertyWithValue<double> * >(p1);
d = *pd;
TS_ASSERT_EQUALS( d, 35.0 );
p1 = new PropertyWithValue<int>("Prop1", 34);
p2 = new PropertyWithValue<int>("Prop1", 62);
(*p1) += p2;
PropertyWithValue<int> * pi = dynamic_cast< PropertyWithValue<int> * >(p1);
i = *pi;
TS_ASSERT_EQUALS( i, 96 );
// --- Vectors are appennded together ----
std::vector<int> v1, v2;
v1.push_back(1); v1.push_back(2); v1.push_back(3);
v1.push_back(4); v1.push_back(5); v1.push_back(6);
p1 = new PropertyWithValue< std::vector<int> >("Prop1", v1);
p2 = new PropertyWithValue< std::vector<int> >("Prop1", v2);
(*p1) += p2;
PropertyWithValue< std::vector<int> > * pvi = dynamic_cast< PropertyWithValue< std::vector<int> > * >(p1);
std::vector<int> v3 = *pvi;
TS_ASSERT_EQUALS( v3.size(), 6 );
}
Steve Williams
committed
PropertyWithValue<int> *iProp;
PropertyWithValue<double> *dProp;
PropertyWithValue<std::string> *sProp;
PropertyWithValue<long long> *lProp;
};
#endif /*PROPERTYWITHVALUETEST_H_*/