@@ -119,3 +119,33 @@ fn max_encoding_attempts() {
119
119
120
120
assert_eq ! ( sqids. encode( & [ 0 ] ) . err( ) . unwrap( ) , Error :: BlocklistMaxAttempts ) ;
121
121
}
122
+
123
+ #[ test]
124
+ fn specific_is_blocked_id_scenarios ( ) {
125
+ let sqids = Sqids :: builder ( ) . blocklist ( [ "hey" . to_string ( ) ] . into ( ) ) . build ( ) . unwrap ( ) ;
126
+ assert_eq ! ( sqids. encode( & [ 100 ] ) . unwrap( ) , "86u" . to_string( ) ) ;
127
+
128
+ let sqids = Sqids :: builder ( ) . blocklist ( [ "86u" . to_string ( ) ] . into ( ) ) . build ( ) . unwrap ( ) ;
129
+ assert_eq ! ( sqids. encode( & [ 100 ] ) . unwrap( ) , "sec" . to_string( ) ) ;
130
+
131
+ let sqids = Sqids :: builder ( ) . blocklist ( [ "vFo" . to_string ( ) ] . into ( ) ) . build ( ) . unwrap ( ) ;
132
+ assert_eq ! ( sqids. encode( & [ 1_000_000 ] ) . unwrap( ) , "gMvFo" . to_string( ) ) ;
133
+
134
+ let sqids = Sqids :: builder ( ) . blocklist ( [ "lP3i" . to_string ( ) ] . into ( ) ) . build ( ) . unwrap ( ) ;
135
+ assert_eq ! ( sqids. encode( & [ 100 , 202 , 303 , 404 ] ) . unwrap( ) , "oDqljxrokxRt" . to_string( ) ) ;
136
+
137
+ let sqids = Sqids :: builder ( ) . blocklist ( [ "1HkYs" . to_string ( ) ] . into ( ) ) . build ( ) . unwrap ( ) ;
138
+ assert_eq ! ( sqids. encode( & [ 100 , 202 , 303 , 404 ] ) . unwrap( ) , "oDqljxrokxRt" . to_string( ) ) ;
139
+
140
+ let sqids = Sqids :: builder ( ) . blocklist ( [ "0hfxX" . to_string ( ) ] . into ( ) ) . build ( ) . unwrap ( ) ;
141
+ assert_eq ! (
142
+ sqids. encode( & [ 101 , 202 , 303 , 404 , 505 , 606 , 707 ] ) . unwrap( ) ,
143
+ "862REt0hfxXVdsLG8vGWD" . to_string( )
144
+ ) ;
145
+
146
+ let sqids = Sqids :: builder ( ) . blocklist ( [ "hfxX" . to_string ( ) ] . into ( ) ) . build ( ) . unwrap ( ) ;
147
+ assert_eq ! (
148
+ sqids. encode( & [ 101 , 202 , 303 , 404 , 505 , 606 , 707 ] ) . unwrap( ) ,
149
+ "seu8n1jO9C4KQQDxdOxsK" . to_string( )
150
+ ) ;
151
+ }
0 commit comments