List <String>@Test удаление нуля из последнего индекса - PullRequest
0 голосов
/ 12 февраля 2020

Я сделал этот метод:

  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) - это не помогло. screenshot from diffmerge file Есть какие-нибудь мысли, как я могу удалить эту кровавую вещь и успешно завершить sh эту задачу? Кроме того, я подумал, есть ли какой-нибудь умный способ или специальный способ протестировать Illigall Argument Exception с уровня @Test? Например. Я удаляю оценку If (размер <= 0) из моего метода, но проверяю ее в тесте. </p>

1 Ответ

0 голосов
/ 12 февраля 2020

Я вижу здесь как минимум две проблемы: во-первых, проблему, о которой вы упомянули. Вы должны удалить triangle.add(row.toString()); непосредственно перед return triangle. Теперь вы добавляете пустую строку в конце вашей программы. Второе - это ваш assertEquals. Вы пытаетесь утвердить две разные ссылки в списке. Он вернет ложь. Вы можете исправить это, проверив содержимое ваших списков

assertEquals(expected.toString(), PascalTriangle.getPascalTriangle(7).toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...