/** * Test adding nodes to a way. * * @return void */ public function testAddNodeToWay() { $id = 23010474; $mock = new HTTP_Request2_Adapter_Mock(); $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb')); $mock->addResponse(fopen(__DIR__ . '/responses/way_open.xml', 'rb')); $config = array('adapter' => $mock, 'server' => 'http://api06.dev.openstreetmap.org'); $osm = new Services_OpenStreetMap($config); $way = $osm->getWay($id); $lat = 52.8638729; $lon = -8.1983611; $nodes = $way->getNodes(); $node = $osm->createNode($lat, $lon); $way->addNode($node); $lat = $lat + 2.0E-5; $node = $osm->createNode($lat, $lon); $way->addNode($node); $this->assertEquals(sizeof($nodes) + 2, sizeof($way->getNodes())); }
/** * 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); }
/** * Test invalid longitude value in constructor * * @expectedException InvalidArgumentException * @expectedExceptionMessage Longitude must be numeric * * @return void */ public function testCreateNodeNonnumericLonInConstructor() { $mock = new HTTP_Request2_Adapter_Mock(); $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb')); $config = array('adapter' => $mock, 'server' => 'http://api06.dev.openstreetmap.org/'); $osm = new Services_OpenStreetMap($config); $lat = 52.8638729; $lon = 'TheBlessing'; $node = $osm->createNode($lat, $lon); }