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 ) \
563TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, EnhancedNumberValidatorConverter, T ) \
564TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, NumberArrayValidatorConverterTest, T ) \
565TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, StringToIntegralConverterTest, T )
567#define NONINTEGRAL_NUMBER_TYPE_TEST( T ) \
568TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, EnhancedNumberValidatorConverter, T ) \
569TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT(Teuchos_Validator, NumberArrayValidatorConverterTest, T )
571typedef unsigned int uint;
572typedef unsigned short ushort;
573typedef unsigned long ulong;
579typedef long long int llint;
#define TEST_ASSERT(v1)
Assert the given statement is true.
#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 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.
#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(TEST_GROUP, TEST_NAME)
Macro for defining a (non-templated) unit test.
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.
Takes a validator, wraps it, and applies it to an array.
Replacement for std::vector that is compatible with the Teuchos Memory Management classes.
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,...
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
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...