Вот решение.
1) Проверены входные параметры
2) Ищет строку в массиве и возвращает индекс
public class SheetNames {
public Integer changeSheetName(String[] sheetNames, String currentName, String newName) {
if (sheetNames == null || sheetNames.length == 0 || currentName == null || newName == null) {
throw new IllegalArgumentException("Invalid input");
}
Integer replacedIndex = Arrays.asList(sheetNames).indexOf(currentName);
if (replacedIndex != -1) {
sheetNames[replacedIndex] = newName;
}
System.out.println(Arrays.toString(sheetNames));
return replacedIndex;
}
}
JunitТесты: -
public class SheetNamesTest {
private SheetNames sheetNames;
@Before
public void setup() {
sheetNames = new SheetNames();
}
@Test
public void shouldReplaceSheetName() {
String[] sheetNamesArr = {"dennis", "john", "dan"};
Assert.assertEquals(new Integer(1), sheetNames.changeSheetName(sheetNamesArr, "john", "peter"));
String[] sheetNamesArr2 = {"john", "dan"};
Assert.assertEquals(new Integer(0), sheetNames.changeSheetName(sheetNamesArr2, "john", "peter"));
}
@Test
public void shouldNotReplaceSheetName() {
String[] sheetNamesArr = {"dennis", "johnhunt", "dan"};
Assert.assertEquals(new Integer(-1), sheetNames.changeSheetName(sheetNamesArr, "john", "peter"));
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExceptionWhenSheetNameIsNull() {
sheetNames.changeSheetName(null, "john", "peter");
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExceptionWhenSheetNameIsEmpty() {
String[] sheetNamesArr = {};
sheetNames.changeSheetName(sheetNamesArr, "john", "peter");
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExceptionWhenCurrentNameIsNull() {
String[] sheetNamesArr = {"dennis", "johnhunt", "dan"};
sheetNames.changeSheetName(sheetNamesArr, null, "peter");
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExceptionWhenNewNameIsNull() {
String[] sheetNamesArr = {"dennis", "johnhunt", "dan"};
sheetNames.changeSheetName(sheetNamesArr, "john", null);
}
}