1
+ using NUnit . Framework ;
2
+
3
+ namespace ServiceStack . Redis . Tests
4
+ {
5
+ [ TestFixture ]
6
+ public class LexTests
7
+ : RedisClientTestsBase
8
+ {
9
+ readonly string [ ] values = "a,b,c,d,e,f,g" . Split ( ',' ) ;
10
+
11
+ [ SetUp ]
12
+ public void SetUp ( )
13
+ {
14
+ Redis . FlushAll ( ) ;
15
+ values . Each ( x => Redis . ZAdd ( "zset" , 0 , x . ToUtf8Bytes ( ) ) ) ;
16
+ }
17
+
18
+ [ Test ]
19
+ public void Can_ZRangeByLex_all_entries ( )
20
+ {
21
+ var results = Redis . ZRangeByLex ( "zset" , "-" , "+" ) ;
22
+
23
+ Assert . That ( results . Map ( x => x . FromUtf8Bytes ( ) ) , Is . EquivalentTo ( values ) ) ;
24
+
25
+ results = Redis . ZRangeByLex ( "zset" , "-" , "+" , 1 , 3 ) ;
26
+ Assert . That ( results . Map ( x => x . FromUtf8Bytes ( ) ) , Is . EquivalentTo ( new [ ] { "b" , "c" , "d" } ) ) ;
27
+ }
28
+
29
+ [ Test ]
30
+ public void Can_ZRangeByLex_Desc ( )
31
+ {
32
+ var descInclusive = Redis . ZRangeByLex ( "zset" , "-" , "[c" ) ;
33
+ Assert . That ( descInclusive . Map ( x => x . FromUtf8Bytes ( ) ) , Is . EquivalentTo ( new [ ] { "a" , "b" , "c" } ) ) ;
34
+
35
+ var descExclusive = Redis . ZRangeByLex ( "zset" , "-" , "(c" ) ;
36
+ Assert . That ( descExclusive . Map ( x => x . FromUtf8Bytes ( ) ) , Is . EquivalentTo ( new [ ] { "a" , "b" } ) ) ;
37
+ }
38
+
39
+ [ Test ]
40
+ public void Can_ZRangeByLex_Min_and_Max ( )
41
+ {
42
+ var range = Redis . ZRangeByLex ( "zset" , "[aaa" , "(g" ) ;
43
+ Assert . That ( range . Map ( x => x . FromUtf8Bytes ( ) ) ,
44
+ Is . EquivalentTo ( new [ ] { "b" , "c" , "d" , "e" , "f" } ) ) ;
45
+ }
46
+
47
+ [ Test ]
48
+ public void Can_ZlexCount ( )
49
+ {
50
+ var total = Redis . ZLexCount ( "zset" , "-" , "+" ) ;
51
+ Assert . That ( total , Is . EqualTo ( values . Length ) ) ;
52
+
53
+ Assert . That ( Redis . ZLexCount ( "zset" , "-" , "[c" ) , Is . EqualTo ( 3 ) ) ;
54
+ Assert . That ( Redis . ZLexCount ( "zset" , "-" , "(c" ) , Is . EqualTo ( 2 ) ) ;
55
+ }
56
+
57
+ [ Test ]
58
+ public void Can_ZRemRangeByLex ( )
59
+ {
60
+ var removed = Redis . ZRemRangeByLex ( "zset" , "[aaa" , "(g" ) ;
61
+ Assert . That ( removed , Is . EqualTo ( 5 ) ) ;
62
+
63
+ var remainder = Redis . ZRangeByLex ( "zset" , "-" , "+" ) ;
64
+ Assert . That ( remainder . Map ( x => x . FromUtf8Bytes ( ) ) , Is . EqualTo ( new [ ] { "a" , "g" } ) ) ;
65
+ }
66
+
67
+ [ Test ]
68
+ public void Can_SearchSortedSet ( )
69
+ {
70
+ Assert . That ( Redis . SearchSortedSet ( "zset" ) , Is . EquivalentTo ( values ) ) ;
71
+ Assert . That ( Redis . SearchSortedSet ( "zset" , start : "-" ) , Is . EquivalentTo ( values ) ) ;
72
+ Assert . That ( Redis . SearchSortedSet ( "zset" , end : "+" ) , Is . EquivalentTo ( values ) ) ;
73
+
74
+ Assert . That ( Redis . SearchSortedSet ( "zset" , start : "[aaa" ) . Count , Is . EqualTo ( values . Length - 1 ) ) ;
75
+ Assert . That ( Redis . SearchSortedSet ( "zset" , end : "(g" ) . Count , Is . EqualTo ( values . Length - 1 ) ) ;
76
+ Assert . That ( Redis . SearchSortedSet ( "zset" , "[aaa" , "(g" ) . Count , Is . EqualTo ( values . Length - 2 ) ) ;
77
+
78
+ Assert . That ( Redis . SearchSortedSet ( "zset" , "a" , "c" ) . Count , Is . EqualTo ( 3 ) ) ;
79
+ Assert . That ( Redis . SearchSortedSet ( "zset" , "[a" , "[c" ) . Count , Is . EqualTo ( 3 ) ) ;
80
+ Assert . That ( Redis . SearchSortedSet ( "zset" , "a" , "(c" ) . Count , Is . EqualTo ( 2 ) ) ;
81
+ Assert . That ( Redis . SearchSortedSet ( "zset" , "(a" , "(c" ) . Count , Is . EqualTo ( 1 ) ) ;
82
+ }
83
+
84
+ [ Test ]
85
+ public void Can_SearchSortedSetCount ( )
86
+ {
87
+ Assert . That ( Redis . SearchSortedSet ( "zset" ) , Is . EquivalentTo ( values ) ) ;
88
+ Assert . That ( Redis . SearchSortedSetCount ( "zset" , start : "-" ) , Is . EqualTo ( values . Length ) ) ;
89
+ Assert . That ( Redis . SearchSortedSetCount ( "zset" , end : "+" ) , Is . EqualTo ( values . Length ) ) ;
90
+
91
+ Assert . That ( Redis . SearchSortedSetCount ( "zset" , start : "[aaa" ) , Is . EqualTo ( values . Length - 1 ) ) ;
92
+ Assert . That ( Redis . SearchSortedSetCount ( "zset" , end : "(g" ) , Is . EqualTo ( values . Length - 1 ) ) ;
93
+ Assert . That ( Redis . SearchSortedSetCount ( "zset" , "[aaa" , "(g" ) , Is . EqualTo ( values . Length - 2 ) ) ;
94
+
95
+ Assert . That ( Redis . SearchSortedSetCount ( "zset" , "a" , "c" ) , Is . EqualTo ( 3 ) ) ;
96
+ Assert . That ( Redis . SearchSortedSetCount ( "zset" , "[a" , "[c" ) , Is . EqualTo ( 3 ) ) ;
97
+ Assert . That ( Redis . SearchSortedSetCount ( "zset" , "a" , "(c" ) , Is . EqualTo ( 2 ) ) ;
98
+ Assert . That ( Redis . SearchSortedSetCount ( "zset" , "(a" , "(c" ) , Is . EqualTo ( 1 ) ) ;
99
+ }
100
+
101
+ [ Test ]
102
+ public void Can_RemoveRangeFromSortedSetBySearch ( )
103
+ {
104
+ var removed = Redis . RemoveRangeFromSortedSetBySearch ( "zset" , "[aaa" , "(g" ) ;
105
+ Assert . That ( removed , Is . EqualTo ( 5 ) ) ;
106
+
107
+ var remainder = Redis . SearchSortedSet ( "zset" ) ;
108
+ Assert . That ( remainder , Is . EqualTo ( new [ ] { "a" , "g" } ) ) ;
109
+ }
110
+ }
111
+ }
0 commit comments