/**
  * Open a new changeset, create a node and save it by associating it with
  * that changeset and then committing.
  * The id of the node should change from -1 to a positive integer/double.
  *
  * @return void
  */
 public function testSaveNode()
 {
     if (!file_exists($this->credentialsFile)) {
         $this->markTestSkipped('Credentials file does not exist.');
     }
     $mock = new HTTP_Request2_Adapter_Mock();
     $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
     $mock->addResponse(fopen(__DIR__ . '/responses/changeset_id', 'rb'));
     $mock->addResponse(fopen(__DIR__ . '/responses/diff_create_node.xml', 'rb'));
     $mock->addResponse(fopen(__DIR__ . '/responses/changeset_closed', 'rb'));
     $config = array('adapter' => $mock, 'server' => 'http://api06.dev.openstreetmap.org/', 'passwordfile' => $this->credentialsFile);
     $osm = new Services_OpenStreetMap($config);
     $lat = 52.8638729;
     $lon = -8.1983611;
     $node = $osm->createNode($lat, $lon, array('building' => 'yes', 'amenity' => 'vet'));
     $this->assertEquals($node->getTags(), array('building' => 'yes', 'amenity' => 'vet'));
     $this->assertEquals($lat, $node->getlat());
     $this->assertEquals($lon, $node->getlon());
     $node->setTag('amenity', 'veterinary')->setTag('name', 'O\'Kennedy');
     $this->assertEquals($node->getTags(), array('building' => 'yes', 'amenity' => 'veterinary', 'name' => 'O\'Kennedy'));
     $this->assertEquals(-1, $node->getId());
     $changeset = $osm->createChangeset();
     $changeset->begin("Add O'Kennedy vets in Nenagh");
     $changeset->add($node);
     $changeset->commit();
     $this->assertEquals($node->getId(), 1448499623);
 }
require_once 'Services/OpenStreetMap.php';
require_once 'HTTP/Request2.php';
require_once 'HTTP/Request2/Adapter/Mock.php';
$osm = new Services_OpenStreetMap();
$mock = new HTTP_Request2_Adapter_Mock();
$mock->addResponse(fopen(__DIR__ . '/../tests/responses/capabilities.xml', 'rb'));
$mock->addResponse(fopen(__DIR__ . '/../tests/responses/changeset.xml', 'rb'));
$mock->addResponse(fopen(__DIR__ . '/../tests/responses/changeset.xml', 'rb'));
$mock->addResponse(fopen(__DIR__ . '/../tests/responses/diff_create_node.xml', 'rb'));
$mock->addResponse(fopen(__DIR__ . '/../tests/responses/changeset_closed', 'rb'));
$config = array('adapter' => $mock, 'server' => 'http://api.openstreetmap.org/', 'passwordfile' => __DIR__ . '/credentials');
$osm = new Services_OpenStreetMap($config);
$mm = $osm->bboxToMinMax(-8.6519835, 52.638735499999996, -8.6214513, 52.649915099999994);
$osm->get($mm[0], $mm[1], $mm[2], $mm[3]);
$results = $osm->search(array("building" => "yes"));
$changeset = $osm->createChangeset();
$changeset->begin('Additional details for ballinacurra gardens.');
foreach ($results as $result) {
    $addrStreet = $result->getTag('addr:street');
    if ($addrStreet != 'Oakview Drive') {
        continue;
    }
    $user = $result->getUser();
    $name = $result->getTag('name');
    if ('exampleusername' == $user) {
        $tags = $result->getTags();
        if (isset($tags['building_roof'])) {
            continue;
        }
        try {
            $result->setTags(array('building' => 'house', 'building:cladding' => 'brick', 'building:levels' => '2', 'building:roof' => 'tile', 'building:roof:shape' => 'pitched', 'source' => 'survey', 'source:geometry' => 'bing'));