$relations = $osmApi->getRelations();
_assert(count($relations) == 1);
$ways = $osmApi->getWays();
_assert(count($ways) == 8);
$nodes = $osmApi->getNodes();
_assert(count($nodes) == 680);
$objects = $osmApi->getObjects();
_assert(count($objects) == 689);
// getRelation, getWay, getNode
$relation = $osmApi->getRelation('164211');
_assert($relation != null);
_assert($relation->isDirty() == false);
$way = $osmApi->getWay('34717700');
_assert($way != null);
_assert($way->isDirty() == false);
$node = $osmApi->getNode('691558211');
_assert($node != null);
_assert($node->isDirty() == false);
// getObjectsByTags
$objects = $osmApi->getObjectsByTags(array('ref:INSEE' => '37001'));
_assert(count($objects) == 2);
$objects = $osmApi->getObjectsByTags(array('ref:INSEE' => ''));
_assert(count($objects) == 2);
$objects = $osmApi->getObjectsByTags(array('ref:INSEE' => '', 'place' => ''));
_assert(count($objects) == 1);
// test removeObject
$osmApi->removeObject(OSM_Api::OBJTYPE_NODE, '691558211');
$node = $osmApi->hasNode('691558211');
_assert($node == null);
$time_end = microtime(true);
_wl('Test well done in ' . number_format($time_end - $time_start, 3) . ' second(s).');
$tagName = 'yapafo.net::test::' . time();
$tagValue = 'Have a nice dev ;-)';
$node->addTag(new OSM_Objects_Tag($tagName, $tagValue));
$tags = $node->findTags(array($tagName => $tagValue));
_assert(count($tags) == 1);
_assert($node->hasTags(array($tagName => $tagValue)));
// save changes
_assert($node->isDirty());
_wl(' saving changes...');
$osmApi->saveChanges('A yapafo.net test');
_assert($node->isDirty());
$tags = $node->findTags(array($tagName => $tagValue));
_assert(count($tags) == 1);
_assert($node->hasTags(array($tagName => $tagValue)));
// remove then reload object to get real changes
$osmApi->removeObject(OSM_Api::OBJTYPE_NODE, '611571');
$node = $osmApi->getNode('611571');
$tags = $node->findTags(array($tagName => $tagValue));
_assert(count($tags) == 1);
_assert($node->hasTags(array($tagName => $tagValue)));
// test a node's tag modification
$tagName = 'yapafo.net::test::modify';
$tagValue = '1';
$osmApi->removeAllObjects();
$node = $osmApi->getNode('611571');
if (!$node->hasTags(array($tagName => null))) {
    $node->addTag(new OSM_Objects_Tag($tagName, $tagValue));
    _wl(' saving changes...');
    $osmApi->saveChanges('A yapafo.net test');
    $osmApi->removeAllObjects();
    $node = $osmApi->getNode('611571');