@@ -171,6 +171,52 @@ UTEST_F(RedisClientTest, Append) {
171171 EXPECT_EQ (client->Get (" key" , {}).Get (), " Hello World" );
172172}
173173
174+ UTEST_F (RedisClientTest, BitopAnd) {
175+ auto client = GetClient ();
176+ client->Set (" bit1" , " acbd" , {}).Get ();
177+ client->Set (" bit2" , " def8" , {}).Get ();
178+ EXPECT_EQ (client
179+ ->Bitop (storages::redis::BitOperation::kAnd , " dest" ,
180+ {" bit1" , " bit2" }, {})
181+ .Get (),
182+ 4 );
183+ EXPECT_EQ (client->Get (" dest" , {}).Get (), " `ab " );
184+ }
185+
186+ UTEST_F (RedisClientTest, BitopOr) {
187+ auto client = GetClient ();
188+ client->Set (" bit1" , " acbd" , {}).Get ();
189+ client->Set (" bit2" , " def8" , {}).Get ();
190+ EXPECT_EQ (client
191+ ->Bitop (storages::redis::BitOperation::kOr , " dest" ,
192+ {" bit1" , " bit2" }, {})
193+ .Get (),
194+ 4 );
195+ EXPECT_EQ (client->Get (" dest" , {}).Get (), " egf|" );
196+ }
197+
198+ UTEST_F (RedisClientTest, BitopXor) {
199+ auto client = GetClient ();
200+ client->Set (" bit1" , " acbd" , {}).Get ();
201+ client->Set (" bit2" , " def8" , {}).Get ();
202+ EXPECT_EQ (client
203+ ->Bitop (storages::redis::BitOperation::kXor , " dest" ,
204+ {" bit1" , " bit2" }, {})
205+ .Get (),
206+ 4 );
207+ EXPECT_EQ (client->Get (" dest" , {}).Get (), " \x5\x6\x4\\ " );
208+ }
209+
210+ UTEST_F (RedisClientTest, BitopNot) {
211+ auto client = GetClient ();
212+ client->Set (" bit1" , " acbd" , {}).Get ();
213+ EXPECT_EQ (
214+ client->Bitop (storages::redis::BitOperation::kNot , " dest" , {" bit1" }, {})
215+ .Get (),
216+ 4 );
217+ EXPECT_EQ (client->Get (" dest" , {}).Get (), " \x9E\x9C\x9D\x9B " );
218+ }
219+
174220UTEST_F (RedisClientTest, Dbsize) {
175221 auto client = GetClient ();
176222 EXPECT_EQ (client->Dbsize (0 , {}).Get (), 0 );
0 commit comments