anchor.diff:  init_per_round(Fun, Keys) when Fun =:= scard;
                                  Fun =:= sismember;
                                  Fun =:= smembers;
  -                               Fun =:= smove ->
  +                               Fun =:= smove;
  +                               Fun =:= spop;
  +                               Fun =:= srandmember ->
     sadd(Keys),
     ok;
   init_per_round(Fun, Keys) when Fun =:= sinter_min;
  
positive.code:          quit/0, quit_per_testcase/1, quit_per_round/2]).
  -export([sadd/1, scard/1, sdiff/1, sdiffstore/1, sinter_min/1, sinter_n/1, sinter_m/1,
           sinterstore_min/1, sinterstore_n/1, sinterstore_m/1, sismember/1, smembers/1,
           smove/1]).
  
  %% ====================================================================
  %% External functions
  
negative.code:   catch edis_db:run(
      edis_db:process(0),
      #edis_command{cmd = <<"SMOVE">>, args = [?KEY, ?KEY2, Key], group = sets, result_type = boolean}).
  
  -spec spop([binary()]) -> binary().
  spop(_Keys) ->
    catch edis_db:run(
      edis_db:process(0),
      #edis_command{cmd = <<"SPOP">>, args = [?KEY], group = sets, result_type = bulk}).
  
  -spec srandmember([binary()]) -> binary().
  srandmember(_Keys) ->
    catch edis_db:run(
      edis_db:process(0),
      #edis_command{cmd = <<"SRANDMEMBER">>, args = [?KEY], group = sets, result_type = bulk}).
  