### Question:
BaseCclExecutor extends CclExecutor { @Override public ScriptDropAdder addScriptDropper(final String scriptName) { if (scriptName == null) throw new NullPointerException("Script name cannot be null."); if (StringUtils.isEmpty(scriptName)) throw new IllegalArgumentException("Script name cannot be blank."); return new ScriptDropAdderImpl(scriptName, getCommandQueue()); } BaseCclExecutor();  BaseCclExecutor(final TerminalProperties terminalProperties, final CommandQueue commandQueue); @Override DynamicCompilerAdderImpl addDynamicCompiler(final File includeFile); @Override ScriptCompilerAdderImpl addScriptCompiler(final File file); @Override ScriptDropAdder addScriptDropper(final String scriptName); @Override ScriptExecutionAdder addScriptExecution(final String scriptName); @Override void execute(); @Override void setOutputStream(final OutputStream stream, final OutputType outputType); @Override void setTerminalProperties(final TerminalProperties terminalProperties);  }### Answer:
@Test public void testAddScriptDropper() throws Exception { final String scriptName = "asdf"; final ScriptDropAdderImpl adder = mock(ScriptDropAdderImpl.class); whenNew(ScriptDropAdderImpl.class).withArguments(scriptName, queue).thenReturn(adder); final ScriptDropAdder returnedAdder = executor.addScriptDropper(scriptName); assertThat(returnedAdder).isNotNull(); assertThat(returnedAdder).isEqualTo(adder); }
@SuppressWarnings("unused") @Test public void testAddScriptDropperBlankScriptName() { IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> { final ScriptDropAdder returnedAdder = executor.addScriptDropper(""); }); assertThat(e.getMessage()).isEqualTo("Script name cannot be blank."); }
@SuppressWarnings("unused") @Test public void testAddScriptDropperNullScriptName() { NullPointerException e = assertThrows(NullPointerException.class, () -> { final ScriptDropAdder returnedAdder = executor.addScriptDropper(null); }); assertThat(e.getMessage()).isEqualTo("Script name cannot be null."); }