Optika GUI Toolik  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
test/gui/datatypes/main.cpp
Go to the documentation of this file.
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Optika: A Tool For Developing Parameter Obtaining GUIs
5 // Copyright (2009) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, with Sandia Corporation, the
8 // U.S. Government retains certain rights in this software.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Kurtis Nusbaum (klnusbaum@gmail.com)
38 //
39 // ***********************************************************************
40 // @HEADER
43 #include "Teuchos_FancyOStream.hpp"
45 #include "Optika_GUI.hpp"
46 
47 namespace Optika{
48 
49 
60  using Teuchos::tuple;
61  using Teuchos::rcp;
62 
63  RCP<FancyOStream> out = VerboseObjectBase::getDefaultOStream();
64 
67  validatorList = My_List2->sublist("Validator List", false, "Validator testing\nWorking June 27th 2009");
68  RCP<FileNameValidator> filnameVali =
70  validatorList.set("filename", "", "filename tester", filnameVali);
72  rcp(new EnhancedNumberValidator<int>(0,10,2));
73  validatorList.set("Int", 8, "Int tester", intVali);
76  validatorList.set("Short", (short)4, "short tester", shortVali);
78  rcp(new EnhancedNumberValidator<float>(0.0f,20.0f,1e-2f, 6));
79  validatorList.set("Float", (float)4.5, "float tester", floatVali);
81  rcp(new EnhancedNumberValidator<double>(0,20,1e-2, 6));
82  validatorList.set("Double", (double)4.5, "double tester", doubleVali);
83  RCP<StringValidator> solverValidator2 = rcp(
84  new StringValidator( tuple<std::string>( "GMRES", "CG", "TFQMR" )));
85  validatorList.set(
86  "Solver"
87  ,"GMRES" // This will be validated by solverValidator right here!
88  ,"The type of solver to use."
89  ,solverValidator2
90  );
91  Array<std::string> validValues;
92  validValues.append("value1");
93  validValues.append("value2");
94  validValues.append("value3");
95  RCP<StringValidator> stringVali2 = RCP<StringValidator>(new StringValidator(validValues));
96  validatorList.set("Easy String", "value1", "easy string validator tester", stringVali2);
97 
99  NoValiList = My_List2->sublist("No validator list",false,"sublist containing data types without validators on them for checking default behavior.");
100  NoValiList.set("Int1", 8, "Int tester");
101  NoValiList.set("Short1", (short)4, "short tester");
102  NoValiList.set("Float1", (float)4.5, "float tester");
103  NoValiList.set("Double1", (double)4.5, "double tester");
104  NoValiList.set("Bool1", true);
105  NoValiList.set("Bool", true);
106  NoValiList.set("Free String", "fee");
107 
108  //Arrays
109  RCP<StringValidator> easyStringValidator = RCP<StringValidator>(new StringValidator(tuple<std::string>("value1", "value2", "value3")));
110  Array<int> intArray(10,0);
111  Array<short> shortArray(10,3);
112  Array<float> floatArray(10,4.4f);
113  Array<double> doubleArray(10, 5.5);
114  Array<std::string> stringArray(10,"CG");
115  Array<std::string> easyStringArray(10, "value1");
116  Array<std::string> freestringArray(10,"Blah");
117  Array<std::string> filenameArray(3,"/net/home/f07/klnusbau/blah.txt");
119  ArrayList = My_List2->sublist("Arrays", false, "sublist containing arrays.");
120  ArrayList.set("IntArray", intArray, "intarray tester", RCP<ArrayNumberValidator<int> >(new ArrayNumberValidator<int>(intVali)));
121  ArrayList.set("ShortArray", shortArray, "shortarray tester", RCP<ArrayNumberValidator<short> >(new ArrayNumberValidator<short>(shortVali)));
122  ArrayList.set("DoubleArray", doubleArray, "doublearray tester", RCP<ArrayNumberValidator<double> >(new ArrayNumberValidator<double>(doubleVali)));
123  ArrayList.set("FloatArray", floatArray, "floatarray tester", RCP<ArrayNumberValidator<float> >(new ArrayNumberValidator<float>(floatVali)));
124  ArrayList.set("StringArray", stringArray, "string tester",
125  RCP<ArrayStringValidator>(new ArrayStringValidator(solverValidator2)));
126  ArrayList.set("EasyStringArray", easyStringArray, "testing the easy validator", RCP<ArrayStringValidator>(new ArrayStringValidator(easyStringValidator)));
127  ArrayList.set("FreeStringArray", freestringArray, "free string array tester");
128  ArrayList.set("Filename Array", filenameArray, "filename array tester",
129  RCP<ArrayFileNameValidator>(new ArrayFileNameValidator(filnameVali)));
130 
131  getInput(My_List2);
132  writeParameterListToXmlOStream(*My_List2, *out);
133  My_List2->print(
134  std::cout,ParameterList::PrintOptions().showDoc(true).indent(2).showTypes(true));
135 
136 
137 
138 }
139 
140 }
141 
142 int main(){
144  return 0;
145 }
Array< T > & append(const T &x)
void f()
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
A collection of functions and an Object that serve as the primary interface to the Optika package all...
void RUN_OPTIKA_DATA_TYPE_TESTS()
#define TEUCHOS_ADD_NUMBERTYPE_VALIDATOR_CONVERTERS(T)
RCP< ParameterList > sublist(const RCP< ParameterList > &paramList, const std::string &name, bool mustAlreadyExist=false, const std::string &docString="")
void getInput(RCP< ParameterList > validParameters, RCP< DependencySheet > dependencySheet, void(*customFunc)(RCP< const ParameterList >))
Retreives the input for a Teuchos Parameter List using a GUI. Note the Parameter List will be edited...
Definition: Optika_GUI.cpp:47
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
basic_FancyOStream< char > FancyOStream