59 typedef unsigned short int ushort;
60 typedef unsigned int uint;
61 typedef unsigned long int ulong;
63 typedef long long int llint;
64 typedef unsigned long long int ullint;
66 #define BASIC_DEPENDENCY_TEST( \
67 DEPENDENCY, DEPTYPE, NUM_DEPENDEES, NUM_DEPENDENTS) \
68 std::string depXMLTag##DEPENDENCY = \
69 DummyObjectGetter< DEPTYPE >::getDummyObject()->getTypeAttributeValue(); \
71 TEST_ASSERT(DEPENDENCY->getTypeAttributeValue() == depXMLTag##DEPENDENCY ); \
72 TEST_ASSERT(DEPENDENCY->getDependents().size() == NUM_DEPENDENTS); \
73 TEST_ASSERT(DEPENDENCY->getDependees().size() == NUM_DEPENDEES); \
75 #define VERIFY_DEPENDENT(DEPENDENCY, DEPENDENT) \
77 DEPENDENCY->getDependents().find(DEPENDENT) \
79 DEPENDENCY->getDependents().end() \
82 #define VERIFY_DEPENDEE(DEPENDENCY, DEPENDEE) \
84 DEPENDENCY->getDependees().find(DEPENDEE) \
86 DEPENDENCY->getDependees().end()); \
88 #define CREATE_DEPENDEE(POSTFIX, VALUE) \
89 RCP<ParameterEntry> dependeeParam##POSTFIX = rcp( \
90 new ParameterEntry( VALUE ));
92 #define CREATE_DEPENDENT(POSTFIX, VALUE) \
93 RCP<ParameterEntry> dependentParam##POSTFIX = \
94 rcp(new ParameterEntry( VALUE )); \
96 #define EXCEPTION_TEST_BOILERPLATE(DEPENDEE_VAL, DEPENDENT_VAL) \
97 CREATE_DEPENDEE(1, DEPENDEE_VAL); \
98 CREATE_DEPENDEE(Extra, DEPENDEE_VAL); \
99 CREATE_DEPENDENT(1, DEPENDENT_VAL); \
101 XMLParameterListWriter::EntryIDsMap writerEntryMap; \
102 writerEntryMap[dependeeParam1] = 1; \
103 writerEntryMap[dependentParam1] = 2; \
104 writerEntryMap[dependeeParamExtra] = 3; \
105 ValidatortoIDMap writerValiMap; \
107 XMLParameterListReader::EntryIDsMap readerEntryMap; \
108 readerEntryMap[1] = dependeeParam1; \
109 readerEntryMap[2] = dependentParam1; \
110 readerEntryMap[3] = dependeeParamExtra; \
111 IDtoValidatorMap readerValiMap; \
113 #define CONVERT_DEP_TO_XML(DEPENDENCY) \
114 XMLObject DEPENDENCY##XML = DependencyXMLConverterDB::convertDependency( \
115 DEPENDENCY , writerEntryMap, writerValiMap); \
117 #define TOO_MANY_DEPENDEE_TEST(DEPENDENCY) \
118 XMLObject extraDependee(DependencyXMLConverter::getDependeeTagName()); \
119 extraDependee.addAttribute<ParameterEntry::ParameterEntryID>( \
120 DependencyXMLConverter::getParameterIdAttributeName(), \
121 writerEntryMap[dependeeParamExtra]); \
122 XMLObject tooManyTempXML = DEPENDENCY##XML.deepCopy(); \
123 tooManyTempXML.addChild(extraDependee); \
126 DependencyXMLConverterDB::convertXML( \
127 tooManyTempXML , readerEntryMap, readerValiMap), \
128 TooManyDependeesException); \
130 #define COPY_DEPTAG_WITHOUT_CHILD(TAG, CHILDTAG, NEWTAG) \
131 XMLObject NEWTAG(TAG.getTag()); \
132 NEWTAG.addAttribute( \
133 DependencyXMLConverter::getTypeAttributeName(), \
134 TAG.getAttribute(DependencyXMLConverter::getTypeAttributeName())); \
135 for(int i =0; i< TAG.numChildren(); i++){ \
136 if(TAG.getChild(i).getTag() != CHILDTAG) \
138 NEWTAG.addChild(TAG.getChild(i).deepCopy()); \
143 #define INSERT_VALIDATOR_TO_MAPS(VALIDATOR) \
144 writerValiMap.insert( VALIDATOR ); \
145 readerValiMap.insert( \
146 IDtoValidatorMap::IDValidatorPair( \
147 writerValiMap.find( VALIDATOR )->second, VALIDATOR )); \
179 std::string dependee1 =
"string param";
202 tuple<std::string>(
"val1",
"val2");
212 myDepSheet->addDependency(complexStringVisDep);
244 rcp_dynamic_cast<StringVisualDependency>(
readinDep1,
true);
246 rcp_dynamic_cast<StringVisualDependency>(
readinDep2,
true);
258 std::string dependee1 =
"bool param";
318 rcp_dynamic_cast<BoolVisualDependency>(
readinDep1,
true);
320 rcp_dynamic_cast<BoolVisualDependency>(
readinDep2,
true);
327 Teuchos_Dependencies,
328 NumberVisualDepSerialization,
331 std::string dependee1 =
"num param";
408 castedFunction->getModifiyingOperand(),
409 subFunction->getModifiyingOperand());
412 #define NUMBER_VIS_TEST(T) \
413 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( \
414 Teuchos_Dependencies, NumberVisualDepSerialization, T)
422 std::string dependee1 =
"string param";
424 std::string dependee3 =
"int param";
427 std::string dependent3 =
"dependent param3";
438 tuple<std::string>(
"steve",
"blah",
"your face");
450 tuple<RCP<const Condition> >(boolCon, numberCon);
495 *(
readInDepSheet->getDependenciesForParameter(readinDependee3)->begin());
510 rcp_dynamic_cast<ConditionVisualDependency>(
readinDep1,
true);
512 rcp_dynamic_cast<ConditionVisualDependency>(
readinDep2,
true);
518 simpleConVisDep->
getCondition()->getTypeAttributeValue());
520 complexConVisDep->
getCondition()->getTypeAttributeValue());
523 #define ArrayModifierTest(DEPENDENCYTYPE, ARRAY_TYPE) \
524 TEUCHOS_UNIT_TEST_TEMPLATE_2_DECL( \
525 Teuchos_Dependencies, \
526 DEPENDENCYTYPE##_serialization_tests, \
530 std::string dependee1 = "dependee param"; \
531 std::string dependee2 = "dependee param2"; \
532 std::string dependent1 = "dependent param1"; \
533 std::string dependent2 = "dependent param2"; \
534 ParameterList myDepList("Array modifier dep list"); \
535 RCP<DependencySheet> myDepSheet = rcp(new DependencySheet); \
536 myDepList.set(dependee1, ScalarTraits<DependeeType>::one()); \
537 myDepList.set(dependee2, ScalarTraits<DependeeType>::one()); \
538 myDepList.set(dependent1, ARRAY_TYPE<DependentType>()); \
539 myDepList.set(dependent2, ARRAY_TYPE<DependentType>()); \
542 RCP<DEPENDENCYTYPE<DependeeType, DependentType> > basicArrayDep = \
543 rcp(new DEPENDENCYTYPE<DependeeType, DependentType>( \
544 myDepList.getEntryRCP(dependee1), \
545 myDepList.getEntryRCP(dependent1))); \
547 DependeeType one = ScalarTraits< DependeeType >::one(); \
548 RCP<AdditionFunction< DependeeType > > functionTester = \
549 rcp(new AdditionFunction<DependeeType>(one)); \
551 RCP<DEPENDENCYTYPE<DependeeType, DependentType> > funcArrayDep = \
552 rcp(new DEPENDENCYTYPE<DependeeType, DependentType>( \
553 myDepList.getEntryRCP(dependee2), \
554 myDepList.getEntryRCP(dependent2), \
558 myDepSheet->addDependency(basicArrayDep); \
559 myDepSheet->addDependency(funcArrayDep); \
561 RCP<DependencySheet> readInDepSheet = rcp(new DependencySheet); \
563 XMLParameterListWriter plWriter; \
564 XMLObject xmlOut = plWriter.toXML(myDepList, myDepSheet); \
565 out << xmlOut.toString(); \
567 RCP<ParameterList> readInList = \
568 writeThenReadPL(myDepList, myDepSheet, readInDepSheet); \
570 RCP<ParameterEntry> readinDependee1 = readInList->getEntryRCP(dependee1); \
571 RCP<ParameterEntry> readinDependent1 = readInList->getEntryRCP(dependent1); \
572 RCP<ParameterEntry> readinDependee2 = readInList->getEntryRCP(dependee2); \
573 RCP<ParameterEntry> readinDependent2 = readInList->getEntryRCP(dependent2); \
575 RCP<Dependency> readinDep1 = \
576 *(readInDepSheet->getDependenciesForParameter(readinDependee1)->begin()); \
577 RCP<Dependency> readinDep2 = \
578 *(readInDepSheet->getDependenciesForParameter(readinDependee2)->begin()); \
580 typedef DEPENDENCYTYPE<DependeeType, DependentType> deptype; \
581 BASIC_DEPENDENCY_TEST(readinDep1, deptype, 1, 1); \
582 VERIFY_DEPENDEE(readinDep1, readinDependee1); \
583 VERIFY_DEPENDENT(readinDep1, readinDependent1); \
585 BASIC_DEPENDENCY_TEST(readinDep2, deptype, 1, 1); \
586 VERIFY_DEPENDEE(readinDep2, readinDependee2); \
587 VERIFY_DEPENDENT(readinDep2, readinDependent2); \
589 RCP<DEPENDENCYTYPE<DependeeType, DependentType> > castedDep1 = \
590 rcp_dynamic_cast<DEPENDENCYTYPE<DependeeType, DependentType> >( \
592 TEST_ASSERT(castedDep1 != null); \
594 RCP<DEPENDENCYTYPE<DependeeType, DependentType> > castedDep2 = \
595 rcp_dynamic_cast<DEPENDENCYTYPE<DependeeType, DependentType> >( \
597 TEST_ASSERT(castedDep2 != null); \
599 RCP<const SimpleFunctionObject< DependeeType > > readInFunc = \
600 castedDep2->getFunctionObject(); \
601 TEST_ASSERT(readInFunc != null); \
603 RCP<const AdditionFunction< DependeeType > > castedFunc = \
604 rcp_dynamic_cast<const AdditionFunction< DependeeType > >(readInFunc); \
605 TEST_ASSERT(castedFunc != null); \
607 castedFunc->getModifiyingOperand(), \
608 functionTester->getModifiyingOperand()); \
613 #define NUM_ARRAY_LENGTH_TEST(DependeeType, DependentType) \
614 TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT( \
615 Teuchos_Dependencies, \
616 NumberArrayLengthDependency_serialization_tests, \
624 #define NUM_ARRAY_LENGTH_TEST_GROUP(DependeeType) \
625 NUM_ARRAY_LENGTH_TEST(DependeeType, int) \
626 NUM_ARRAY_LENGTH_TEST(DependeeType, float) \
627 NUM_ARRAY_LENGTH_TEST(DependeeType, double) \
628 NUM_ARRAY_LENGTH_TEST(DependeeType, llint)
635 #define TWODROW_TEST(DependeeType, DependentType) \
636 TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT( \
637 Teuchos_Dependencies, \
638 TwoDRowDependency_serialization_tests, \
646 #define TWODROW_TEST_GROUP(DependeeType) \
647 TWODROW_TEST(DependeeType, int) \
648 TWODROW_TEST(DependeeType, float) \
649 TWODROW_TEST(DependeeType, double) \
650 TWODROW_TEST(DependeeType, llint)
657 #define TWODCOL_TEST(DependeeType, DependentType) \
658 TEUCHOS_UNIT_TEST_TEMPLATE_2_INSTANT( \
659 Teuchos_Dependencies, \
660 TwoDColDependency_serialization_tests, \
668 #define TWODCOL_TEST_GROUP(DependeeType) \
669 TWODCOL_TEST(DependeeType, int) \
670 TWODCOL_TEST(DependeeType, float) \
671 TWODCOL_TEST(DependeeType, double) \
672 TWODCOL_TEST(DependeeType, llint)
678 std::string dependee1 =
"string param";
753 rcp_dynamic_cast<StringValidatorDependency>(
readinDep1,
true);
755 rcp_dynamic_cast<StringValidatorDependency>(
readinDep2,
true);
764 castedDep1->getValuesAndValidators().find(
"val1")->second,
true)->getMax(),
768 castedDep2->getValuesAndValidators().find(
"val1")->second,
true)->getMax(),
773 castedDep1->getValuesAndValidators().find(
"val2")->second,
true)->getMax(),
777 castedDep2->getValuesAndValidators().find(
"val2")->second,
true)->getMax(),
782 castedDep2->getDefaultValidator(),
true)->getMax(),
788 std::string dependee1 =
"bool param";
827 myDepSheet->addDependency(complexBoolValiDep);
860 rcp_dynamic_cast<BoolValidatorDependency>(
readinDep1,
true);
862 rcp_dynamic_cast<BoolValidatorDependency>(
readinDep2,
true);
870 castedDep1->getTrueValidator(),
true)->getMax(),
871 true1Vali->getMax());
874 castedDep1->getFalseValidator(),
true)->getMax(),
875 false1Vali->getMax());
878 castedDep2->getTrueValidator(),
true)->getMax(),
879 true2Vali->getMax());
885 Teuchos_Dependencies, RangeValidatorDepSerialization, T)
887 std::string dependee1 =
"dependee param";
888 std::string
dependee2 =
"dependee param2";
931 myDepSheet->addDependency(simpleRangeValiDep);
932 myDepSheet->addDependency(complexRangeValiDep);
982 readinMap1.find(range1)->second;
984 readinMap1.find(range2)->second;
987 range1Vali,
true)->getMax(),
991 range2Vali,
true)->getMax(),
996 it = readinMap2.begin();
1005 readinMap2.find(range1)->second,
true)->getMax(),
1009 readinMap2.find(range2)->second,
true)->getMax(),
1015 TEST_EQUALITY( defaultReadInVali->getMax(), defaultValidator->getMax());
1016 TEST_EQUALITY( defaultReadInVali->getMin(), defaultValidator->getMin());
1020 #define RANGE_VALIDATOR_TEST(T) \
1021 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( \
1022 Teuchos_Dependencies, RangeValidatorDepSerialization, T)
1035 getParametersFromXmlFile(
"MissingDependeeTag.xml", depSheet),
1038 getParametersFromXmlFile(
"MissingDependentTag.xml", depSheet),
1041 getParametersFromXmlFile(
"MissingDependee.xml", depSheet),
1044 getParametersFromXmlFile(
"MissingDependent.xml", depSheet),
1053 entryIDsMap[dependentParam] = 1;
1058 boolVisDep, entryIDsMap, validatorIDsMap),
1060 entryIDsMap.erase(dependentParam);
1061 entryIDsMap[dependeeParam] = 3;
1064 boolVisDep, entryIDsMap, validatorIDsMap),
1103 missingValuesXML, readerEntryMap, readerValiMap),
1109 Teuchos_Dependencies, ConditionVisualDepSerializationExceptions)
1123 missingConXML, readerEntryMap, readerValiMap),
1128 Teuchos_Dependencies, BoolValidatorDepSerializationExceptions)
1146 readerValiMap.erase(writerValiMap.find(trueVali)->second);
1150 boolValiDepXML, readerEntryMap, readerValiMap),
1154 writerValiMap.find(trueVali)->second, trueVali));
1155 readerValiMap.erase(writerValiMap.find(falseVali)->second);
1159 boolValiDepXML, readerEntryMap, readerValiMap),
1165 Teuchos_Dependencies, StringValidatorDepSerializationExceptions)
1173 valiMap[
"blah"] = scrapVali;
1179 dependeeParam1, dependentParam1, valiMap, scrapVali2));
1191 missingValuesXML, readerEntryMap, readerValiMap),
1194 readerValiMap.erase(writerValiMap.find(scrapVali)->second);
1198 stringValiDepXML, readerEntryMap, readerValiMap),
1202 writerValiMap.find(scrapVali)->second,scrapVali));
1203 readerValiMap.erase(writerValiMap.find(scrapVali2)->second);
1207 stringValiDepXML, readerEntryMap, readerValiMap),
1212 Teuchos_Dependencies, RangeValidatorDepSerializationExceptions)
1225 valiMap[scrapRange] = scrapVali;
1226 secondvaliMap[scrapRange] = otherScrapVali;
1227 writerValiMap.insert(scrapVali);
1228 writerValiMap.insert(otherScrapVali);
1229 writerValiMap.insert(defaultScrapVali);
1230 readerValiMap.insert(
1232 writerValiMap.find(scrapVali)->second,scrapVali));
1233 readerValiMap.insert(
1235 writerValiMap.find(otherScrapVali)->second,otherScrapVali));
1236 readerValiMap.insert(
1238 writerValiMap.find(defaultScrapVali)->second,defaultScrapVali));
1242 dependeeParam1, dependentParam1, valiMap));
1246 dependeeParam1, dependentParam1, secondvaliMap, defaultScrapVali));
1261 missingRangesXML, readerEntryMap, readerValiMap),
1264 readerValiMap.erase(writerValiMap.find(scrapVali)->second);
1268 rangeDepXML, readerEntryMap, readerValiMap),
1271 readerValiMap.erase(writerValiMap.find(defaultScrapVali)->second);
1274 rangeDefaultDepXML, readerEntryMap, readerValiMap),
1280 Teuchos_Dependencies, NumArrayLengthDepSerializationExceptions)
1285 dependeeParam1, dependentParam1));
1292 Teuchos_Dependencies, DepSheetTests)
1295 std::string dependee1 =
"dependee1";
1306 myDepSheet->addDependency(basicStringVisDep);