$doc = new xfDocument('guid');
$doc->addField(new xfFieldValue(new xfField('name', xfField::KEYWORD), 'carl'));
$doc->addField(new xfFieldValue(new xfField('age', xfField::STORED), 18));
$engine->add($doc);
$engine->commit();
$t->is($engine->count(), 1, '->add() adds a document');
$parent = new xfDocument('parent');
$child = new xfDocument('child');
$pet = new xfDocument('pet');
$parent->addChild($child);
$child->addChild($pet);
$engine->add($parent);
$engine->commit();
$t->is($engine->count(), 4, '->add() adds a document and every subdocument');
$t->diag('->findGuid()');
$doc = $engine->findGuid('guid');
$t->isa_ok($doc, 'xfDocument', '->findGuid() returns an xfDocument');
$t->is($doc->getGuid(), 'guid', '->findGuid() returns the correct document');
$doc = $engine->findGuid('parent');
$children = $doc->getChildren();
$t->is(count($children), 1, '->findGuid() rebuilds subdocuments correctly');
$t->is($children['child']->getGuid(), 'child', '->findGuid() rebuilds subdocuments in correct order');
$children = $children['child']->getChildren();
$t->is($children['pet']->getGuid(), 'pet', '->findGuid() rebuilds subdocuments recursively');
try {
    $msg = '->findGuid() fails if the GUID does not exist';
    $engine->findGuid('foobar');
    $t->fail($msg);
} catch (Exception $e) {
    $t->pass($msg);
}