@Test
  public void testInvalidCommand() {

    // Boundary case: wrong command
    Command command = parser.build("delete 1-5");
    Assert.assertTrue(command instanceof InvalidCommand);
    command = parser.build("add hello");
    Assert.assertTrue(command instanceof InvalidCommand);
    command = parser.build("add hello 3words");
    Assert.assertTrue(command instanceof InvalidCommand);

    // Boundary case: insufficient arguments
    command = parser.build("rename");
    Assert.assertTrue(command instanceof InvalidCommand);
    command = parser.build("rename oneword");
    Assert.assertTrue(command instanceof InvalidCommand);
    command = parser.build("rename 1");
    Assert.assertTrue(command instanceof InvalidCommand);

    // Boundary case: empty string
    command = parser.build("");
    Assert.assertTrue(command instanceof InvalidCommand);

    // Boundary case: null
    command = parser.build(null);
    Assert.assertTrue(command instanceof InvalidCommand);
  }
  @Test
  public void testValidCommand() {
    Command command = parser.build("rename 1 happy");
    Assert.assertTrue(command instanceof RenameTaskCommand);
    RenameTaskCommand renameCommand = (RenameTaskCommand) command;
    assertSameFields(renameCommand, 1, "happy");

    command = parser.build("rename 123 12345");
    Assert.assertTrue(command instanceof RenameTaskCommand);
    renameCommand = (RenameTaskCommand) command;
    assertSameFields(renameCommand, 123, "12345");

    command = parser.build("rename 100232132 2 or more words");
    Assert.assertTrue(command instanceof RenameTaskCommand);
    renameCommand = (RenameTaskCommand) command;
    assertSameFields(renameCommand, 100232132, "2 or more words");
  }