11using Xunit ;
22using NRedisStack . Core ;
3- using NRedisStack ;
43using static NRedisStack . Auxiliary ;
54using StackExchange . Redis ;
6- using System . Xml . Linq ;
7- using System . Reflection ;
5+ using NRedisStack . Core . DataTypes ;
86using NRedisStack . RedisStackCommands ;
97
108
@@ -164,7 +162,7 @@ public void TestBzmPop()
164162 db . SortedSetAdd ( sortedSetKey , "e" , 7.76 ) ;
165163
166164 // Pop two items with default order, which means it will pop the minimum values.
167- var resultWithDefaultOrder = db . BzmPop ( 0 , [ sortedSetKey ] , Order . Ascending , 2 ) ;
165+ var resultWithDefaultOrder = db . BzmPop ( 0 , [ sortedSetKey ] , MinMaxModifier . Min , 2 ) ;
168166
169167 Assert . NotNull ( resultWithDefaultOrder ) ;
170168 Assert . Equal ( sortedSetKey , resultWithDefaultOrder ! . Item1 ) ;
@@ -173,7 +171,7 @@ public void TestBzmPop()
173171 Assert . Equal ( "c" , resultWithDefaultOrder . Item2 [ 1 ] . Value . ToString ( ) ) ;
174172
175173 // Pop one more item, with descending order, which means it will pop the maximum value.
176- var resultWithDescendingOrder = db . BzmPop ( 0 , [ sortedSetKey ] , Order . Descending , 1 ) ;
174+ var resultWithDescendingOrder = db . BzmPop ( 0 , [ sortedSetKey ] , MinMaxModifier . Max , 1 ) ;
177175
178176 Assert . NotNull ( resultWithDescendingOrder ) ;
179177 Assert . Equal ( sortedSetKey , resultWithDescendingOrder ! . Item1 ) ;
@@ -190,7 +188,7 @@ public void TestBzmPopNull()
190188 db . Execute ( "FLUSHALL" ) ;
191189
192190 // Nothing in the set, and a short server timeout, which yields null.
193- var result = db . BzmPop ( 1 , [ "my-set" ] , Order . Ascending , null ) ;
191+ var result = db . BzmPop ( 1 , [ "my-set" ] , MinMaxModifier . Min , null ) ;
194192
195193 Assert . Null ( result ) ;
196194 }
@@ -207,7 +205,7 @@ public void TestBzmPopMultiplexerTimeout()
207205 db . Execute ( "FLUSHALL" ) ;
208206
209207 // Server would wait forever, but the multiplexer times out in 1 second.
210- Assert . Throws < RedisTimeoutException > ( ( ) => db . BzmPop ( 0 , [ "my-set" ] , Order . Ascending ) ) ;
208+ Assert . Throws < RedisTimeoutException > ( ( ) => db . BzmPop ( 0 , [ "my-set" ] , MinMaxModifier . Min ) ) ;
211209 }
212210
213211 [ SkipIfRedis ( Is . OSSCluster , Comparison . LessThan , "7.0.0" ) ]
@@ -224,28 +222,28 @@ public void TestBzmPopMultipleSets()
224222 db . SortedSetAdd ( "set-two" , "d" , 9.4 ) ;
225223 db . SortedSetAdd ( "set-two" , "e" , 7.76 ) ;
226224
227- var result = db . BzmPop ( 0 , "set-two" , Order . Descending ) ;
225+ var result = db . BzmPop ( 0 , "set-two" , MinMaxModifier . Max ) ;
228226
229227 Assert . NotNull ( result ) ;
230228 Assert . Equal ( "set-two" , result ! . Item1 ) ;
231229 Assert . Single ( result . Item2 ) ;
232230 Assert . Equal ( "d" , result . Item2 [ 0 ] . Value . ToString ( ) ) ;
233231
234- result = db . BzmPop ( 0 , [ "set-two" , "set-one" ] , Order . Ascending ) ;
232+ result = db . BzmPop ( 0 , [ "set-two" , "set-one" ] , MinMaxModifier . Min ) ;
235233
236234 Assert . NotNull ( result ) ;
237235 Assert . Equal ( "set-two" , result ! . Item1 ) ;
238236 Assert . Single ( result . Item2 ) ;
239237 Assert . Equal ( "e" , result . Item2 [ 0 ] . Value . ToString ( ) ) ;
240238
241- result = db . BzmPop ( 0 , [ "set-two" , "set-one" ] , Order . Descending ) ;
239+ result = db . BzmPop ( 0 , [ "set-two" , "set-one" ] , MinMaxModifier . Max ) ;
242240
243241 Assert . NotNull ( result ) ;
244242 Assert . Equal ( "set-one" , result ! . Item1 ) ;
245243 Assert . Single ( result . Item2 ) ;
246244 Assert . Equal ( "b" , result . Item2 [ 0 ] . Value . ToString ( ) ) ;
247245
248- result = db . BzmPop ( 0 , "set-one" , Order . Ascending , count : 2 ) ;
246+ result = db . BzmPop ( 0 , "set-one" , MinMaxModifier . Min , count : 2 ) ;
249247
250248 Assert . NotNull ( result ) ;
251249 Assert . Equal ( "set-one" , result ! . Item1 ) ;
@@ -263,6 +261,37 @@ public void TestBzmPopNoKeysProvided()
263261 db . Execute ( "FLUSHALL" ) ;
264262
265263 // Server would wait forever, but the multiplexer times out in 1 second.
266- Assert . Throws < ArgumentException > ( ( ) => db . BzmPop ( 0 , [ ] , Order . Ascending ) ) ;
264+ Assert . Throws < ArgumentException > ( ( ) => db . BzmPop ( 0 , [ ] , MinMaxModifier . Min ) ) ;
265+ }
266+
267+ [ SkipIfRedis ( Is . OSSCluster , Comparison . LessThan , "7.0.0" ) ]
268+ public void TestBzmPopWithOrderEnum ( )
269+ {
270+ var redis = ConnectionMultiplexer . Connect ( "localhost" ) ;
271+
272+ var db = redis . GetDatabase ( null ) ;
273+ db . Execute ( "FLUSHALL" ) ;
274+
275+ var sortedSetKey = "my-set" ;
276+
277+ db . SortedSetAdd ( sortedSetKey , "a" , 1.5 ) ;
278+ db . SortedSetAdd ( sortedSetKey , "b" , 5.1 ) ;
279+ db . SortedSetAdd ( sortedSetKey , "c" , 3.7 ) ;
280+
281+ // Pop two items with default order, which means it will pop the minimum values.
282+ var resultWithDefaultOrder = db . BzmPop ( 0 , [ sortedSetKey ] , Order . Ascending . ToMinMax ( ) ) ;
283+
284+ Assert . NotNull ( resultWithDefaultOrder ) ;
285+ Assert . Equal ( sortedSetKey , resultWithDefaultOrder ! . Item1 ) ;
286+ Assert . Single ( resultWithDefaultOrder . Item2 ) ;
287+ Assert . Equal ( "a" , resultWithDefaultOrder . Item2 [ 0 ] . Value . ToString ( ) ) ;
288+
289+ // Pop one more item, with descending order, which means it will pop the maximum value.
290+ var resultWithDescendingOrder = db . BzmPop ( 0 , [ sortedSetKey ] , Order . Descending . ToMinMax ( ) ) ;
291+
292+ Assert . NotNull ( resultWithDescendingOrder ) ;
293+ Assert . Equal ( sortedSetKey , resultWithDescendingOrder ! . Item1 ) ;
294+ Assert . Single ( resultWithDescendingOrder . Item2 ) ;
295+ Assert . Equal ( "b" , resultWithDescendingOrder . Item2 [ 0 ] . Value . ToString ( ) ) ;
267296 }
268297}
0 commit comments