// Path: src/main/java/ninja/javafx/smartcsv/validation/configuration/ValidationConfiguration.java
// public class ValidationConfiguration {
// 
//     @SerializedName("fields")
//     private Field[] fields;
// 
//     public Field[] getFields() {
//         return fields;
//     }
// 
//     public void setFields(Field[] fields) {
//         this.fields = fields;
//     }
// 
//     public Field getFieldConfiguration(String column) {
//         for (Field field : fields) {
//             if (field.getName().equals(column)) {
//                 return field;
//             }
//         }
//         return null;
//     }
// 
//     public String[] headerNames() {
//         if (fields != null) {
//             List<String> headerNames = new ArrayList<>();
//             for (Field field : fields) {
//                 headerNames.add(field.getName());
//             }
//             return headerNames.toArray(new String[headerNames.size()]);
//         }
// 
//         return null;
//     }
// 
//     public void setHeaderNames(String[] header) {
//         fields = new Field[header.length];
//         int i = 0;
//         for (String headerName: header) {
//             fields[i] = new Field();
//             fields[i].setName(headerName);
//             i++;
//         }
//     }
// }


import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import ninja.javafx.smartcsv.validation.configuration.ValidationConfiguration;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import java.util.List;
import java.util.stream.Stream;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.joining;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.is;
package ninja.javafx.smartcsv.validation;




/**
 * unit test for validator
 */
public class ValidatorTest {

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // tests
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    @ParameterizedTest
    @MethodSource("validationConfigurations")
    public void validation(String config,
                           String value,
                           Boolean expectedResult,
                           ValidationMessage expectedError) {
        // setup
        Gson gson = new GsonBuilder().create();
// Path: src/main/java/ninja/javafx/smartcsv/validation/configuration/ValidationConfiguration.java
// public class ValidationConfiguration {
// 
//     @SerializedName("fields")
//     private Field[] fields;
// 
//     public Field[] getFields() {
//         return fields;
//     }
// 
//     public void setFields(Field[] fields) {
//         this.fields = fields;
//     }
// 
//     public Field getFieldConfiguration(String column) {
//         for (Field field : fields) {
//             if (field.getName().equals(column)) {
//                 return field;
//             }
//         }
//         return null;
//     }
// 
//     public String[] headerNames() {
//         if (fields != null) {
//             List<String> headerNames = new ArrayList<>();
//             for (Field field : fields) {
//                 headerNames.add(field.getName());
//             }
//             return headerNames.toArray(new String[headerNames.size()]);
//         }
// 
//         return null;
//     }
// 
//     public void setHeaderNames(String[] header) {
//         fields = new Field[header.length];
//         int i = 0;
//         for (String headerName: header) {
//             fields[i] = new Field();
//             fields[i].setName(headerName);
//             i++;
//         }
//     }
// }


// Path: src/test/java/ninja/javafx/smartcsv/validation/ValidatorTest.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import ninja.javafx.smartcsv.validation.configuration.ValidationConfiguration;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import java.util.List;
import java.util.stream.Stream;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.joining;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.is;

package ninja.javafx.smartcsv.validation;




/**
 * unit test for validator
 */
public class ValidatorTest {

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // tests
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    @ParameterizedTest
    @MethodSource("validationConfigurations")
    public void validation(String config,
                           String value,
                           Boolean expectedResult,
                           ValidationMessage expectedError) {
        // setup
        Gson gson = new GsonBuilder().create();
        ValidationConfiguration validationConfiguration = gson.fromJson(config, ValidationConfiguration.class);