added another unit test to exercise the coordinate calculation bug
Showing
1 changed file
with
54 additions
and
12 deletions
@@ -30,7 +30,6 @@ | @@ -30,7 +30,6 @@ | ||
30 | WithLocation:initialCenter]; | 30 | WithLocation:initialCenter]; |
31 | NSLog(@"contentView %@ mapView %@", contentView, mapView); | 31 | NSLog(@"contentView %@ mapView %@", contentView, mapView); |
32 | [contentView addSubview:mapView]; | 32 | [contentView addSubview:mapView]; |
33 | - [NSThread sleepForTimeInterval:3.0]; | ||
34 | } | 33 | } |
35 | 34 | ||
36 | -(void)tearDown { | 35 | -(void)tearDown { |
@@ -83,29 +82,30 @@ | @@ -83,29 +82,30 @@ | ||
83 | - (void)testMarkerCreation | 82 | - (void)testMarkerCreation |
84 | { | 83 | { |
85 | CLLocationCoordinate2D markerPosition; | 84 | CLLocationCoordinate2D markerPosition; |
86 | -#define kNumberRows 1 | ||
87 | -#define kNumberColumns 5 | ||
88 | -#define kSpacing 2.0 | 85 | + NSUInteger nRows = 1; |
86 | + NSUInteger nColumns = 8; | ||
87 | + double columnSpacing = 2.0; | ||
89 | 88 | ||
90 | UIImage *markerImage = [UIImage imageNamed:@"marker-red.png"]; | 89 | UIImage *markerImage = [UIImage imageNamed:@"marker-red.png"]; |
91 | - STAssertNotNil(markerImage, @"marker image did not load"); | ||
92 | - markerPosition.latitude = initialCenter.latitude - ((kNumberRows - 1)/2.0 * kSpacing); | 90 | + STAssertNotNil(markerImage, @"testMarkerCreation marker image did not load"); |
91 | + markerPosition.latitude = initialCenter.latitude - ((nRows - 1)/2.0 * columnSpacing); | ||
93 | int i, j; | 92 | int i, j; |
94 | - for (i = 0; i < kNumberRows; i++) { | ||
95 | - markerPosition.longitude = initialCenter.longitude - ((kNumberColumns - 1)/2.0 * kSpacing); | ||
96 | - for (j = 0; j < kNumberColumns; j++) { | ||
97 | - markerPosition.longitude += kSpacing; | 93 | + for (i = 0; i < nRows; i++) { |
94 | + markerPosition.longitude = initialCenter.longitude - ((nColumns - 1)/2.0 * columnSpacing); | ||
95 | + for (j = 0; j < nColumns; j++) { | ||
96 | + markerPosition.longitude += columnSpacing; | ||
98 | NSLog(@"%f %f", markerPosition.latitude, markerPosition.longitude); | 97 | NSLog(@"%f %f", markerPosition.latitude, markerPosition.longitude); |
99 | RMMarker *newMarker = [[RMMarker alloc] initWithUIImage:markerImage]; | 98 | RMMarker *newMarker = [[RMMarker alloc] initWithUIImage:markerImage]; |
99 | + STAssertNotNil(newMarker, @"testMarkerCreation marker creation failed"); | ||
100 | #ifdef DEBUG | 100 | #ifdef DEBUG |
101 | [newMarker setLatlon:markerPosition]; | 101 | [newMarker setLatlon:markerPosition]; |
102 | #endif | 102 | #endif |
103 | [mapView.contents.markerManager addMarker:newMarker | 103 | [mapView.contents.markerManager addMarker:newMarker |
104 | AtLatLong:markerPosition]; | 104 | AtLatLong:markerPosition]; |
105 | } | 105 | } |
106 | - markerPosition.latitude += kSpacing; | 106 | + markerPosition.latitude += columnSpacing; |
107 | } | 107 | } |
108 | - | 108 | + |
109 | #ifdef DEBUG | 109 | #ifdef DEBUG |
110 | RMMarkerManager *mangler = [[mapView contents] markerManager]; | 110 | RMMarkerManager *mangler = [[mapView contents] markerManager]; |
111 | 111 | ||
@@ -116,6 +116,48 @@ | @@ -116,6 +116,48 @@ | ||
116 | screenPosition.y, screenPosition.x); | 116 | screenPosition.y, screenPosition.x); |
117 | } | 117 | } |
118 | #endif | 118 | #endif |
119 | +} | ||
120 | + | ||
121 | +- (void)testMarkerCoordinates | ||
122 | +{ | ||
123 | + CLLocationCoordinate2D markerPosition; | ||
124 | + | ||
125 | + NSUInteger nColumns = 8; | ||
126 | + double columnSpacing = 2.0; | ||
127 | + | ||
128 | + UIImage *markerImage = [UIImage imageNamed:@"marker-red.png"]; | ||
129 | + markerPosition.latitude = initialCenter.latitude; | ||
130 | + markerPosition.longitude = initialCenter.longitude - ((nColumns - 1)/2.0 * columnSpacing); | ||
131 | + int j; | ||
132 | + NSMutableArray *testMarkers = [NSMutableArray arrayWithCapacity:nColumns]; | ||
133 | + for (j = 0; j < nColumns; j++) { | ||
134 | + markerPosition.longitude += columnSpacing; | ||
135 | + NSLog(@"%f %f", markerPosition.latitude, markerPosition.longitude); | ||
136 | + RMMarker *newMarker = [[RMMarker alloc] initWithUIImage:markerImage]; | ||
137 | + [testMarkers addObject:newMarker]; | ||
138 | +#ifdef DEBUG | ||
139 | + [newMarker setLatlon:markerPosition]; | ||
140 | +#endif | ||
141 | + [mapView.contents.markerManager addMarker:newMarker | ||
142 | + AtLatLong:markerPosition]; | ||
143 | + } | ||
144 | + STAssertGreaterThan(columnSpacing, 0.0, @"this test requires positive columnSpacing"); | ||
145 | +#ifdef DEBUG | ||
146 | + RMMarkerManager *mangler = [[mapView contents] markerManager]; | ||
147 | + | ||
148 | + [[mapView contents] moveBy:CGSizeMake(-5.0, 0.0)]; | ||
149 | + for (j = 1; j < nColumns; j++) { | ||
150 | + RMMarker *leftMarker = [testMarkers objectAtIndex:j - 1]; | ||
151 | + RMMarker *rightMarker = [testMarkers objectAtIndex:j]; | ||
152 | + CGPoint leftScreenPosition = [mangler getMarkerScreenCoordinate:leftMarker]; | ||
153 | + CGPoint rightScreenPosition = [mangler getMarkerScreenCoordinate:rightMarker]; | ||
154 | + STAssertLessThan(leftScreenPosition.x, rightScreenPosition.x, | ||
155 | + @"screen position calculation failed: left (%f, %f) right (%f, %f) mapped to left (%f, %f) right (%f, %f)", | ||
156 | + leftMarker.latlon.longitude, leftMarker.latlon.latitude, | ||
157 | + rightMarker.latlon.longitude, rightMarker.latlon.latitude, | ||
158 | + leftScreenPosition.x, leftScreenPosition.y, rightScreenPosition.x, rightScreenPosition.y); | ||
159 | + } | ||
160 | +#endif | ||
119 | 161 | ||
120 | } | 162 | } |
121 | @end | 163 | @end |
-
Please register or login to post a comment