1
1
using NUnit . Framework ;
2
+ using ServiceStack . Text ;
2
3
3
4
namespace ServiceStack . Redis . Tests
4
5
{
5
6
[ TestFixture ]
7
+ [ Explicit , Ignore ( "CI requires redis-server v3.2.0" ) ]
6
8
public class RedisGeoTests
7
9
{
8
10
private readonly RedisNativeClient redis ;
@@ -22,7 +24,8 @@ public void TestFixtureTearDown()
22
24
public void Can_GeoAdd_and_GeoPos ( )
23
25
{
24
26
redis . FlushDb ( ) ;
25
- redis . GeoAdd ( "Sicily" , 13.361389 , 38.115556 , "Palermo" ) ;
27
+ var count = redis . GeoAdd ( "Sicily" , 13.361389 , 38.115556 , "Palermo" ) ;
28
+ Assert . That ( count , Is . EqualTo ( 1 ) ) ;
26
29
var results = redis . GeoPos ( "Sicily" , "Palermo" ) ;
27
30
28
31
Assert . That ( results . Count , Is . EqualTo ( 1 ) ) ;
@@ -35,9 +38,10 @@ public void Can_GeoAdd_and_GeoPos()
35
38
public void Can_GeoAdd_and_GeoPos_multiple ( )
36
39
{
37
40
redis . FlushDb ( ) ;
38
- redis . GeoAdd ( "Sicily" ,
41
+ var count = redis . GeoAdd ( "Sicily" ,
39
42
new RedisGeo ( 13.361389 , 38.115556 , "Palermo" ) ,
40
43
new RedisGeo ( 15.087269 , 37.502669 , "Catania" ) ) ;
44
+ Assert . That ( count , Is . EqualTo ( 2 ) ) ;
41
45
42
46
var results = redis . GeoPos ( "Sicily" , "Palermo" , "Catania" ) ;
43
47
@@ -66,6 +70,7 @@ public void Can_GeoDist()
66
70
[ Test ]
67
71
public void Can_GeoHash ( )
68
72
{
73
+ redis . FlushDb ( ) ;
69
74
redis . GeoAdd ( "Sicily" ,
70
75
new RedisGeo ( 13.361389 , 38.115556 , "Palermo" ) ,
71
76
new RedisGeo ( 15.087269 , 37.502669 , "Catania" ) ) ;
@@ -74,5 +79,122 @@ public void Can_GeoHash()
74
79
Assert . That ( hashes [ 0 ] , Is . EqualTo ( "sqc8b49rny0" ) ) ;
75
80
Assert . That ( hashes [ 1 ] , Is . EqualTo ( "sqdtr74hyu0" ) ) ;
76
81
}
82
+
83
+ [ Test ]
84
+ public void Can_GeoRadius_default ( )
85
+ {
86
+ redis . FlushDb ( ) ;
87
+ redis . GeoAdd ( "Sicily" ,
88
+ new RedisGeo ( 13.361389 , 38.115556 , "Palermo" ) ,
89
+ new RedisGeo ( 15.087269 , 37.502669 , "Catania" ) ) ;
90
+
91
+ var results = redis . GeoRadius ( "Sicily" , 15 , 37 , 200 , RedisGeoUnit . Kilometers ) ;
92
+
93
+ Assert . That ( results . Count , Is . EqualTo ( 2 ) ) ;
94
+ Assert . That ( results [ 0 ] . Member , Is . EqualTo ( "Palermo" ) ) ;
95
+ Assert . That ( results [ 0 ] . Unit , Is . Null ) ;
96
+ Assert . That ( results [ 1 ] . Member , Is . EqualTo ( "Catania" ) ) ;
97
+ Assert . That ( results [ 1 ] . Unit , Is . Null ) ;
98
+ }
99
+
100
+ [ Test ]
101
+ public void Can_GeoRadius_WithCoord ( )
102
+ {
103
+ redis . FlushDb ( ) ;
104
+ redis . GeoAdd ( "Sicily" ,
105
+ new RedisGeo ( 13.361389 , 38.115556 , "Palermo" ) ,
106
+ new RedisGeo ( 15.087269 , 37.502669 , "Catania" ) ) ;
107
+
108
+ var results = redis . GeoRadius ( "Sicily" , 15 , 37 , 200 , RedisGeoUnit . Kilometers , withCoords : true ) ;
109
+
110
+ Assert . That ( results . Count , Is . EqualTo ( 2 ) ) ;
111
+ Assert . That ( results [ 0 ] . Member , Is . EqualTo ( "Palermo" ) ) ;
112
+ Assert . That ( results [ 0 ] . Unit , Is . EqualTo ( RedisGeoUnit . Kilometers ) ) ;
113
+ Assert . That ( results [ 0 ] . Longitude , Is . EqualTo ( 13.361389 ) . Within ( .1 ) ) ;
114
+ Assert . That ( results [ 0 ] . Latitude , Is . EqualTo ( 38.115556 ) . Within ( .1 ) ) ;
115
+
116
+ Assert . That ( results [ 1 ] . Member , Is . EqualTo ( "Catania" ) ) ;
117
+ Assert . That ( results [ 1 ] . Unit , Is . EqualTo ( RedisGeoUnit . Kilometers ) ) ;
118
+ Assert . That ( results [ 1 ] . Longitude , Is . EqualTo ( 15.087269 ) . Within ( .1 ) ) ;
119
+ Assert . That ( results [ 1 ] . Latitude , Is . EqualTo ( 37.502669 ) . Within ( .1 ) ) ;
120
+ }
121
+
122
+ [ Test ]
123
+ public void Can_GeoRadius_WithDist ( )
124
+ {
125
+ redis . FlushDb ( ) ;
126
+ redis . GeoAdd ( "Sicily" ,
127
+ new RedisGeo ( 13.361389 , 38.115556 , "Palermo" ) ,
128
+ new RedisGeo ( 15.087269 , 37.502669 , "Catania" ) ) ;
129
+
130
+ var results = redis . GeoRadius ( "Sicily" , 15 , 37 , 200 , RedisGeoUnit . Kilometers , withDist : true ) ;
131
+
132
+ Assert . That ( results . Count , Is . EqualTo ( 2 ) ) ;
133
+ Assert . That ( results [ 0 ] . Member , Is . EqualTo ( "Palermo" ) ) ;
134
+ Assert . That ( results [ 0 ] . Unit , Is . EqualTo ( RedisGeoUnit . Kilometers ) ) ;
135
+ Assert . That ( results [ 0 ] . Distance , Is . EqualTo ( 190.4424 ) . Within ( .1 ) ) ;
136
+
137
+ Assert . That ( results [ 1 ] . Member , Is . EqualTo ( "Catania" ) ) ;
138
+ Assert . That ( results [ 1 ] . Unit , Is . EqualTo ( RedisGeoUnit . Kilometers ) ) ;
139
+ Assert . That ( results [ 1 ] . Distance , Is . EqualTo ( 56.4413 ) . Within ( .1 ) ) ;
140
+ }
141
+
142
+ [ Test ]
143
+ public void Can_GeoRadius_WithCoord_WithDist_WithHash ( )
144
+ {
145
+ redis . FlushDb ( ) ;
146
+ redis . GeoAdd ( "Sicily" ,
147
+ new RedisGeo ( 13.361389 , 38.115556 , "Palermo" ) ,
148
+ new RedisGeo ( 15.087269 , 37.502669 , "Catania" ) ) ;
149
+
150
+ var results = redis . GeoRadius ( "Sicily" , 15 , 37 , 200 , RedisGeoUnit . Kilometers ,
151
+ withCoords : true , withDist : true , withHash : true ) ;
152
+
153
+ Assert . That ( results . Count , Is . EqualTo ( 2 ) ) ;
154
+ Assert . That ( results [ 0 ] . Member , Is . EqualTo ( "Palermo" ) ) ;
155
+ Assert . That ( results [ 0 ] . Unit , Is . EqualTo ( RedisGeoUnit . Kilometers ) ) ;
156
+ Assert . That ( results [ 0 ] . Longitude , Is . EqualTo ( 13.361389 ) . Within ( .1 ) ) ;
157
+ Assert . That ( results [ 0 ] . Latitude , Is . EqualTo ( 38.115556 ) . Within ( .1 ) ) ;
158
+ Assert . That ( results [ 0 ] . Distance , Is . EqualTo ( 190.4424 ) . Within ( .1 ) ) ;
159
+ Assert . That ( results [ 0 ] . Hash , Is . EqualTo ( 3479099956230698 ) ) ;
160
+
161
+ Assert . That ( results [ 1 ] . Member , Is . EqualTo ( "Catania" ) ) ;
162
+ Assert . That ( results [ 1 ] . Unit , Is . EqualTo ( RedisGeoUnit . Kilometers ) ) ;
163
+ Assert . That ( results [ 1 ] . Longitude , Is . EqualTo ( 15.087269 ) . Within ( .1 ) ) ;
164
+ Assert . That ( results [ 1 ] . Latitude , Is . EqualTo ( 37.502669 ) . Within ( .1 ) ) ;
165
+ Assert . That ( results [ 1 ] . Distance , Is . EqualTo ( 56.4413 ) . Within ( .1 ) ) ;
166
+ Assert . That ( results [ 1 ] . Hash , Is . EqualTo ( 3479447370796909 ) ) ;
167
+ }
168
+
169
+ [ Test ]
170
+ public void Can_GeoRadius_WithCoord_WithDist_WithHash_Count_and_Asc ( )
171
+ {
172
+ redis . FlushDb ( ) ;
173
+ redis . GeoAdd ( "Sicily" ,
174
+ new RedisGeo ( 13.361389 , 38.115556 , "Palermo" ) ,
175
+ new RedisGeo ( 15.087269 , 37.502669 , "Catania" ) ) ;
176
+
177
+ var results = redis . GeoRadius ( "Sicily" , 15 , 37 , 200 , RedisGeoUnit . Kilometers ,
178
+ withCoords : true , withDist : true , withHash : true , count : 1 , asc : false ) ;
179
+
180
+ Assert . That ( results . Count , Is . EqualTo ( 1 ) ) ;
181
+ Assert . That ( results [ 0 ] . Member , Is . EqualTo ( "Palermo" ) ) ;
182
+ Assert . That ( results [ 0 ] . Unit , Is . EqualTo ( RedisGeoUnit . Kilometers ) ) ;
183
+ Assert . That ( results [ 0 ] . Longitude , Is . EqualTo ( 13.361389 ) . Within ( .1 ) ) ;
184
+ Assert . That ( results [ 0 ] . Latitude , Is . EqualTo ( 38.115556 ) . Within ( .1 ) ) ;
185
+ Assert . That ( results [ 0 ] . Distance , Is . EqualTo ( 190.4424 ) . Within ( .1 ) ) ;
186
+ Assert . That ( results [ 0 ] . Hash , Is . EqualTo ( 3479099956230698 ) ) ;
187
+
188
+ results = redis . GeoRadius ( "Sicily" , 15 , 37 , 200 , RedisGeoUnit . Kilometers ,
189
+ withCoords : true , withDist : true , withHash : true , count : 1 , asc : true ) ;
190
+
191
+ Assert . That ( results . Count , Is . EqualTo ( 1 ) ) ;
192
+ Assert . That ( results [ 0 ] . Member , Is . EqualTo ( "Catania" ) ) ;
193
+ Assert . That ( results [ 0 ] . Unit , Is . EqualTo ( RedisGeoUnit . Kilometers ) ) ;
194
+ Assert . That ( results [ 0 ] . Longitude , Is . EqualTo ( 15.087269 ) . Within ( .1 ) ) ;
195
+ Assert . That ( results [ 0 ] . Latitude , Is . EqualTo ( 37.502669 ) . Within ( .1 ) ) ;
196
+ Assert . That ( results [ 0 ] . Distance , Is . EqualTo ( 56.4413 ) . Within ( .1 ) ) ;
197
+ Assert . That ( results [ 0 ] . Hash , Is . EqualTo ( 3479447370796909 ) ) ;
198
+ }
77
199
}
78
200
}
0 commit comments