1/*---------------------------------------------------------------------------* 2 * testhashmap.cpp * 3 * * 4 * Copyright 2007, 2008 Nuance Communciations, Inc. * 5 * * 6 * Licensed under the Apache License, Version 2.0 (the 'License'); * 7 * you may not use this file except in compliance with the License. * 8 * * 9 * You may obtain a copy of the License at * 10 * http://www.apache.org/licenses/LICENSE-2.0 * 11 * * 12 * Unless required by applicable law or agreed to in writing, software * 13 * distributed under the License is distributed on an 'AS IS' BASIS, * 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 15 * See the License for the specific language governing permissions and * 16 * limitations under the License. * 17 * * 18 *---------------------------------------------------------------------------*/ 19 20 21 22#include <string> 23#include <fstream> 24#include <iostream> 25#include "../src/hashmap.h" 26using namespace std; 27 28 29#if 1 30void test1(); 31void test2(); 32 33 34void main(int argc, char* argv[]) 35{ 36test2(); 37} 38 39// (INT,INT) hash 40void test1() 41{ 42 HashMap<int,int > myHash; 43 int value; 44 int i; 45 i=10; 46 myHash.setName("TestHash"); 47 myHash.insert(1, i); 48 myHash.getValue(1, &value); 49 std::cout << "Index 1 has value= " << value <<std::endl; 50 myHash.getIndex( 10, &i ); 51 std::cout << "value " << value << " has index " << i <<std::endl; 52 unsigned int j; 53 myHash.getNumericIndex(i, &j); 54 std::cout << "index " << i << " has numeric index " << j <<std::endl; 55 myHash.getNumericIndexByValue(value, &j); 56 std::cout << "value " << value << " has numeric index " << j <<std::endl; 57 58 myHash.print(); 59 myHash.remove(1); 60 myHash.print(); 61} 62 63 64// (INT,STRING) hash 65void test2() 66{ 67 HashMap<int,string> myHash; 68 string value = "hello"; 69 int i; 70 i=10; 71 myHash.setName("TestHash"); 72 myHash.insert(1, value); 73 myHash.insert(2, "world"); 74 75 myHash.getValue(1, &value); 76 std::cout << "Index 1 has value= " << value <<std::endl; 77 myHash.getIndex( value, &i ); 78 std::cout << "value " << value << " has index " << i <<std::endl; 79 unsigned int j; 80 myHash.getNumericIndex(i, &j); 81 std::cout << "index " << i << " has numeric index " << j <<std::endl; 82 myHash.getNumericIndexByValue(value, &j); 83 std::cout << "value " << value << " has numeric index " << j <<std::endl; 84 85 myHash.print(); 86 myHash.getFirst(&i, &value); 87 std::cout << "First iterator values are " << i <<", " << value <<std::endl; 88 if (myHash.getNext(&i, &value)) { 89 std::cout << "Iterator values are " << i <<", " << value <<std::endl; 90 } 91 else { 92 std::cout << "No first index - map is empty" <<std::endl; 93 } 94 myHash.remove(1); 95 myHash.getFirst(&i, &value); 96 std::cout << "First iterator values are " << i <<", " << value <<std::endl; 97 if (myHash.getNext(&i, &value)) { 98 std::cout << "Iterator values are " << i <<", " << value <<std::endl; 99 } 100 else { 101 std::cout << "No next index - map is empty" <<std::endl; 102 } 103 104 105 myHash.print(); 106} 107 108 109 110 111 112 113 114 115 116 117#else 118 119void findi(string s); 120void finds(int i); 121void insert(int i, const string &s); 122void remove( int i ); 123 124HashMap<int,string> myHash; 125 126void main(int argc, char* argv[]) 127{ 128 string s; 129 s = "hello"; 130 insert(1,s); 131 insert(2,"world"); 132 133 finds(2); 134 finds(1); 135 finds(99); 136 findi("hello"); 137 findi("world"); 138 findi("xox"); 139 140 s = "bollocks"; 141 findi("hello"); 142 finds(1); 143 insert(3,s); 144 finds(3); 145 insert(3,"zzz"); 146 finds(3); 147 remove(3); 148 insert(3,"zzz"); 149 finds(3); 150 151} 152 153 154void findi(string s) 155{ 156 int i; 157 if ( myHash.getIndex(s, &i) ) { 158 cout << "'" << s << "' has index of " << i <<endl; 159 } 160 else { 161 cout << "'" << s << "' not found!" << endl; 162 } 163} 164 165void finds(int i) 166{ 167 string s; 168 if ( myHash.getValue(i, &s) ) { 169 cout << "'" << i << "' has value of " << s <<endl; 170 } 171 else { 172 cout << "'" << i << "' not found!" << endl; 173 } 174} 175 176void insert( int i, const string &s) 177{ 178 string ss; 179 if (!myHash.getValue(i, &ss) ) { 180 if ( myHash.insert(i, s) ) { 181 cout << "Inserted: " << i << "," << s <<endl; 182 } 183 } 184 else { 185 cout << "Failed to insert '" << i << "," << s <<"'" << endl; 186 } 187} 188 189void remove( int i ) 190{ 191 string ss; 192 if (myHash.getValue(i, &ss) ) { 193 if ( myHash.remove(i) ) { 194 cout << "Removed: " << i << endl; 195 } 196 } 197 else { 198 cout << "Failed to remove '" << i << "'" << endl; 199 } 200} 201 202 203#endif 204