11using NUnit . Framework ;
2+ using ServiceStack . Text ;
23
34namespace ServiceStack . Redis . Tests
45{
56 [ TestFixture ]
7+ [ Explicit , Ignore ( "CI requires redis-server v3.2.0" ) ]
68 public class RedisGeoTests
79 {
810 private readonly RedisNativeClient redis ;
@@ -22,7 +24,8 @@ public void TestFixtureTearDown()
2224 public void Can_GeoAdd_and_GeoPos ( )
2325 {
2426 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 ) ) ;
2629 var results = redis . GeoPos ( "Sicily" , "Palermo" ) ;
2730
2831 Assert . That ( results . Count , Is . EqualTo ( 1 ) ) ;
@@ -35,9 +38,10 @@ public void Can_GeoAdd_and_GeoPos()
3538 public void Can_GeoAdd_and_GeoPos_multiple ( )
3639 {
3740 redis . FlushDb ( ) ;
38- redis . GeoAdd ( "Sicily" ,
41+ var count = redis . GeoAdd ( "Sicily" ,
3942 new RedisGeo ( 13.361389 , 38.115556 , "Palermo" ) ,
4043 new RedisGeo ( 15.087269 , 37.502669 , "Catania" ) ) ;
44+ Assert . That ( count , Is . EqualTo ( 2 ) ) ;
4145
4246 var results = redis . GeoPos ( "Sicily" , "Palermo" , "Catania" ) ;
4347
@@ -66,6 +70,7 @@ public void Can_GeoDist()
6670 [ Test ]
6771 public void Can_GeoHash ( )
6872 {
73+ redis . FlushDb ( ) ;
6974 redis . GeoAdd ( "Sicily" ,
7075 new RedisGeo ( 13.361389 , 38.115556 , "Palermo" ) ,
7176 new RedisGeo ( 15.087269 , 37.502669 , "Catania" ) ) ;
@@ -74,5 +79,122 @@ public void Can_GeoHash()
7479 Assert . That ( hashes [ 0 ] , Is . EqualTo ( "sqc8b49rny0" ) ) ;
7580 Assert . That ( hashes [ 1 ] , Is . EqualTo ( "sqdtr74hyu0" ) ) ;
7681 }
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+ }
77199 }
78200}
0 commit comments