Closed odtour closed 2 years ago
Такая проверка есть. Но она проверяет длинну всех values между собой в любом случае. Может я чего упустил. Щя проверю.
UPD. По моему достаточно найти одно несоответствие длины строк чтобы уже отменить создание Csv. Пока не вижу зачем, а главное как заставить студентов проверять длинну всех строк. Но в решении учителя values сравниваются по длине с первой из строк.
Да, я там написал вот таких два теста:
@Test
public void checkLengthDifferenceBetweenLinesWithoutHeaders() {
testException(null, VALUES_WITH_DIFFERENT_LINE_LENGTH);
}
@Test
public void checkLengthDifferenceBetweenLinesWithHeaders() {
testException(HEADERS_NO_RESERVED_CHAR, VALUES_WITH_DIFFERENT_LINE_LENGTH);
}
private void testException(String[] headers, String[][] values) {
var message =
"""
Headers was: %s
Values was: %s
""".formatted(Arrays.deepToString(headers), Arrays.deepToString(values));
var csv = assertThrows(InvalidCsvLineLengthException.class,
() -> new Csv.Builder()
.header(headers)
.values(values)
.build(),
"Where is your InvalidCsvLineLengthException?\n" + message);
}
Вот второй из них принимает все разной длинны: и хедер и значения. Может чего добавить?
Возможно, стоит добавить проверку на правильную длину всех values и header (если он есть). А то вот такой код проходит тест, а не должен: