#!/usr/bin/php
<?php 
$time_start = microtime(true);
require_once __DIR__ . '/tests_common.php';
_wl('test "' . basename(__FILE__) . '');
require_once __DIR__ . '/../lib/OSM/Api.php';
$osmApi = new OSM_Api();
$osmApi->getRelation('164211');
// only the relation is loaded
$relations = $osmApi->getRelations();
_assert(count($relations) == 1);
$ways = $osmApi->getWays();
_assert(count($ways) == 0);
$nodes = $osmApi->getNodes();
_assert(count($nodes) == 0);
$objects = $osmApi->getObjects();
_assert(count($objects) == 1);
// the relation and all its members are loaded
$osmApi->getRelation('164211', true);
// getRelations, getWays, getNodes
$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);
</union>
<print />
</osm-script>
';
$osmApi->queryOApi($xmlQuery);
// getRelations, getWays, getNodes
$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);
    $osmApi->saveChanges('A yapafo.net test');
    $osmApi->removeAllObjects();
    $node = $osmApi->getNode('611571');
} else {
}
$node->setTag($tagName, $tagValue + 1);
_assert($node->isDirty());
_wl(' saving changes...');
$osmApi->saveChanges('A yapafo.net test');
_assert($node->isDirty());
$osmApi->removeAllObjects();
$node = $osmApi->getNode('611571');
_assert(!$node->isDirty());
_assert($node->getTag($tagName, $tagValue + 1)->getValue() == '2');
// @todo ...
$relation = $osmApi->getRelation('500');
$memberRole = 'yapafo_test';
// Create a node
$node = $osmApi->addNewNode(0.1, 0.1);
$node->addTag('A yapafo.net test', 'add node');
// Add it has member to the relation
$member = new OSM_Objects_Member(OSM_Api::OBJTYPE_NODE, $node->getId(), $memberRole);
$relation->addMember($member);
$osmApi->saveChanges('A yapafo.net test');
//
// Check node exists and it's a relation's member.
//
$osmApi->removeAllObjects();
$relation = $osmApi->getRelation('500', true);
$nodes = $osmApi->getNodesByTags(array('A yapafo.net test' => 'add node'));
_assert($nodes != null);