http://www.phing.info/

Source Code Coverage

Designed for use with PHPUnit, Xdebug and Phing.

Methods: 3 LOC: 249 Statements: 142
Legend: executednot executeddead code
Source file Statements Methods Total coverage
RelationTest.php 100.0% 100.0% 100.0%
 
1
<?php
2
/**
3
 * Unit test class for Relation related functionality.
4
 *
5
 * PHP Version 5
6
 *
7
 * @category   Services
8
 * @package    Services_OpenStreetMap
9
 * @subpackage UnitTesting
10
 * @author     Ken Guest <kguest@php.net>
11
 * @license    BSD http://www.opensource.org/licenses/bsd-license.php
12
 * @version    Release: @package_version@
13
 * @link       RelationTest.php
14
 */
15
16
$version = '@package_version@';
17
if (strstr($version, 'package_version')) {
18
    set_include_path(dirname(dirname(__FILE__)) . ':' . get_include_path());
19
}
20
21
require_once 'Services/OpenStreetMap.php';
22
23
require_once 'HTTP/Request2.php';
24
require_once 'HTTP/Request2/Adapter/Mock.php';
25
require_once 'PHPUnit/Framework/TestCase.php';
26
27
28
/**
29
 * Test retrieving relations.
30
 *
31
 * @category   Services
32
 * @package    Services_OpenStreetMap
33
 * @subpackage UnitTesting
34
 * @author     Ken Guest <kguest@php.net>
35
 * @license    BSD http://www.opensource.org/licenses/bsd-license.php
36
 * @link       RelationTest.php
37
 */
