changeset 24 | 65456528cac2 |
parent 14 | 8bd192d47aaa |
23:d4d56f5e7c55 | 24:65456528cac2 |
---|---|
131 cpix_IdxSearcher_releaseDb(searcher_); |
131 cpix_IdxSearcher_releaseDb(searcher_); |
132 searcher_ = NULL; |
132 searcher_ = NULL; |
133 } |
133 } |
134 |
134 |
135 void testWritingWhenHitIterating(Itk::TestMgr* testMgr) { |
135 void testWritingWhenHitIterating(Itk::TestMgr* testMgr) { |
136 char *xml_file = (char *)__FUNCTION__; |
|
137 assert_failed = 0; |
|
138 testWritingWhenHitIterating(testMgr, |
136 testWritingWhenHitIterating(testMgr, |
139 idxUtil_->idxDb(), |
137 idxUtil_->idxDb(), |
140 &cpix_IdxDb_search, |
138 &cpix_IdxDb_search, |
141 3); |
139 3); |
142 testResultXml(xml_file); |
140 |
143 } |
141 } |
144 |
142 |
145 |
143 |
146 void testWritingWhenHitIterating2(Itk::TestMgr* testMgr) { |
144 void testWritingWhenHitIterating2(Itk::TestMgr* testMgr) { |
147 char *xml_file = (char *)__FUNCTION__; |
|
148 assert_failed = 0; |
|
149 testWritingWhenHitIterating(testMgr, |
145 testWritingWhenHitIterating(testMgr, |
150 searcher(testMgr), |
146 searcher(testMgr), |
151 &cpix_IdxSearcher_search, |
147 &cpix_IdxSearcher_search, |
152 3); |
148 3); |
153 testResultXml(xml_file); |
149 |
154 } |
150 } |
155 |
151 |
156 void testInvalidation(Itk::TestMgr* testMgr) |
152 void testInvalidation(Itk::TestMgr* testMgr) |
157 { |
153 { |
158 char *xml_file = (char *)__FUNCTION__; |
|
159 assert_failed = 0; |
|
160 for (int i = 0; i < 25; i++) |
154 for (int i = 0; i < 25; i++) |
161 { |
155 { |
162 idxUtil_->indexSms( i, |
156 idxUtil_->indexSms( i, |
163 testCorpus_.item(i).c_str(), |
157 testCorpus_.item(i).c_str(), |
164 analyzer_, |
158 analyzer_, |
175 cpix_IdxDb_search(idxUtil_->idxDb(), query ); |
169 cpix_IdxDb_search(idxUtil_->idxDb(), query ); |
176 |
170 |
177 if ( cpix_Failed( idxUtil_->idxDb() ) ) { |
171 if ( cpix_Failed( idxUtil_->idxDb() ) ) { |
178 cpix_Query_destroy( query ); |
172 cpix_Query_destroy( query ); |
179 ITK_PANIC( "Search failed" ); |
173 ITK_PANIC( "Search failed" ); |
180 assert_failed = 1; |
174 |
181 } |
175 } |
182 printf("Accessing hits before closing... "); |
176 printf("Accessing hits before closing... "); |
183 |
177 |
184 cpix_Hits_length( hits ); |
178 cpix_Hits_length( hits ); |
185 ITK_ASSERT( testMgr, cpix_Succeeded( hits ), "Accessing hit length failed" ); |
179 ITK_ASSERT( testMgr, cpix_Succeeded( hits ), "Accessing hit length failed" ); |
201 } |
195 } |
202 cpix_IdxDb_flush(idxUtil_->idxDb()); |
196 cpix_IdxDb_flush(idxUtil_->idxDb()); |
203 ITK_EXPECT(testMgr, |
197 ITK_EXPECT(testMgr, |
204 cpix_Succeeded(idxUtil_->idxDb()), |
198 cpix_Succeeded(idxUtil_->idxDb()), |
205 "Flushing failed"); |
199 "Flushing failed"); |
206 if(cpix_Succeeded(idxUtil_->idxDb())) |
200 |
207 { |
|
208 assert_failed = 1; |
|
209 } |
|
210 |
201 |
211 cpix_IdxSearcher_releaseDb(searcher_); |
202 cpix_IdxSearcher_releaseDb(searcher_); |
212 searcher_ = NULL; |
203 searcher_ = NULL; |
213 idxUtil_->close(); |
204 idxUtil_->close(); |
214 |
205 |
217 printf("Accessing hits after closing... \n"); |
208 printf("Accessing hits after closing... \n"); |
218 cpix_Document |
209 cpix_Document |
219 **doc; |
210 **doc; |
220 ALLOC_DOC(doc, 1); |
211 ALLOC_DOC(doc, 1); |
221 |
212 |
222 printf("doc #0: "); |
213 printf("doc #0: \n"); |
223 cpix_Hits_doc(hits, |
214 cpix_Hits_doc(hits, |
224 0, |
215 0, |
225 doc, |
216 doc, |
226 1); |
217 1); |
227 if (doc[0]->ptr_ != NULL) { |
218 if (doc[0]->ptr_ != NULL) { |
243 } |
234 } |
244 FREE_DOC(doc, 1); |
235 FREE_DOC(doc, 1); |
245 |
236 |
246 |
237 |
247 ALLOC_DOC(doc, 1) |
238 ALLOC_DOC(doc, 1) |
248 printf("\ndoc #20: "); |
239 printf("doc #20: "); |
249 cpix_Hits_doc(hits, |
240 cpix_Hits_doc(hits, |
250 20, |
241 20, |
251 doc, |
242 doc, |
252 1); |
243 1); |
253 if (doc[0]->ptr_ != NULL) { |
244 if (doc[0]->ptr_ != NULL) { |
254 ITK_EXPECT( testMgr, |
245 ITK_EXPECT( testMgr, |
255 cpix_Failed( hits ), |
246 cpix_Failed( hits ), |
256 "Accessing hit(20) should NOT succeeded for closed database (hits still holds a reference to its originator)." ); |
247 "Accessing hit(20) should NOT succeeded for closed database (hits still holds a reference to its originator)." ); |
257 |
|
258 if (cpix_Failed(hits)) |
|
259 { |
|
260 wchar_t |
|
261 buf[256]; |
|
262 cpix_Error_report(hits->err_, |
|
263 buf, |
|
264 sizeof(buf) / sizeof(wchar_t)); |
|
265 printf("%S\n", buf); |
|
266 cpix_ClearError(hits); |
|
267 assert_failed = 1; |
|
268 } |
|
269 } |
248 } |
270 |
249 |
250 if (cpix_Failed(hits)) |
|
251 { |
|
252 wchar_t |
|
253 buf[256]; |
|
254 cpix_Error_report(hits->err_, |
|
255 buf, |
|
256 sizeof(buf) / sizeof(wchar_t)); |
|
257 printf("%S\n", buf); |
|
258 cpix_ClearError(hits); |
|
259 |
|
260 } |
|
261 |
|
262 |
|
271 FREE_DOC(doc, 1) |
263 FREE_DOC(doc, 1) |
272 testResultXml(xml_file); |
264 |
273 cpix_Hits_destroy( hits ); |
265 cpix_Hits_destroy( hits ); |
274 cpix_Query_destroy( query ); |
266 cpix_Query_destroy( query ); |
275 } |
267 } |
276 |
268 |
277 |
269 |
280 * which occurs e.g. if we provide bad schema and the idxdb will react |
272 * which occurs e.g. if we provide bad schema and the idxdb will react |
281 * by throwing an exception. |
273 * by throwing an exception. |
282 */ |
274 */ |
283 void testStackunwinding(Itk::TestMgr* testMgr) |
275 void testStackunwinding(Itk::TestMgr* testMgr) |
284 { |
276 { |
285 char *xml_file = (char *)__FUNCTION__; |
|
286 assert_failed = 0; |
|
287 SchemaId wrongSchema = idxUtil_->schemaId(); |
277 SchemaId wrongSchema = idxUtil_->schemaId(); |
288 cpix_Result |
278 cpix_Result |
289 result; |
279 result; |
290 |
280 |
291 delete idxUtil_; |
281 delete idxUtil_; |
298 // Open index without redefining schema |
288 // Open index without redefining schema |
299 |
289 |
300 if (cpix_Failed(&result)) |
290 if (cpix_Failed(&result)) |
301 { |
291 { |
302 ITK_PANIC("Index could not be opened"); |
292 ITK_PANIC("Index could not be opened"); |
303 assert_failed = 1; |
293 |
304 } |
294 } |
305 |
295 |
306 // Try to index things |
296 // Try to index things |
307 for (int i = 0; i < 5; i++) |
297 for (int i = 0; i < 5; i++) |
308 { |
298 { |
331 succeeded = cpix_Succeeded(idxDb); |
321 succeeded = cpix_Succeeded(idxDb); |
332 |
322 |
333 ITK_ASSERT( testMgr, !succeeded, "Schema is persistent?" ); |
323 ITK_ASSERT( testMgr, !succeeded, "Schema is persistent?" ); |
334 |
324 |
335 } |
325 } |
336 testResultXml(xml_file); |
326 |
337 cpix_IdxDb_releaseDb(idxDb); |
327 cpix_IdxDb_releaseDb(idxDb); |
338 idxDb = NULL; |
328 idxDb = NULL; |
339 |
329 |
340 idxUtil_ = new SmsIdxUtil; |
330 idxUtil_ = new SmsIdxUtil; |
341 idxUtil_->init( true ); |
331 idxUtil_->init( true ); |
352 { |
342 { |
353 wprintf(L"Testing writing to index, while hit object is continuosly read.\n"); |
343 wprintf(L"Testing writing to index, while hit object is continuosly read.\n"); |
354 |
344 |
355 // Index |
345 // Index |
356 for (int i = 0; i < 25; i++) { |
346 for (int i = 0; i < 25; i++) { |
347 |
|
357 idxUtil_->indexSms( i, |
348 idxUtil_->indexSms( i, |
358 testCorpus_.item(i).c_str(), |
349 testCorpus_.item(i).c_str(), |
359 analyzer_, |
350 analyzer_, |
360 testMgr, |
351 testMgr, |
361 false ); |
352 false ); |
393 |
384 |
394 printf("1 item indexed. \n"); |
385 printf("1 item indexed. \n"); |
395 |
386 |
396 cpix_Hits_length( hits ); |
387 cpix_Hits_length( hits ); |
397 ITK_EXPECT( testMgr, cpix_Succeeded( hits ), "Accessing hit of index 1 failed" ); |
388 ITK_EXPECT( testMgr, cpix_Succeeded( hits ), "Accessing hit of index 1 failed" ); |
398 if(!cpix_Succeeded( hits )) |
389 |
399 { |
|
400 assert_failed = 1; |
|
401 } |
|
402 printf("Hits after adding 1 item.\n"); |
390 printf("Hits after adding 1 item.\n"); |
403 idxUtil_->printHits( hits, testMgr ); |
391 idxUtil_->printHits( hits, testMgr ); |
404 |
392 |
405 cpix_IdxDb_deleteDocuments(idxUtil_->idxDb(), GetItemId( 15 ).c_str() ); |
393 cpix_IdxDb_deleteDocuments(idxUtil_->idxDb(), GetItemId( 15 ).c_str() ); |
406 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Deleting document 15 failed" ); |
394 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Deleting document 15 failed" ); |
407 if(!cpix_Succeeded( idxUtil_->idxDb() )) |
395 |
408 { |
|
409 assert_failed = 1; |
|
410 } |
|
411 printf("Line 16 deleted.\n"); |
396 printf("Line 16 deleted.\n"); |
412 |
397 |
413 printf("Hits after deletion: \n"); |
398 printf("Hits after deletion: \n"); |
414 idxUtil_->printHits( hits, testMgr ); |
399 idxUtil_->printHits( hits, testMgr ); |
415 |
400 |
416 cpix_IdxDb_flush(idxUtil_->idxDb() ); |
401 cpix_IdxDb_flush(idxUtil_->idxDb() ); |
417 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Flushing failed" ); |
402 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Flushing failed" ); |
418 printf("Flushed.\n"); |
403 printf("Flushed.\n"); |
419 if(!cpix_Succeeded( idxUtil_->idxDb() )) |
404 |
420 { |
|
421 assert_failed = 1; |
|
422 } |
|
423 |
405 |
424 printf("Hits after flush:\n"); |
406 printf("Hits after flush:\n"); |
425 idxUtil_->printHits( hits, testMgr, true ); |
407 idxUtil_->printHits( hits, testMgr, true ); |
426 |
408 |
427 cpix_IdxDb_deleteDocuments(idxUtil_->idxDb(), GetItemId( 14 ).c_str() ); |
409 cpix_IdxDb_deleteDocuments(idxUtil_->idxDb(), GetItemId( 14 ).c_str() ); |
428 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Deleting document 14 failed" ); |
410 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Deleting document 14 failed" ); |
429 if(!cpix_Succeeded( idxUtil_->idxDb() )) |
411 |
430 { |
|
431 assert_failed = 1; |
|
432 } |
|
433 printf("Line 15 deleted.\n"); |
412 printf("Line 15 deleted.\n"); |
434 printf("Hits after deletion:\n"); |
413 printf("Hits after deletion:\n"); |
435 idxUtil_->printHits( hits, testMgr ); |
414 idxUtil_->printHits( hits, testMgr ); |
436 |
415 |
437 cpix_IdxDb_deleteDocuments(idxUtil_->idxDb(), GetItemId( 9 ).c_str() ); |
416 cpix_IdxDb_deleteDocuments(idxUtil_->idxDb(), GetItemId( 9 ).c_str() ); |
438 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Deleting document 9 failed" ); |
417 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Deleting document 9 failed" ); |
439 if(!cpix_Succeeded( idxUtil_->idxDb() )) |
418 |
440 { |
|
441 assert_failed = 1; |
|
442 } |
|
443 printf("Line 10 deleted.\n"); |
419 printf("Line 10 deleted.\n"); |
444 printf("Hits after deletion:\n"); |
420 printf("Hits after deletion:\n"); |
445 idxUtil_->printHits( hits, testMgr ); |
421 idxUtil_->printHits( hits, testMgr ); |
446 |
422 |
447 cpix_IdxDb_flush(idxUtil_->idxDb() ); |
423 cpix_IdxDb_flush(idxUtil_->idxDb() ); |
448 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Flushing failed" ); |
424 ITK_EXPECT( testMgr, cpix_Succeeded( idxUtil_->idxDb() ), "Flushing failed" ); |
449 printf("Flushed.\n"); |
425 printf("Flushed.\n"); |
450 if(!cpix_Succeeded( idxUtil_->idxDb() )) |
426 |
451 { |
|
452 assert_failed = 1; |
|
453 } |
|
454 printf("Hits after flush:\n"); |
427 printf("Hits after flush:\n"); |
455 idxUtil_->printHits( hits, testMgr, true ); |
428 idxUtil_->printHits( hits, testMgr, true ); |
456 |
429 |
457 ITK_EXPECT( testMgr, cpix_Succeeded( hits ), "Accessing hit length failed" ); |
430 ITK_EXPECT( testMgr, cpix_Succeeded( hits ), "Accessing hit length failed" ); |
458 ITK_EXPECT( testMgr, length == 0, "The items were not deleted." ); |
431 ITK_EXPECT( testMgr, length == 0, "The items were not deleted." ); |
460 cpix_Hits_destroy( hits ); |
433 cpix_Hits_destroy( hits ); |
461 } |
434 } |
462 else |
435 else |
463 { |
436 { |
464 ITK_PANIC("Hits was null"); |
437 ITK_PANIC("Hits was null"); |
465 assert_failed = 1; |
438 |
466 } |
439 } |
467 cpix_Query_destroy( query ); |
440 cpix_Query_destroy( query ); |
468 } else { |
441 } else { |
469 ITK_PANIC("Could not create query"); |
442 ITK_PANIC("Could not create query"); |
470 assert_failed = 1; |
443 |
471 } |
444 } |
472 |
445 |
473 } |
446 } |
474 |
447 |
475 |
448 |