63 void printDoc(
const std::string& docString, std::ostream& out)
const {}
71 std::string
const& paramName,
72 std::string
const& sublistName
76 return "UNDEFINEDTYPE";
90 missingValidatorList = getParametersFromXmlFile(
"MissingValidator.xml"),
94 missingPrototypeList = getParametersFromXmlFile(
"MissingPrototypeValidator.xml"),
98 conflicitingValiIdsList = getParametersFromXmlFile(
"ConflictingValidatorIDs.xml"),
102 stringValidatorBadTagList = getParametersFromXmlFile(
"StringValidatorBadTag.xml"),
106 stringValidatorBadTagList = getParametersFromXmlFile(
"StringToIntegralValidatorBadTag.xml"),
109 #ifdef HAVE_TEUCHOS_DEBUG
116 anyNumberParameterEntryValidator();
117 writerDummyMap.
insert(anyNumberValidator);
133 std::string defaultParameterName =
"default";
134 std::string nonDefaultParameterName =
"non default";
141 myList.
set(
"default",
"",
"parameter for default validator",
143 myList.
set(
"non default",
"blah.txt",
"parameter for non default validator",
144 nonDefaultValidator);
149 rcp_dynamic_cast<const FileNameValidator>(
150 readInPL->getEntry(defaultParameterName).validator(),
true);
151 TEST_EQUALITY(readinDefault->fileMustExist(), defaultValidator->fileMustExist());
154 rcp_dynamic_cast<const FileNameValidator>(
155 readInPL->getEntry(nonDefaultParameterName).validator(),
true);
156 TEST_EQUALITY(readinNonDefault->fileMustExist(), nonDefaultValidator->fileMustExist());
162 std::string defaultParameterName =
"default";
163 std::string nonDefaultParameterName =
"non default";
166 new StringValidator(tuple<std::string>(
"value1",
"cheese",
"kurtis",
"is",
"awesome")));
168 myList.
set(
"non default",
"kurtis",
"parameter for non default validator",
169 nonDefaultValidator);
174 rcp_dynamic_cast<const StringValidator>(
175 readInPL->getEntry(nonDefaultParameterName).validator(),
true);
177 *(nonDefaultValidator->validStringValues()));
183 std::string xmlFileName =
"BoolValidatorList.xml";
184 std::string boolParameterName =
"boolParameterName";
189 myList.
set(boolParameterName,
false,
190 "A parameter with a BoolParameterEntryValidator validator.",
196 rcp_dynamic_cast<const BoolParameterEntryValidator>(
197 readInPL->getEntry(boolParameterName).validator(),
true);
205 std::string xmlFileName =
"AnyNumberValidatorList.xml";
206 std::string defaultParameterName =
"default";
207 std::string nonDefaultParameterName =
"preferred and accepted";
221 myList.
set(defaultParameterName, 10.0,
222 "A parameter with the default AnyNumberValidator on it", defaultValidator);
223 myList.
set(nonDefaultParameterName, 1,
224 "A prameter with an AnyNumberValidator on it that has the preferred and accepted types differnet from the default",
225 nonDefaultValidator);
230 rcp_dynamic_cast<const AnyNumberParameterEntryValidator>(
231 readInPL->getEntry(defaultParameterName).validator(),
true);
233 defaultValidator->isDoubleAllowed());
235 defaultValidator->isIntAllowed());
237 defaultValidator->isStringAllowed());
239 defaultValidator->getPreferredType());
242 rcp_dynamic_cast<const AnyNumberParameterEntryValidator>(
243 readInPL->getEntry(nonDefaultParameterName).validator(),
true);
245 nonDefaultValidator->isDoubleAllowed());
247 nonDefaultValidator->isIntAllowed());
249 nonDefaultValidator->isStringAllowed());
251 nonDefaultValidator->getPreferredType());
257 std::string defaultParameterName =
"default";
258 std::string minmaxParameterName =
"min max";
259 std::string stepPrecParameterName =
"step and prec";
267 myList.
set(defaultParameterName, ( T )6,
"parameter with default validator",
269 myList.
set(minmaxParameterName, ( T )10,
"parameter with min and max validator",
271 myList.
set(stepPrecParameterName, ( T )10,
"parameter with min, max, "
272 "step, and prec validator",
273 stepAndPrecValidator);
279 readInPL->getEntry(defaultParameterName).validator(),
true)->
getMin(),
285 readInPL->getEntry(defaultParameterName).validator(),
true)->
getMax(),
291 readInPL->getEntry(defaultParameterName).validator(),
true)->
getStep()
299 defaultParameterName).validator(),
true)->
getPrecision(),
306 readInPL->getEntry(defaultParameterName).validator(),
true)->
hasMin(),
312 readInPL->getEntry(defaultParameterName).validator(),
true)->
hasMax(),
319 readInPL->getEntry(minmaxParameterName).validator(),
true)->
getMin(),
325 readInPL->getEntry(minmaxParameterName).validator(),
true)->
getMax(),
331 readInPL->getEntry(minmaxParameterName).validator(),
true)->
getStep(),
338 minmaxParameterName).validator(),
true)->
getPrecision(),
345 readInPL->getEntry(minmaxParameterName).validator(),
true)->
hasMin(),
351 readInPL->getEntry(minmaxParameterName).validator(),
true)->
hasMax(),
358 readInPL->getEntry(stepPrecParameterName).validator(),
true)->
getMin(),
364 readInPL->getEntry(stepPrecParameterName).validator(),
true)->
getMax(),
370 readInPL->getEntry(stepPrecParameterName).validator(),
true)->
getStep()
378 stepPrecParameterName).validator(),
true)->
getPrecision(),
388 std::string arrayParameterName =
"array";
391 const T arrayValidatorLen = as<T>(11);
395 myList.
set(arrayParameterName,
396 Array< T >(4, 10),
"array parameter", arrayValidator);
401 rcp_dynamic_cast<const ArrayValidator<EnhancedNumberValidator<T>, T > >(
403 arrayParameterName).validator(),
true)->getPrototype();
405 arrayValidator->getPrototype();
408 readInPrototypeValidator->getMin(),
409 actualPrototypeValidator->getMin()
412 readInPrototypeValidator->getMax(),
413 actualPrototypeValidator->getMax()
416 readInPrototypeValidator->getStep(),
417 actualPrototypeValidator->getStep()
420 readInPrototypeValidator->getPrecision(),
421 actualPrototypeValidator->getPrecision()
424 readInPrototypeValidator->hasMin(),
425 actualPrototypeValidator->hasMin()
428 readInPrototypeValidator->hasMax(),
429 actualPrototypeValidator->hasMax()
435 std::string arrayParameterName =
"array";
438 const T arrayValidatorLen = as<T>(11);
442 myList.
set(arrayParameterName,
448 rcp_dynamic_cast<const TwoDArrayValidator<EnhancedNumberValidator<T>, T > >(
450 arrayParameterName).validator(),
true)->getPrototype();
452 arrayValidator->getPrototype();
455 readInPrototypeValidator->getMin(),
456 actualPrototypeValidator->getMin()
459 readInPrototypeValidator->getMax(),
460 actualPrototypeValidator->getMax()
463 readInPrototypeValidator->getStep(),
464 actualPrototypeValidator->getStep()
467 readInPrototypeValidator->getPrecision(),
468 actualPrototypeValidator->getPrecision()
471 readInPrototypeValidator->hasMin(),
472 actualPrototypeValidator->hasMin()
475 readInPrototypeValidator->hasMax(),
476 actualPrototypeValidator->hasMax()
483 std::string defaultStringToIntegralParameterName =
"defaultsti";
484 std::string stringToIntegralParameterName =
"sti";
488 tuple<std::string>(
"value1",
"value2",
"value3"), stringToIntegralParameterName));
491 tuple<std::string>(
"value3",
"value4",
"value5"),
492 tuple<std::string>(
"the third value",
"the fourth value",
"the fifth value"),
494 stringToIntegralParameterName));
495 myList.
set(defaultStringToIntegralParameterName,
496 "value1",
"parameter with default sti validator", defaultStiValidator);
497 myList.
set(stringToIntegralParameterName,
"value3",
"parameter with sti validator",
504 readInDefaultStiValidator =
505 rcp_dynamic_cast<const StringToIntegralParameterEntryValidator< T > >(
507 defaultStringToIntegralParameterName).validator(),
true);
510 rcp_dynamic_cast<const StringToIntegralParameterEntryValidator< T > >(
512 stringToIntegralParameterName).validator(),
true);
515 *(readInDefaultStiValidator->validStringValues());
517 *(defaultStiValidator->validStringValues());
521 TEST_EQUALITY( readInDefaultStiValidator->getDefaultParameterName(),
522 defaultStiValidator->getDefaultParameterName());
523 for(
int i=0; i<defaultValidStrings.
size(); ++i){
524 TEST_EQUALITY(defaultStiValidator->getIntegralValue(defaultValidStrings[i]),
525 readInDefaultStiValidator->getIntegralValue(defaultValidStrings[i]));
533 *(stiValidator->getStringDocs()));
534 TEST_EQUALITY( readInStiValidator->getDefaultParameterName(),
535 stiValidator->getDefaultParameterName());
536 for(
int i=0; i<validStrings.
size(); ++i){
537 TEST_EQUALITY(stiValidator->getIntegralValue(validStrings[i]),
538 readInStiValidator->getIntegralValue(validStrings[i]));
549 pl.
set(
"string param",
"hi",
"a string param", stringVali);
550 pl.
set(
"string array param", strArray,
551 "a string array parameter", arrayStringVali);
555 rcp_dynamic_cast<const ArrayValidator<StringValidator, std::string> >(
556 readInPL->getEntry(
"string array param").validator(),
true);
557 TEST_ASSERT(readInPL->getEntry(
"string param").validator()
558 == inArrayValidator->getPrototype());
562 #define FULL_NUMBER_TYPE_TEST( T ) \
563 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, EnhancedNumberValidatorConverter, T ) \
564 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, NumberArrayValidatorConverterTest, T ) \
565 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, StringToIntegralConverterTest, T )
567 #define NONINTEGRAL_NUMBER_TYPE_TEST( T ) \
568 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, EnhancedNumberValidatorConverter, T ) \
569 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, NumberArrayValidatorConverterTest, T )
571 typedef unsigned int uint;
572 typedef unsigned short ushort;
573 typedef unsigned long ulong;
579 typedef long long int llint;
#define TEST_THROW(code, ExceptType)
Assert that the statement 'code' throws the exception 'ExceptType' (otherwise the test fails).
#define TEST_COMPARE_ARRAYS(a1, a2)
Assert that a1.size()==a2.size() and a[i]==b[i], i=0....
Templated Parameter List class.
A collection of standard ValidatorXMLConverters.
A database for ValidatorXMLConverters.
Simple helper functions that make it easy to read and write XML to and from a parameterlist.
A collection of Exceptions that can be potentially thrown when converting a ParameterList to and from...
Writes a ParameterList to an XML object.
#define FULL_NUMBER_TYPE_TEST(T)
#define NONINTEGRAL_NUMBER_TYPE_TEST(T)
Determines the types that are accepted.
AcceptedTypes & allowDouble(bool _allowDouble)
Set allow a double value or not.
Standard implementation of a ParameterEntryValidator that accepts numbers from a number of different ...
Converts AnyNumberParameterEntryValidators to and from XML.
Convience class for EnhancedNumberValidators that are to be applied to arrays.
Thrown when xml tag is encountered that is either unrecognized or inappropriate for a given context.
Thrown when a bad validator xml converter is used.
Standard implementation of a BoolParameterEntryValidator that accepts bool values (true/false) or str...
Thrown when the ValidatorXMLConverterDB can't find an appropriate converter.
Constructs a CantFindParameterEntryConverterException.
Class uesd to validate a particular type of number.
T getMax() const
Gets the maximum acceptable value for the validator.
T getStep() const
Gets the step being used for the validator.
unsigned short getPrecision() const
Gets the precision specified for the validator.
bool hasMax() const
Determines whether or not the validator has a maximum value.
T getMin() const
Gets the minimum acceptable value for the validator.
bool hasMin() const
Determines whether or not the validator has a minimum value.
Validate a file name entry.
Maps Validators to integers.
Thrown when a referenced validator can't be found.
Abstract interface for an object that can validate a ParameterEntry's value.
This object is held as the "value" in the Teuchos::ParameterList std::map.
RCP< const ParameterEntryValidator > validator() const
Return the (optional) validator object.
A list of parameters of arbitrary type.
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
Set a parameter whose value has type T.
ParameterEntry & getEntry(const std::string &name)
Retrieves an entry with the name name.
Smart reference counting pointer class for automatic garbage collection.
bool is_null() const
Returns true if the underlying pointer is null.
Standard implementation of a ParameterEntryValidator that maps from a list of strings to an enum or i...
Converts StringValidators to and from XML.
A simple validator that only allows certain string values to be choosen or simply enforces that a par...
Convience class for EnhancedNumberValidators that are to be applied to TwoDArray.
A thin wrapper around the Array class which causes it to be interpreted as a 2D Array.
static std::string name()
void validate(ParameterEntry const &entry, std::string const ¶mName, std::string const &sublistName) const
Validate a parameter entry value and throw std::exception (with a great error message) if validation ...
ValidStringsList validStringValues() const
Return an array of strings of valid values if applicable.
const std::string getXMLTypeName() const
Get a string that should be used as a value of the type attribute when serializing it to XML.
void printDoc(const std::string &docString, std::ostream &out) const
Print documentation for this parameter.
static void printKnownConverters(std::ostream &out)
prints the xml tags associated with all known converters
static RCP< const ValidatorXMLConverter > getConverter(const ParameterEntryValidator &validator)
Get an appropriate ValidatorXMLConverter given a Validator.
XMLObject fromValidatortoXML(const RCP< const ParameterEntryValidator > validator, const ValidatortoIDMap &validatorIDsMap, bool assignedID=true) const
Converters a given ParameterEntryValidator to XML.
RCP< ParameterEntryValidator > fromXMLtoValidator(const XMLObject &xmlObj, const IDtoValidatorMap &validatorIDsMap) const
Converts a given XMLObject to a ParameterEntryValidator.
A class for mapping validators to integers.
void insert(RCP< const ParameterEntryValidator > toInsert)
inserts an IDValidatorPair into the map.
Representation of an XML data tree. XMLObject is a ref-counted handle to a XMLObjectImplem object,...
TEST_ASSERT(castedDep1->getValuesAndValidators().size()==2)
TEUCHOS_UNIT_TEST(ConstNonconstObjectContainer, create)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
TEUCHOS_UNIT_TEST_TEMPLATE_1_DECL(RCPNodeHandle, basicConstruct_owns_mem, T)
TEST_EQUALITY(rcp_dynamic_cast< const EnhancedNumberValidator< double > >(castedDep1->getValuesAndValidators().find("val1") ->second, true) ->getMax(), double1Vali->getMax())
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT RCP< ParameterList > writeThenReadPL(ParameterList &myList)
Write a parameter list to xml and then read that xml back in via a string. The intent of this functio...