Kovalevskyi-Academy / Zeus

Other
2 stars 4 forks source link

JDD w0d2: to fix the test on the right length #147

Closed odtour closed 2 years ago

odtour commented 2 years ago

Возможно, стоит добавить проверку на правильную длину всех values и header (если он есть). А то вот такой код проходит тест, а не должен:

public Csv build() throws InvalidCsvLineLengthException {
      // TODO
      if (header != null && this.header.length != this.values[1].length) {
        throw new InvalidCsvLineLengthException();
      }

      if (this.values[0].length != this.values[1].length) {
        throw new InvalidCsvLineLengthException();
      }

      return new Csv(this.header, this.values);
    }
seralekseenko commented 2 years ago

Такая проверка есть. Но она проверяет длинну всех values между собой в любом случае. Может я чего упустил. Щя проверю.

UPD. По моему достаточно найти одно несоответствие длины строк чтобы уже отменить создание Csv. Пока не вижу зачем, а главное как заставить студентов проверять длинну всех строк. Но в решении учителя values сравниваются по длине с первой из строк.

seralekseenko commented 2 years ago

Да, я там написал вот таких два теста:

 @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);
  }

Вот второй из них принимает все разной длинны: и хедер и значения. Может чего добавить?