Не проходит unit test при делении в столбик

142
31 октября 2021, 01:50

Тест программы, которая делает деление в столбик :

Класс, который выводит результат деления 0 на 100 :

     private String drawResultForDividentThatEqualsZero(StringBuilder result, Integer divisor) {
result.append("_0").append(SYMBOL_VERTICAL_BAR).append(divisor.toString()).append("\n");
result.append(" 0").append(SYMBOL_VERTICAL_BAR).append("-").append("\n");
result.append(" -").append(SYMBOL_VERTICAL_BAR).append("0").append("\n");
result.append(" 0");
return result.toString();

}

И 2 важных момента :

public static final String SYMBOL_VERTICAL_BAR = "|";
StringBuilder result = new StringBuilder();

Тест, который не проходит :

@Test
public void Should_MakeDivision_When_DividentEqualsZero() {
String expected = "_0│100\n" +
        " 0│-\n" +
        " -│0\n" +
        " 0";
assertEquals(expected, numbersDivision.makeDivision(0, 100));

}

Основной метод makeDivison :

public String makeDivision(int introducedDividend, int introducedDivisor) {
StringBuilder result = new StringBuilder();
StringBuilder reminder = new StringBuilder();
StringBuilder quotientForDividentMoreThanDivisor = new StringBuilder();
StringBuilder quotientForDividentLessThanDivisor = new StringBuilder("0.");
StringBuilder lastReminderNumber = new StringBuilder();

int dividend = Math.abs(introducedDividend);
int divisor = Math.abs(introducedDivisor);
checkExceptions(divisor);
Integer divisorMuplipliedByQuotient = 0;
Integer reminderInInteger = 0;
Integer newReminder = 0;
String[] digits = String.valueOf(dividend).split("");
mainMethodForCalculateDivision(dividend, divisor, digits, reminderInInteger, reminder, divisorMuplipliedByQuotient, result, quotientForDividentMoreThanDivisor, quotientForDividentLessThanDivisor,
        newReminder, lastReminderNumber);
return result.toString();

}

И mainMethodForCalculateDivision :

private String mainMethodForCalculateDivision(Integer dividend, int divisor, String[] digits, Integer reminderInInteger, StringBuilder reminder, Integer divisorMuplipliedByQuotient,
                                          StringBuilder result, StringBuilder quotientForDividentMoreThanDivisor, StringBuilder quotientForDividentLessThanDivisor,
                                          Integer newReminder, StringBuilder lastReminderNumber) {
if (dividend == 0) {
    drawResultForDividentThatEqualsZero(result, divisor);
    return result.toString();
}
if (dividend >= divisor) {
    for (int i = 0; i < digits.length; i++) {
        calculateDivisionWhenDividentMoreOrEqualsDivisor(reminder, digits, i, divisor, divisorMuplipliedByQuotient, dividend,
                result, quotientForDividentMoreThanDivisor, quotientForDividentLessThanDivisor, newReminder, lastReminderNumber);
    }
    improveResultViewing(dividend, divisor, result, quotientForDividentLessThanDivisor, quotientForDividentMoreThanDivisor, lastReminderNumber,
            reminderInInteger);
    return result.toString();
}
checkIfDividentEqualsZeroOrLessThanDivisorAndCalculate(dividend, divisor, reminder, reminderInInteger, digits, divisorMuplipliedByQuotient, newReminder, quotientForDividentMoreThanDivisor,
        quotientForDividentLessThanDivisor, result, lastReminderNumber);
return result.toString();

}

Может не получается перевести со StringBuilder в String, но если и так, то не понимаю, где именно..

Answer 1

В expected и SYMBOL_VERTICAL_BAR вертикальные палки разные.

READ ALSO
С чего начать изучение JAVA? [дубликат]

С чего начать изучение JAVA? [дубликат]

Хочу научиться программировать на JAVAНеделю назад начал активно изучать по видео урокам данный язык

165
Замок синхронизации

Замок синхронизации

Есть два примера сихронизированного кодаВ первом блокировка не работает, во втором работает

167