38
class RelationTest extends PHPUnit_Framework_TestCase
39
{
40
    /**
41
     * Test retrieving just one relation.
42
     *
43
     * @return void
44
     */
45
    public function testGetRelation()
46
    {
47 1
        $id = 1152802;
48
49 1
        $mock = new HTTP_Request2_Adapter_Mock();
50 1
        $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
51 1
        $mock->addResponse(fopen(__DIR__ . '/responses/relation.xml', 'rb'));
52 1
        $mock->addResponse(
53 1
            fopen(__DIR__ . '/responses/relation_changeset.xml', 'rb')
54 1
        );
55
56
        $config = array(
57 1
            'adapter' => $mock,
58
            'server'  => 'http://api06.dev.openstreetmap.org/'
59 1
        );
60 1
        $osm = new Services_OpenStreetMap($config);
61 1
        $relation = $osm->getRelation($id);
62 1
        $this->assertEquals($id, $relation->getId());
63 1
        $changesetId = (int) $relation->getAttributes()->changeset;
64 1
        $getTags = $relation->getTags();
65 1
        $this->assertEquals($getTags['name'], 'Mitchell Street');
66 1
        $this->assertEquals($getTags['type'], 'associatedStreet');
67
68 1
        $changeset = $osm->getChangeset($changesetId);
69 1
        $this->assertEquals($changesetId, $changeset->getId());
70 1
        $getTags = $changeset->getTags();
71 1
        $this->assertEquals($getTags['comment'], 'IE. Nenagh. Mitchell Street POIs');
72 1
        $members = $relation->getMembers();
73
74 1
        $this->assertEquals(18, sizeof($members));
75 1
        foreach ($members as $member) {
76 1
            $this->assertEquals('house', $member['role']);
77 1
            $this->assertEquals('way', $member['type']);
78 1
            $this->assertTrue(is_numeric($member['ref']));
79 1
        }
80
    }
81
82
83
    /**
84
     * Test getRelations with ids specified in one array.
85
     *
86
     * @return void
87
     */
88
    public function testGetRelationsViaArray()
89
    {
90 1
        $mock = new HTTP_Request2_Adapter_Mock();
91 1
        $mock->addResponse(
92 1
            fopen(__DIR__ . '/responses/capabilities.xml', 'rb')
93 1
        );
94 1
        $mock->addResponse(
95 1
            fopen(__DIR__ . '/responses/relations_917266_20645_2740.xml', 'rb')
96 1
        );
97 1
        $mock->addResponse(
98 1
            fopen(__DIR__ . '/responses/relation_changeset.xml', 'rb')
99 1
        );
100
101
        $config = array(
102 1
            'adapter' => $mock,
103
            'server' => 'http://api06.dev.openstreetmap.org/'
104 1
        );
105 1
        $osm = new Services_OpenStreetMap($config);
106 1
        $relations = $osm->getRelations(array(917266,20645,2740));
107
108 1
        $this->assertEquals(3, sizeof($relations));
109
        $relationsInfo = array(
110
            array(
111 1
                'id' => 2740,
112 1
                'name' => 'The Wicklow Way',
113 1
                'type' => 'route',
114
                'members' => array(
115 1
                    'role' => '',
116 1
                    'count' => 113,
117
                    'type' => 'node'
118 1
                )
119 1
            ),
120
121
            array(
122 1
                'id' => 20645,
123 1
                'name' => 'International E-road network',
124 1
                'type' => 'network',
125
                'members' => array(
126 1
                    'role' => '',
127 1
                    'type'=>'relation',
128
                    'count' => 48
129 1
                )
130 1
            ),
131
132
            array(
133 1
                'id' => 917266,
134 1
                'name' => 'Dublin Bus route 14',
135 1
                'type' => 'route',
136
                'members' => array(
137 1
                    'role' => 'forward',
138 1
                    'type'=> 'way',
139
                    'count'=>112
140 1
                )
141 1
            ),
142 1
        );
143 1
        foreach ($relations as $key=>$relation) {
144 1
            $tags = $relation->getTags();
145 1
            $members = $relation->getMembers();
146 1
            $this->assertEquals($relation->getId(), $relationsInfo[$key]['id']);
147 1
            $this->assertEquals($tags['name'], $relationsInfo[$key]['name']);
148 1
            $this->assertEquals($tags['type'], $relationsInfo[$key]['type']);
149 1
            $this->assertEquals(
150 1
                sizeof($members),
151 1
                $relationsInfo[$key]['members']['count']
152 1
            );
153 1
            $this->assertEquals(
154 1
                $members[0]['type'],
155 1
                $relationsInfo[$key]['members']['type']
156 1
            );
157 1
            $this->assertEquals(
158 1
                $members[0]['role'],
159 1
                $relationsInfo[$key]['members']['role']
160 1
            );
161 1
        }
162
    }
163
164
    /**
165
     * Test getRelations called with more than one argument/parameter.
166
     *
167
     * @return void
168
     */
169
    public function testGetRelationsManyArgs()
170
    {
171 1
        $mock = new HTTP_Request2_Adapter_Mock();
172 1
        $mock->addResponse(
173 1
            fopen(__DIR__ . '/responses/capabilities.xml', 'rb')
174 1
        );
175 1
        $mock->addResponse(
176 1
            fopen(__DIR__ . '/responses/relations_917266_20645_2740.xml', 'rb')
177 1
        );
178 1
        $mock->addResponse(
179 1
            fopen(__DIR__ . '/responses/relation_changeset.xml', 'rb')
180 1
        );
181
182
        $config = array(
183 1
            'adapter' => $mock,
184
            'server' => 'http://api06.dev.openstreetmap.org/'
185 1
        );
186 1
        $osm = new Services_OpenStreetMap($config);
187 1
        $relations = $osm->getRelations(917266, 20645, 2740);
188
189 1
        $this->assertEquals(3, sizeof($relations));
190
        $relationsInfo = array(
191
            array(
192 1
                'id' => 2740,
193 1
                'name' => 'The Wicklow Way',
194 1
                'type' => 'route',
195
                'members' => array(
196 1
                    'role' => '',
197 1
                    'count' => 113,
198
                    'type' => 'node'
199 1
                )
200 1
            ),
201
202
            array(
203 1
                'id' => 20645,
204 1
                'name' => 'International E-road network',
205 1
                'type' => 'network',
206
                'members' => array(
207 1
                    'role' => '',
208 1
                    'type'=>'relation',
209
                    'count' => 48
210 1
                )
211 1
            ),
212
213
            array(
214 1
                'id' => 917266,
215 1
                'name' => 'Dublin Bus route 14',
216 1
                'type' => 'route',
217
                'members' => array(
218 1
                    'role' => 'forward',
219 1
                    'type'=> 'way',
220
                    'count'=>112
221 1
                )
222 1
            ),
223 1
        );
224 1
        foreach ($relations as $key=>$relation) {
225 1
            $tags = $relation->getTags();
226 1
            $members = $relation->getMembers();
227 1
            $this->assertEquals($tags['name'], $relationsInfo[$key]['name']);
228 1
            $this->assertEquals($tags['type'], $relationsInfo[$key]['type']);
229 1
            $this->assertEquals(
230 1
                $relation->getId(),
231 1
                $relationsInfo[$key]['id']
232 1
            );
233 1
            $this->assertEquals(
234 1
                sizeof($members),
235 1
                $relationsInfo[$key]['members']['count']
236 1
            );
237 1
            $this->assertEquals(
238 1
                $members[0]['type'],
239 1
                $relationsInfo[$key]['members']['type']
240 1
            );
241 1
            $this->assertEquals(
242 1
                $members[0]['role'],
243 1
                $relationsInfo[$key]['members']['role']
244 1
            );
245 1
        }
246
    }
247
}
248
249
?>


Report generated at 2012-10-02T18:40:35+01:00