Я сделал этот метод:
public static List<String> getPascalTriangle(int size) {
if(size <= 0) {
throw new IllegalArgumentException("Size of a triangle cannot be negative number or equal to 0");
}
List<String> triangle = new ArrayList<>();
StringBuilder row = new StringBuilder();
for (int i = 0; i <= size; i++) {
int r = i + 1;
for (int j = size - i; j > 0; j--) {
row.append(String.format("%2s", ""));
}
int num = 1;
for (int j = 0; j <= i; j++) {
if (j > 0) {
num = num * (r - j) / j;
}
row.append(String.format("%4d", num));
}
triangle.add(row.toString());
row.setLength(0);
}
triangle.add(row.toString());
return triangle;
}
Теперь я хочу проверить это. Я создал простой @Test
public void shouldReturnCorrectPascalTriangle() {
List<String> expected = new ArrayList<>();
expected.add(" 1");
expected.add(" 1 1");
expected.add(" 1 2 1");
expected.add(" 1 3 3 1");
expected.add(" 1 4 6 4 1");
expected.add(" 1 5 10 10 5 1");
expected.add(" 1 6 15 20 15 6 1");
expected.add(" 1 7 21 35 35 21 7 1" + ", ");
assertEquals(expected, PascalTriangle.getPascalTriangle(7));
}
Моя единственная проблема в том, что мой оригинальный список добавляет что-то вроде дополнительного индекса в конце. Это выглядит как ", ". Я не могу удалить это. Пробовал использовать getList.remove (index) - это не помогло. Есть какие-нибудь мысли, как я могу удалить эту кровавую вещь и успешно завершить sh эту задачу? Кроме того, я подумал, есть ли какой-нибудь умный способ или специальный способ протестировать Illigall Argument Exception с уровня @Test? Например. Я удаляю оценку If (размер <= 0) из моего метода, но проверяю ее в тесте. </p>