http://www.phing.info/

Source Code Coverage

Designed for use with PHPUnit, Xdebug and Phing.

Methods: 3 LOC: 234 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
    public function testGetRelation()
41
    {
42 1
        $id = 1152802;
43
44 1
        $mock = new HTTP_Request2_Adapter_Mock();
45 1
        $mock->addResponse(fopen(__DIR__ . '/responses/capabilities.xml', 'rb'));
46 1
        $mock->addResponse(fopen(__DIR__ . '/responses/relation.xml', 'rb'));
47 1
        $mock->addResponse(
48 1
            fopen(__DIR__ . '/responses/relation_changeset.xml', 'rb')
49 1
        );
50
51
        $config = array(
52 1
            'adapter' => $mock,
53
            'server' => 'http://api06.dev.openstreetmap.org/'
54 1
        );
55 1
        $osm = new Services_Openstreetmap($config);
56 1
        $relation = $osm->getRelation($id);
57 1
        $this->assertEquals($id, $relation->getId());
58 1
        $changeset_id = (int) $relation->getAttributes()->changeset;
59 1
        $getTags = $relation->getTags();
60 1
        $this->assertEquals($getTags['name'], 'Mitchell Street');
61 1
        $this->assertEquals($getTags['type'], 'associatedStreet');
62
63 1
        $changeset = $osm->getChangeset($changeset_id);
64 1
        $this->assertEquals($changeset_id, $changeset->getId());
65 1
        $getTags = $changeset->getTags();
66 1
        $this->assertEquals($getTags['comment'], 'IE. Nenagh. Mitchell Street POIs');
67 1
        $members = $relation->getMembers();
68
69 1
        $this->assertEquals(18, sizeof($members));
70 1
        foreach( $members as $member ) {
71 1
            $this->assertEquals('house', $member['role']);
72 1
            $this->assertEquals('way', $member['type']);
73 1
            $this->assertTrue(is_numeric($member['ref']));
74 1
        }
75
    }
76
77
78
    public function testGetRelationsViaArray()
79
    {
80 1
        $mock = new HTTP_Request2_Adapter_Mock();
81 1
        $mock->addResponse(
82 1
            fopen(__DIR__ . '/responses/capabilities.xml', 'rb')
83 1
        );
84 1
        $mock->addResponse(
85 1
            fopen(__DIR__ . '/responses/relations_917266_20645_2740.xml', 'rb')
86 1
        );
87 1
        $mock->addResponse(
88 1
            fopen(__DIR__ . '/responses/relation_changeset.xml', 'rb')
89 1
        );
90
91
        $config = array(
92 1
            'adapter' => $mock,
93
            'server' => 'http://api06.dev.openstreetmap.org/'
94 1
        );
95 1
        $osm = new Services_Openstreetmap($config);
96 1
        $relations = $osm->getRelations(array(917266,20645,2740));
97
98 1
        $this->assertEquals(3, sizeof($relations));
99
        $relations_info = array(
100
            array(
101 1
                'id' => 2740,
102 1
                'name' => 'The Wicklow Way',
103 1
                'type' => 'route',
104
                'members' => array(
105 1
                    'role' => '',
106 1
                    'count' => 113,
107
                    'type' => 'node'
108 1
                )
109 1
            ),
110
111
            array(
112 1
                'id' => 20645,
113 1
                'name' => 'International E-road network',
114 1
                'type' => 'network',
115
                'members' => array(
116 1
                    'role' => '',
117 1
                    'type'=>'relation',
118
                    'count' => 48
119 1
                )
120 1
            ),
121
122
            array(
123 1
                'id' => 917266,
124 1
                'name' => 'Dublin Bus route 14',
125 1
                'type' => 'route',
126
                'members' => array(
127 1
                    'role' => 'forward',
128 1
                    'type'=> 'way',
129
                    'count'=>112
130 1
                )
131 1
            ),
132 1
        );
133 1
        foreach ($relations as $key=>$relation) {
134 1
            $tags = $relation->getTags();
135 1
            $members = $relation->getMembers();
136 1
            $this->assertEquals($relation->getId(), $relations_info[$key]['id']);
137 1
            $this->assertEquals($tags['name'], $relations_info[$key]['name']);
138 1
            $this->assertEquals($tags['type'], $relations_info[$key]['type']);
139 1
            $this->assertEquals(
140 1
                sizeof($members),
141 1
                $relations_info[$key]['members']['count']
142 1
            );
143 1
            $this->assertEquals(
144 1
                $members[0]['type'],
145 1
                $relations_info[$key]['members']['type']
146 1
            );
147 1
            $this->assertEquals(
148 1
                $members[0]['role'],
149 1
                $relations_info[$key]['members']['role']
150 1
            );
151 1
        }
152
    }
153
154
    public function testGetRelationsManyArgs()
155
    {
156 1
        $mock = new HTTP_Request2_Adapter_Mock();
157 1
        $mock->addResponse(
158 1
            fopen(__DIR__ . '/responses/capabilities.xml', 'rb')
159 1
        );
160 1
        $mock->addResponse(
161 1
            fopen(__DIR__ . '/responses/relations_917266_20645_2740.xml', 'rb')
162 1
        );
163 1
        $mock->addResponse(
164 1
            fopen(__DIR__ . '/responses/relation_changeset.xml', 'rb')
165 1
        );
166
167
        $config = array(
168 1
            'adapter' => $mock,
169
            'server' => 'http://api06.dev.openstreetmap.org/'
170 1
        );
171 1
        $osm = new Services_Openstreetmap($config);
172 1
        $relations = $osm->getRelations(917266, 20645, 2740);
173
174 1
        $this->assertEquals(3, sizeof($relations));
175
        $relations_info = array(
176
            array(
177 1
                'id' => 2740,
178 1
                'name' => 'The Wicklow Way',
179 1
                'type' => 'route',
180
                'members' => array(
181 1
                    'role' => '',
182 1
                    'count' => 113,
183
                    'type' => 'node'
184 1
                )
185 1
            ),
186
187
            array(
188 1
                'id' => 20645,
189 1
                'name' => 'International E-road network',
190 1
                'type' => 'network',
191
                'members' => array(
192 1
                    'role' => '',
193 1
                    'type'=>'relation',
194
                    'count' => 48
195 1
                )
196 1
            ),
197
198
            array(
199 1
                'id' => 917266,
200 1
                'name' => 'Dublin Bus route 14',
201 1
                'type' => 'route',
202
                'members' => array(
203 1
                    'role' => 'forward',
204 1
                    'type'=> 'way',
205
                    'count'=>112
206 1
                )
207 1
            ),
208 1
        );
209 1
        foreach ($relations as $key=>$relation) {
210 1
            $tags = $relation->getTags();
211 1
            $members = $relation->getMembers();
212 1
            $this->assertEquals($tags['name'], $relations_info[$key]['name']);
213 1
            $this->assertEquals($tags['type'], $relations_info[$key]['type']);
214 1
            $this->assertEquals(
215 1
                $relation->getId(),
216 1
                $relations_info[$key]['id']
217 1
            );
218 1
            $this->assertEquals(
219 1
                sizeof($members),
220 1
                $relations_info[$key]['members']['count']
221 1
            );
222 1
            $this->assertEquals(
223 1
                $members[0]['type'],
224 1
                $relations_info[$key]['members']['type']
225 1
            );
226 1
            $this->assertEquals(
227 1
                $members[0]['role'],
228 1
                $relations_info[$key]['members']['role']
229 1
            );
230 1
        }
231
    }
232
}
233
234
?>


Report generated at 2012-01-31T21:54:38Z