PEBL 2.2
Psychology Experiment Building Language - Cross-platform psychological experiment development system
VariantTest.cpp File Reference
#include "../base/Variant.h"
#include "../base/PComplexData.h"
#include "../base/PList.h"
#include "../base/Evaluator.h"
#include "../base/PNode.h"
#include "../base/VariableMap.h"
#include "../base/FunctionMap.h"
#include "../base/grammar.tab.hpp"
#include "../utility/PEBLPath.h"
#include "../devices/PEventLoop.h"
#include "../libs/PEBLObjects.h"
#include "../base/Loader.h"
#include "../utility/PError.h"
#include "../utility/PEBLUtility.h"
#include "../utility/rc_ptrs.h"
#include <iostream>
#include <stdlib.h>

Go to the source code of this file.

Functions

PNodeparse (const char *filename)
 
int main (int argc, char **argv[])
 

Function Documentation

◆ main()

int main ( int  argc,
char **  argv[] 
)

Definition at line 69 of file VariantTest.cpp.

70{
71
72
73 long int a = 12341;
74 long double b = 3352.9933;
75 char c[15] = "Rock-n-roll";
76
77 cout << "\n\n\n==========================================================\n";
78 cout << "Testing the Variant Class\n";
79 cout << "==========================================================\n";
80
81
82 Variant myVariant1;
83 Variant myVariant2;
84 Variant myVariant3;
85
86
87
88 myVariant1=a;
89 myVariant2=a;
90 cout << "Variants initiated" << endl;
91 //==========================================================
92 // Check Basic Assignment Functions
93 //==========================================================
94 cout << "\n\n\n==========================================================\n";
95 cout << "Checking Basic Assignment Functions\n";
96 cout << "==========================================================\n";
97
98 cout << "myVariant1: ["<< a << "] == [" << (long int)myVariant1 << "] " << myVariant1.GetDataTypeName() << endl;
99 cout << "myVariant1: ["<< a << "] == [" << myVariant1 << "] " << myVariant1.GetDataTypeName() << endl;
100 cout << "myVariant2: ["<< a << "] == [" << (long int)myVariant2 << "]" << myVariant2.GetDataTypeName() << endl;
101 cout << "myVariant2: ["<< a << "] == [" << myVariant2 << "]" << myVariant2.GetDataTypeName() << endl;
102
103 myVariant2 = b;
104 cout << "myVariant2: ["<< b << "] == [" << (long int)myVariant2 << "]" << myVariant2.GetDataTypeName() << endl;
105 cout << "myVariant2: ["<< b << "] == [" << myVariant2 << "]" << myVariant2.GetDataTypeName() << endl;
106
107
108 myVariant3 = c;
109 cout << "myVariant3: ["<< c << "] == [" << (char*)myVariant3 << "]" << myVariant3.GetDataTypeName() << endl;
110 cout << "myVariant3: ["<< c << "] == [" << myVariant3 << "]" << myVariant3.GetDataTypeName() << endl;
111
112 cout << "Implicit Variant:" << Variant("IMPLITIC") << endl;
113
114 //==========================================================
115 // Check Basic Arithmetic operations
116 //==========================================================
117 cout << "\n\n\n==========================================================\n";
118 cout << "Checking Basic Arithmetic operations.\n";
119 cout << "==========================================================\n";
120
121 cout << "V1 + V1: ["<< a + a << "] == [" << myVariant1 + myVariant1 << "]\n";
122 cout << "V1 + V2: ["<< a + b << "] == [" << myVariant1 + myVariant2 << "] " << endl;
123 cout << "V1 - V2: ["<< a - b << "] == [" << myVariant1 - myVariant2 << "] " << endl;
124 cout << "V1 * V2: ["<< a * b << "] == [" << myVariant1 * myVariant2 << "] " << endl;
125 cout << "V1 / V2: ["<< a / b << "] == [" << myVariant1 / myVariant2 << "] " << endl;
126
127 cout << "V3 + 'cat': [" << myVariant3 + Variant("cat") << "] " << endl;
128
129
130
131 //==========================================================
132 // Check Basic Arithmetic operations with Assignment
133 //==========================================================
134 cout << "\n\n\n==========================================================\n";
135 cout << "Check Basic Arithmetic operations with Assignment\n";
136 cout << "==========================================================\n";
137
138 myVariant3 = myVariant2 + myVariant1;
139 cout << "V3: " << myVariant3 << " " << myVariant3.GetDataTypeName() << endl;
140
141 myVariant3 = myVariant2 - myVariant1;
142 cout << "V3: " << myVariant3 << " " << myVariant3.GetDataTypeName() << endl;
143
144 myVariant3 = myVariant2 * myVariant1;
145 cout << "V3: " << myVariant3 << " " << myVariant3.GetDataTypeName() << endl;
146
147 myVariant3 = myVariant2 / myVariant1;
148 cout << "V3: " << myVariant3 << " " << myVariant3.GetDataTypeName() << endl;
149
150 myVariant3 = myVariant1 * Variant(2);
151 cout << "V3: " << myVariant3 << " " << myVariant3.GetDataTypeName() << endl;
152
153
154 cout << "Testing with int" << endl;
155 myVariant2 = Variant(333);
156 cout << "V2: [" << myVariant2 << "]" << endl;
157
158
159 cout << "Implicit:" << Variant("Implicit") << endl;
160
161 myVariant2 = "somebody ";
162 cout << "V2: [" << myVariant2 << "]" << endl;
163
164
165 myVariant2 = Variant("anybody ");
166 cout << "V2: [" << myVariant2 << "]" << endl;
167
168 //==========================================================
169 //Checking <, >, ==, etc.
170 //==========================================================
171
172 cout << "\n\n\n==========================================================\n";
173 cout << "Checking <, >, ==, etc.\n";
174 cout << "==========================================================\n";
175
176
177 myVariant1 = 34252.3;
178 myVariant2 = 342;
179
180
181 cout << "(myVariant1 < myVariant2): "<< myVariant1 << " < " << myVariant2 << " " << (myVariant1 < myVariant2) << endl;
182 cout << "(myVariant1 > myVariant2): "<< myVariant1 << " > " << myVariant2 << " " << (myVariant1 > myVariant2) << endl;
183 cout << "(myVariant1 <= myVariant2): "<< myVariant1 << " <= " << myVariant2 << " " << (myVariant1 <= myVariant2) << endl;
184 cout << "(myVariant1 >= myVariant2): "<< myVariant1 << " >= " << myVariant2 << " " << (myVariant1 >= myVariant2) << endl;
185 cout << "(myVariant1 == myVariant2): "<< myVariant1 << " == " << myVariant2 << " " << (myVariant1 == myVariant2) << endl;
186 cout << "(myVariant1 == myVariant1): "<< myVariant1 << " == " << myVariant1 << " " << (myVariant1 == myVariant1) << endl;
187 cout << "(myVariant2 == myVariant2): "<< myVariant2 << " == " << myVariant2 << " " << (myVariant2 == myVariant2) << endl;
188 cout << "(myVariant2 == myVariant1): "<< myVariant2 << " == " << myVariant1 << " " << (myVariant2 == myVariant1) << endl;
189 cout << "(myVariant1 != myVariant2): "<< myVariant1 << " != " << myVariant2 << " " << (myVariant1 != myVariant2) << endl;
190 cout << "(myVariant1 != myVariant1): "<< myVariant1 << " != " << myVariant1 << " " << (myVariant1 != myVariant1) << endl;
191 cout << "(myVariant2 != myVariant2): "<< myVariant2 << " != " << myVariant2 << " " << (myVariant2 != myVariant2) << endl;
192 cout << "(myVariant2 != myVariant1): "<< myVariant2 << " != " << myVariant1 << " " << (myVariant2 != myVariant1) << endl;
193 cout << "(myVariant2 < myVariant1): "<< myVariant2 << " < " << myVariant1 << " " << (myVariant2 < myVariant1) << endl;
194 cout << "(myVariant2 > myVariant1): "<< myVariant2 << " > " << myVariant1 << " " << (myVariant2 > myVariant1) << endl;
195 cout << "(myVariant2 <= myVariant1): "<< myVariant2 << " <= " << myVariant1 << " " << (myVariant2 <= myVariant1) << endl;
196 cout << "(myVariant2 >= myVariant1): "<< myVariant2 << " >= " << myVariant1 << " " << (myVariant2 >= myVariant1) << endl;
197
198 myVariant1 = "Something";
199 myVariant2 = "Anything";
200
201 cout << "(myVariant1 < myVariant2): "<< myVariant1 << " < " << myVariant2 << " " << (myVariant1 < myVariant2) << endl;
202 cout << "(myVariant1 > myVariant2): "<< myVariant1 << " > " << myVariant2 << " " << (myVariant1 > myVariant2) << endl;
203 cout << "(myVariant1 <= myVariant2): "<< myVariant1 << " <= " << myVariant2 << " " << (myVariant1 <= myVariant2) << endl;
204 cout << "(myVariant1 >= myVariant2): "<< myVariant1 << " >= " << myVariant2 << " " << (myVariant1 >= myVariant2) << endl;
205 cout << "(myVariant1 == myVariant2): "<< myVariant1 << " == " << myVariant2 << " " << (myVariant1 == myVariant2) << endl;
206 cout << "(myVariant1 == myVariant1): "<< myVariant1 << " == " << myVariant1 << " " << (myVariant1 == myVariant1) << endl;
207 cout << "(myVariant2 == myVariant2): "<< myVariant2 << " == " << myVariant2 << " " << (myVariant2 == myVariant2) << endl;
208 cout << "(myVariant2 == myVariant1): "<< myVariant2 << " == " << myVariant1 << " " << (myVariant2 == myVariant1) << endl;
209 cout << "(myVariant1 != myVariant2): "<< myVariant1 << " != " << myVariant2 << " " << (myVariant1 != myVariant2) << endl;
210 cout << "(myVariant1 != myVariant1): "<< myVariant1 << " != " << myVariant1 << " " << (myVariant1 != myVariant1) << endl;
211 cout << "(myVariant2 != myVariant2): "<< myVariant2 << " != " << myVariant2 << " " << (myVariant2 != myVariant2) << endl;
212 cout << "(myVariant2 != myVariant1): "<< myVariant2 << " != " << myVariant1 << " " << (myVariant2 != myVariant1) << endl;
213 cout << "(myVariant2 < myVariant1): "<< myVariant2 << " < " << myVariant1 << " " << (myVariant2 < myVariant1) << endl;
214 cout << "(myVariant2 > myVariant1): "<< myVariant2 << " > " << myVariant1 << " " << (myVariant2 > myVariant1) << endl;
215 cout << "(myVariant2 <= myVariant1): "<< myVariant2 << " <= " << myVariant1 << " " << (myVariant2 <= myVariant1) << endl;
216 cout << "(myVariant2 >= myVariant1): "<< myVariant2 << " >= " << myVariant1 << " " << (myVariant2 >= myVariant1) << endl;
217
218 //==========================================================
219 //Checking Variable Type
220 //==========================================================
221
222 cout << "\n\n\n==========================================================\n";
223 cout << "Checking Variable Type\n";
224 cout << "==========================================================\n";
225
226 char* name = "Apostrophe";
227 myVariant2 = Variant(name,P_DATA_LOCALVARIABLE);
228 cout << "Apostrophe: "<< name << " " << myVariant2 << myVariant2.GetDataTypeName() << endl;
229
230 myVariant3 = Variant("Nonesty",P_DATA_LOCALVARIABLE);
231 cout << "Nonesty: "<< flush << myVariant3 << flush << myVariant3.GetDataTypeName() << endl;
232
233
234
235
236
237
238 //==========================================================
239 //Checking List Type
240 //==========================================================
241
242 cout << "\n\n\n==========================================================\n";
243 cout << "Checking List Type\n";
244 cout << "==========================================================\n";
245
246 //First, make a list
247
248 counted_ptr<PList> list1;
249 myVariant1 = 33;
250
251 list1=counted_ptr<PList>(new PList());
252 list1->PushFront(myVariant1);
253 list1->PushFront(myVariant2);
254 list1->PushFront(myVariant3);
255
256 PComplexData * pcd = new PComplexData(list1);
257 Variant myVariant4 = Variant(pcd);
258
259 cout << "MyVariant4 has type: " << myVariant4.GetDataTypeName() << endl;;
260
261
262 cout << "Printing the list: [" << endl;
263 cout << myVariant4 << endl;
264 cout << "] List printed." << endl;
265
266
267 //Testing copying
268 cout << "Testing copying...." << endl;
269 Variant myVariant5 = myVariant4;
270
271 cout << "Type of myVariant5: " << myVariant5.GetDataTypeName() << endl;
272
273
274 cout << "List copied. Printing copy:" << endl;
275 cout << myVariant5 << endl;
276
277
278
279 cout << "Finished" << endl;
280 return 0;
281}
@ P_DATA_LOCALVARIABLE
Definition Variant.h:48
Definition PList.h:45
std::string GetDataTypeName() const
This returns the type as a string.
Definition Variant.cpp:891

References Variant::GetDataTypeName(), and P_DATA_LOCALVARIABLE.

◆ parse()

PNode * parse ( const char *  filename)