DeleteCommand implements CommandRunnable { @Override public ReplyMessage run(int argc, byte[][] argv) throws Exception { if (argc != 2) { return ErrorMessage.WrongArgcMessage; } String val = map.remove(new String(argv[1], Protocol.KEYCAFE_CHARSET)); if (val != null) { return new BulkStringMessage(val); } else { return StringMessage.OkMessage; } } DeleteCommand(Map<String, String> map); @Override ReplyMessage run(int argc, byte[][] argv); @Override int keyIndex();  }
@Test public void test() throws Exception { byte[][] args = new byte[2][]; args[0] = new byte[]{(byte) Command.DELETE.ordinal()}; args[1] = "abc".getBytes(); DeleteCommand d = new DeleteCommand(null); ReplyMessage reply = d.run(1, args); assertEquals(reply, ErrorMessage.WrongArgcMessage); }
@Test public void test2() throws Exception { byte[][] args = new byte[1][]; args[0] = new byte[]{(byte) Command.DELETE.ordinal()}; DeleteCommand d = new DeleteCommand(null); ReplyMessage reply = d.run(1, args); assertEquals(reply, ErrorMessage.WrongArgcMessage); }
@Test public void test3() throws Exception { Map<String, String> map = new HashMap<>(); byte[][] args = new byte[2][]; args[0] = new byte[]{(byte) Command.DELETE.ordinal()}; args[1] = "no_key".getBytes(); DeleteCommand d = new DeleteCommand(map); ReplyMessage reply = d.run(2, args); assertEquals(reply.message(), StringMessage.OkMessage.message()); }
@Test public void test4() throws Exception { Map<String, String> map = new HashMap<String, String>() { { put("TEST", "VALUE"); } }; byte[][] args = new byte[2][]; args[0] = new byte[]{(byte) Command.DELETE.ordinal()}; args[1] = "TEST".getBytes(); DeleteCommand d = new DeleteCommand(map); ReplyMessage reply = d.run(2, args); assertEquals(reply.message(), new BulkStringMessage("VALUE").message()); }