View Javadoc
1   package com.opencsv.validators;
2   
3   import com.opencsv.exceptions.CsvValidationException;
4   import org.junit.jupiter.api.Assertions;
5   import org.junit.jupiter.api.BeforeEach;
6   import org.junit.jupiter.api.DisplayName;
7   import org.junit.jupiter.api.Test;
8   
9   import static org.junit.jupiter.api.Assertions.assertFalse;
10  import static org.junit.jupiter.api.Assertions.assertTrue;
11  
12  public class RowMustHaveSameNumberOfColumnsAsFirstRowValidatorTest {
13      private static final String[] FOUR_COLUMNS = {"one", "two", "three", "four"};
14      private static final String[] THREE_COLUMNS = {"one", "two", "three"};
15      private static final String[] TWO_COLUMNS = {"one", "two"};
16      private static final String[] NO_COLUMNS = {};
17      private static final String[] NULL_ROW = null;
18      private RowValidator validator;
19  
20      @BeforeEach
21      public void setup() {
22          validator = new RowMustHaveSameNumberOfColumnsAsFirstRowValidator();
23      }
24  
25      @Test
26      @DisplayName("RowValidator isValid with three rows first")
27      public void isValidThreeRowsFirst() {
28          assertTrue(validator.isValid(THREE_COLUMNS));
29          assertTrue(validator.isValid(THREE_COLUMNS));
30          assertFalse(validator.isValid(TWO_COLUMNS));
31          assertFalse(validator.isValid(NO_COLUMNS));
32          assertFalse(validator.isValid(NULL_ROW));
33          assertFalse(validator.isValid(FOUR_COLUMNS));
34          assertTrue(validator.isValid(THREE_COLUMNS));
35      }
36  
37      @Test
38      @DisplayName("RowValidator validate with three rows first")
39      public void validateThreeRowsFirst() {
40          Assertions.assertDoesNotThrow(() -> validator.validate(THREE_COLUMNS));
41          Assertions.assertDoesNotThrow(() -> validator.validate(THREE_COLUMNS));
42          Assertions.assertThrows(CsvValidationException.class, () -> validator.validate(FOUR_COLUMNS));
43          Assertions.assertThrows(CsvValidationException.class, () -> validator.validate(TWO_COLUMNS));
44          Assertions.assertThrows(CsvValidationException.class, () -> validator.validate(NO_COLUMNS));
45          Assertions.assertThrows(CsvValidationException.class, () -> validator.validate(NULL_ROW));
46          Assertions.assertDoesNotThrow(() -> validator.validate(THREE_COLUMNS));
47      }
48  
49      @Test
50      @DisplayName("RowValidator isValid with null first row")
51      public void isValidNullFirstRow() {
52          assertFalse(validator.isValid(NULL_ROW));
53      }
54  
55      @Test
56      @DisplayName("RowValidator isValid with empty first row")
57      public void isValidEmptyFirstRow() {
58          assertFalse(validator.isValid(NO_COLUMNS));
59      }
60  
61      @Test
62      @DisplayName("RowValidator validate with null first row")
63      public void validateNullFirstRow() {
64          Assertions.assertThrows(CsvValidationException.class, () -> validator.validate(NULL_ROW));
65      }
66  
67      @Test
68      @DisplayName("RowValidator validate with empty first row")
69      public void validateEmptyFirstRow() {
70          Assertions.assertThrows(CsvValidationException.class, () -> validator.validate(NO_COLUMNS));
71      }
72  }