/**
  * Magic method for unserializing
  *
  * @param string $serialized The serialized string
  */
 public function unserialize($serialized)
 {
     $data = unserialize($serialized);
     $this->engine = $data['engine'];
     foreach ($data['cache'] as $id => $score) {
         $hit = new Zend_Search_Lucene_Search_QueryHit($this->engine->getIndex());
         $hit->id = $id;
         $hit->score = $score;
         $this->hits[] = $hit;
     }
     $this->pointer = $data['pointer'];
 }
require 'result/xfResultException.class.php';
require 'addon/xfLuceneEnhancedFilesystem.class.php';
define('LOCATION', dirname(__FILE__) . '/../../sandbox/index');
if (is_dir(LOCATION)) {
    // clear the old index first
    foreach (new DirectoryIterator(LOCATION) as $file) {
        if ($file->isDot()) {
            continue;
        }
        unlink($file->getRealpath());
    }
} else {
    mkdir(LOCATION, 0777, true);
}
$t = new lime_test(69, new lime_output_color());
$engine = new xfLuceneEngine(LOCATION);
$t->diag('->open(), ->close()');
$engine->open();
$index = $engine->getIndex();
$t->isa_ok($index, 'Zend_Search_Lucene', '->open() opens the index');
$engine->open();
$t->ok($index === $engine->getIndex(), '->open() does not open another index if it is already open');
$engine->close();
try {
    $msg = '->close() closes the index';
    $engine->getIndex();
    $t->fail($msg);
} catch (Exception $e) {
    $t->pass($msg);
}
$engine->open();
 */
require dirname(__FILE__) . '/../../bootstrap/unit.php';
require 'util/xfLuceneZendManager.class.php';
require 'engine/xfLuceneHits.class.php';
require 'engine/xfEngine.interface.php';
require 'engine/xfLuceneEngine.class.php';
require 'criteria/xfCriterion.interface.php';
require 'result/xfDocumentHit.class.php';
require 'document/xfDocument.class.php';
require 'document/xfField.class.php';
require 'document/xfFieldValue.class.php';
require 'addon/xfLuceneEnhancedFilesystem.class.php';
$t = new lime_test(17, new lime_output_color());
$doc = new xfDocument('foobar');
$doc->addField(new xfFieldValue(new xfField('title', xfField::TEXT), 'foobar'));
$engine = new xfLuceneEngine(dirname(__FILE__) . '/../../sandbox/index');
$engine->erase();
$engine->open();
$engine->add($doc);
$engine->commit();
$zhits = $engine->getIndex()->find('foobar');
$hits = new xfLuceneHits($engine, $zhits);
$t->diag('->current()');
$r = $hits->current();
$t->isa_ok($r, 'xfDocumentHit', '->current() returns an xfDocumentHit');
$t->is($r->getOption('score'), $zhits[0]->score, '->current() returns an xfDocumentHit with correct score');
$t->is($r->getOption('id'), $zhits[0]->id, '->current() returns an xfDocumentHit with correct id');
$t->is($r->getDocument()->getField('title')->getValue(), 'foobar', '->current() communicates with the unwriter correctly');
$t->ok($r === $hits->current(), '->current() caches the response');
$t->diag('->key(), ->next(), ->valid(), ->rewind(), ->seek()');
$t->is($hits->key(), 0, '->key() returns the current key');