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