@@ -277,6 +277,79 @@ func testString(t *testing.T, configs util.KvrocksServerConfigs) {
277277 require .Equal (t , "" , rdb .GetDel (ctx , "foo" ).Val ())
278278 })
279279
280+ t .Run ("DelEX command no args" , func (t * testing.T ) {
281+ key := "test-string-key69"
282+ value := "test-strings-value69"
283+ require .NoError (t , rdb .Set (ctx , key , value , 0 ).Err ())
284+ require .Equal (t , value , rdb .Get (ctx , key ).Val ())
285+
286+ require .Equal (t , int64 (1 ), rdb .Do (ctx , "DELEX" , key ).Val ())
287+ require .Equal (t , "" , rdb .Get (ctx , key ).Val ())
288+
289+ require .NoError (t , rdb .Do (ctx , "DelEX" , key ).Err ())
290+ require .Equal (t , int64 (0 ), rdb .Do (ctx , "DelEX" , key ).Val ())
291+
292+ require .Equal (t , "" , rdb .Get (ctx , "random" ).Val ())
293+ require .NoError (t , rdb .Do (ctx , "DelEX" , "random" ).Err ())
294+ require .Equal (t , int64 (0 ), rdb .Do (ctx , "DELEX" , "random" ).Val ())
295+ })
296+
297+ t .Run ("DelEX command with args" , func (t * testing.T ) {
298+ key := "test-string-key69"
299+ value := "Hello world"
300+ require .NoError (t , rdb .Set (ctx , key , value , 0 ).Err ())
301+ require .Equal (t , value , rdb .Get (ctx , key ).Val ())
302+
303+ r := rdb .Do (ctx , "DelEX" , key , "random" , "random" , "random" ).Err ()
304+ require .ErrorContains (t , r , "wrong number" )
305+
306+ r = rdb .Do (ctx , "DelEX" , key , "random" , "random" ).Err ()
307+ require .ErrorContains (t , r , "syntax error" )
308+
309+ digest := "b6acb9d84a38ff74"
310+ require .NoError (t , rdb .Do (ctx , "DelEX" , key , "ifdeq" , "xxxxxxxxxxxxxxxx" ).Err ())
311+ require .Equal (t , int64 (0 ), rdb .Do (ctx , "DelEX" , key , "ifdeq" , "xxxxxxxxxxxxxxxx" ).Val ())
312+ require .Equal (t , value , rdb .Get (ctx , key ).Val ())
313+ require .NoError (t , rdb .Do (ctx , "DelEX" , key , "ifdeq" , digest ).Err ())
314+ require .Equal (t , "" , rdb .Get (ctx , value ).Val ())
315+ require .NoError (t , rdb .Set (ctx , key , value , 0 ).Err ())
316+ require .Equal (t , int64 (1 ), rdb .Do (ctx , "DELEX" , key , "ifdeq" , digest ).Val ())
317+ require .Equal (t , "" , rdb .Get (ctx , value ).Val ())
318+
319+ require .NoError (t , rdb .Set (ctx , key , value , 0 ).Err ())
320+ require .Equal (t , value , rdb .Get (ctx , key ).Val ())
321+ require .NoError (t , rdb .Do (ctx , "DelEX" , key , "ifdne" , digest ).Err ())
322+ require .Equal (t , int64 (0 ), rdb .Do (ctx , "DelEX" , key , "ifdne" , digest ).Val ())
323+ require .Equal (t , value , rdb .Get (ctx , key ).Val ())
324+ require .NoError (t , rdb .Do (ctx , "DelEX" , key , "ifdne" , "xxxxxxxxxxxxxxxx" ).Err ())
325+ require .Equal (t , "" , rdb .Get (ctx , value ).Val ())
326+ require .NoError (t , rdb .Set (ctx , key , value , 0 ).Err ())
327+ require .Equal (t , int64 (1 ), rdb .Do (ctx , "DelEX" , key , "ifdne" , "xxxxxxxxxxxxxxxx" ).Val ())
328+ require .Equal (t , "" , rdb .Get (ctx , value ).Val ())
329+
330+ require .NoError (t , rdb .Set (ctx , key , value , 0 ).Err ())
331+ require .Equal (t , value , rdb .Get (ctx , key ).Val ())
332+ require .NoError (t , rdb .Do (ctx , "DelEX" , key , "ifeq" , "random" ).Err ())
333+ require .Equal (t , int64 (0 ), rdb .Do (ctx , "DelEX" , key , "ifeq" , "random" ).Val ())
334+ require .Equal (t , value , rdb .Get (ctx , key ).Val ())
335+ require .NoError (t , rdb .Do (ctx , "DelEX" , key , "ifeq" , value ).Err ())
336+ require .Equal (t , "" , rdb .Get (ctx , value ).Val ())
337+ require .NoError (t , rdb .Set (ctx , key , value , 0 ).Err ())
338+ require .Equal (t , int64 (1 ), rdb .Do (ctx , "DelEX" , key , "ifeq" , value ).Val ())
339+ require .Equal (t , "" , rdb .Get (ctx , value ).Val ())
340+
341+ require .NoError (t , rdb .Set (ctx , key , value , 0 ).Err ())
342+ require .Equal (t , value , rdb .Get (ctx , key ).Val ())
343+ require .NoError (t , rdb .Do (ctx , "DelEX" , key , "ifne" , value ).Err ())
344+ require .Equal (t , int64 (0 ), rdb .Do (ctx , "DelEX" , key , "ifne" , value ).Val ())
345+ require .Equal (t , value , rdb .Get (ctx , key ).Val ())
346+ require .NoError (t , rdb .Do (ctx , "DelEX" , key , "ifne" , "random" ).Err ())
347+ require .Equal (t , "" , rdb .Get (ctx , value ).Val ())
348+ require .NoError (t , rdb .Set (ctx , key , value , 0 ).Err ())
349+ require .Equal (t , int64 (1 ), rdb .Do (ctx , "DelEX" , key , "ifne" , "random" ).Val ())
350+ require .Equal (t , "" , rdb .Get (ctx , value ).Val ())
351+ })
352+
280353 t .Run ("MGET command" , func (t * testing.T ) {
281354 require .NoError (t , rdb .FlushDB (ctx ).Err ())
282355 require .NoError (t , rdb .Set (ctx , "foo" , "BAR" , 0 ).Err ())
0 commit comments