root/ggpa/TestSentence.cpp

Revision 1, 7.4 kB (checked in by pantley2, 4 years ago)

GGPA code from the good old days of SIGART

Line 
1 /*
2  * TestSentence.cpp
3  */
4
5 #include "TestTools.h"
6 #include "Sentence.h"
7
8 vector<string> values, values2, values3;
9 SentenceStructure *structure = NULL, *structure2 = NULL;
10 Sentence *sentence = NULL, *sentence2 = NULL, *sentence3 = NULL;
11
12 void testConstructor() {
13     //testing constructor
14     cout << "Testing Constructor... ";
15     assertTrue(sentence->getStructure() ==  structure,
16                "Structures don't match");
17     cout << "Passed" << endl;
18 }
19
20 void testAtomicSentences() {
21     //testing getAtomicSentences() and getIndex()
22     cout << "Testing getAtomicSentences and getIndex... ";
23     vector<Sentence*> atomicSentences = sentence3->getAtomicSentences();
24     int theIndex;
25     assertEquals(9, atomicSentences.size(), "Atomic Sentence size failed.");
26
27     // print the atomic sentences
28     for (unsigned int i = 0; i < atomicSentences.size(); i++) {
29         cout << atomicSentences[i]->getName() << " ";
30         for (unsigned int j = 0; j < atomicSentences[i]->getNumValues(); j++) {
31             cout << (*(atomicSentences[i]))[j] << " ";
32         }
33         cout << endl;
34     }
35
36     int step = 1;
37     unsigned int value = structure2->getOffset();
38     if (ENDIAN == BIG_ENDIAN) {
39         step = 3;
40     }
41     for(unsigned int i = 0; i < atomicSentences.size();
42         i++, value += step)
43     {
44         theIndex = atomicSentences[i]->getIndex();
45         assertEquals(value, theIndex, "Index test failed.");
46     }
47     cout << "Passed" << endl;
48 }
49
50 void testDependencies() {
51     //testing dependencies
52     cout << "Testing dependencies... " << endl;
53     sentence->addAndDependency(sentence2, true);
54     sentence->addAndDependency(sentence3, false);
55
56     assertEquals(1, sentence->isDependencyNegated(0),
57                  "Negation test failed.");
58     assertEquals(0, sentence->isDependencyNegated(1),
59                  "Negation test2 failed.");
60     vector<vector<Sentence*> > dependencies = sentence->getDependencies();
61     assertTrue(dependencies[0][0] == sentence2,
62                         "Dependency test 1 failed.");
63     assertTrue(dependencies[1][0] == sentence3,
64                         "Dependency test 2 failed.");
65
66     vector<Sentence*> orDependency;
67     orDependency.push_back(sentence);
68     orDependency.push_back(sentence3);
69     sentence2->addOrDependency(orDependency, true);
70
71     vector<vector<Sentence*> > dependencies2 = sentence2->getDependencies();
72     assertTrue(dependencies2[0][0] == sentence,
73                "Dependency test 3 failed.");
74     assertTrue(dependencies2[0][1] == sentence3,
75                "Dependency test 4 failed.");
76
77     // cleanup
78     sentence->clearDependencies(false);
79     sentence2->clearDependencies(false);
80
81     cout << "Passed" << endl;
82 }
83
84 void testGetVariables() {
85     cout << "Running getVariables test...";
86
87     map<string, vector<string> > variableMap;
88    
89     variableMap = sentence3->getVariables();
90    
91     cout << "Testing";
92
93     assertEquals(variableMap.size(), 2, "VariableMap has the wrong size");
94    
95     assertEquals(variableMap["?x"].size(), 3,
96                  "Size was incorrect for variable '?x'");
97     assertTrue(variableMap["?x"] == structure2->getValues(0),
98                "Variables for ?x were incorrect");
99     assertEquals(variableMap["?y"].size(), 3,
100                  "Size was incorrect for variable '?y'");
101     assertTrue(variableMap["?y"] == structure2->getValues(1),
102                "Variables for ?y were incorrect");
103     assertEquals(variableMap["x"].size(), 0, "Values for 'x' was not empty");
104
105     // test with dependencies
106     sentence2->addAndDependency(sentence3, false);
107
108     variableMap = sentence2->getVariables();
109
110     assertEquals(variableMap.size(), 4, "VariableMap has the wrong size");
111    
112     assertEquals(variableMap["?x"].size(), 3,
113                  "Size was incorrect for variable '?x'");
114     assertTrue(variableMap["?x"] == structure2->getValues(0),
115                "Variables for ?x were incorrect");
116     assertEquals(variableMap["?y"].size(), 3,
117                  "Size was incorrect for variable '?y'");
118     assertTrue(variableMap["?y"] == structure2->getValues(1),
119                "Variables for ?y were incorrect");
120     assertEquals(variableMap["x"].size(), 0, "Values for 'x' was not empty");
121     assertEquals(variableMap["?a"].size(), 3,
122                  "Size was incorrect for variable '?a'");
123     assertTrue(variableMap["?a"] == structure2->getValues(0),
124                "Variables for ?a were incorrect");
125     assertEquals(variableMap["?b"].size(), 3,
126                  "Size was incorrect for variable '?b'");
127     assertTrue(variableMap["?b"] == structure2->getValues(1),
128                "Variables for ?b were incorrect");
129     assertEquals(variableMap["b"].size(), 0, "Values for 'b' was not empty");
130
131     // test with or dependency
132     sentence2->clearDependencies(false);
133     vector<Sentence*> orDependency;
134     orDependency.push_back(sentence);
135     orDependency.push_back(sentence3);
136     sentence2->addOrDependency(orDependency, true);
137
138     variableMap = sentence2->getVariables();
139
140     assertEquals(variableMap.size(), 4, "VariableMap has the wrong size");
141    
142     assertEquals(variableMap["?x"].size(), 3,
143                  "Size was incorrect for variable '?x'");
144     assertTrue(variableMap["?x"] == structure2->getValues(0),
145                "Variables for ?x were incorrect");
146     assertEquals(variableMap["?y"].size(), 3,
147                  "Size was incorrect for variable '?y'");
148     assertTrue(variableMap["?y"] == structure2->getValues(1),
149                "Variables for ?y were incorrect");
150     assertEquals(variableMap["x"].size(), 0, "Values for 'x' was not empty");
151     assertEquals(variableMap["?a"].size(), 3,
152                  "Size was incorrect for variable '?a'");
153     assertTrue(variableMap["?a"] == structure2->getValues(0),
154                "Variables for ?a were incorrect");
155     assertEquals(variableMap["?b"].size(), 3,
156                  "Size was incorrect for variable '?b'");
157     assertTrue(variableMap["?b"] == structure2->getValues(1),
158                "Variables for ?b were incorrect");
159     assertEquals(variableMap["b"].size(), 0, "Values for 'b' was not empty");
160
161     sentence2->clearDependencies(false);
162
163    
164     cout << "Done" << endl;
165    
166 }
167
168 int main(void)
169 {
170    
171     cout << "***** Running Tests *****" << endl;
172     // set up values
173     values.push_back("1");
174     values.push_back("2");
175     values2.push_back("?a");
176     values2.push_back("?b");
177     values2.push_back("b");
178     values3.push_back("?x");
179     values3.push_back("?y");
180     values3.push_back("x");
181
182     structure = new SentenceStructure("succ", 2, true);
183     structure2= new SentenceStructure("cell", 3, false);
184     structure->setOffset(0);
185     structure->addValue(0, "0");
186     structure->addValue(0, "1");
187     structure->addValue(1, "0");
188     structure->addValue(1, "1");
189     structure->addValue(1, "2");
190
191     structure2->setOffset(6);
192     structure2->addValue(0, "0");
193     structure2->addValue(0, "1");
194     structure2->addValue(0, "2");
195     structure2->addValue(1, "0");
196     structure2->addValue(1, "1");
197     structure2->addValue(1, "2");
198     structure2->addValue(2, "x");
199     structure2->addValue(2, "o");
200     structure2->addValue(2, "b");
201
202     sentence = new Sentence(values, structure);
203     sentence2 = new Sentence(values2, structure2);
204     sentence3 = new Sentence(values3, structure2);
205
206     //sentence3->print();
207
208     // run the tests
209     testConstructor();
210     testAtomicSentences();
211     testDependencies();
212     testGetVariables();
213     cout << "check" << endl;
214    
215
216     cout << "***** Tests Passed! *****" << endl;
217 }
218        
Note: See TracBrowser for help on using the browser.