// Path: src/main/java/net/nextpulse/jadmin/ColumnDefinition.java
// public class ColumnDefinition {
// 
//   /**
//    * Column name, case sensitive
//    */
//   private String name;
//   /**
//    * JAdmin-type of this column.
//    */
//   private ColumnType type;
// 
//   /**
//    * True if this column is part of the key identifying a row of the datasource containing this column.
//    */
//   private boolean keyColumn;
//   private boolean editable;
//   private List<InputValidationRule> validationRules = new ArrayList<>();
//   private InputTransformer inputTransformer;
//   private ColumnValueTransformer columnValueTransformer;
// 
//   public ColumnDefinition() {
//   }
// 
//   public ColumnDefinition(String name, ColumnType type) {
//     this.name = name;
//     this.type = type;
//   }
// 
//   public ColumnDefinition(String name, ColumnType type, boolean keyColumn, boolean editable) {
//     this.name = name;
//     this.type = type;
//     this.keyColumn = keyColumn;
//     this.editable = editable;
//   }
// 
//   public String getName() {
//     return name;
//   }
// 
//   public ColumnDefinition setName(String name) {
//     this.name = name;
//     return this;
//   }
// 
//   public ColumnType getType() {
//     return type;
//   }
// 
//   public void setType(ColumnType type) {
//     this.type = type;
//   }
// 
//   public boolean isKeyColumn() {
//     return keyColumn;
//   }
// 
//   public ColumnDefinition setKeyColumn(boolean keyColumn) {
//     this.keyColumn = keyColumn;
//     return this;
//   }
// 
//   public boolean isEditable() {
//     return editable;
//   }
// 
//   public ColumnDefinition setEditable(boolean editable) {
//     this.editable = editable;
//     return this;
//   }
// 
//   /**
//    * Adds the provided input validation rule to the list of rules.
//    *
//    * @param inputValidationRules  rule(s) that should be active for this column
//    */
//   public ColumnDefinition addValidationRules(InputValidationRule... inputValidationRules) {
//     validationRules.addAll(Arrays.asList(inputValidationRules));
//     return this;
//   }
//   
//   /**
//    * @return the configured validation rules
//    */
//   public List<InputValidationRule> getValidationRules() {
//     return validationRules;
//   }
//   
//   public InputTransformer getInputTransformer() {
//     return inputTransformer;
//   }
//   
//   public ColumnDefinition setInputTransformer(InputTransformer inputTransformer) {
//     this.inputTransformer = inputTransformer;
//     return this;
//   }
// 
//   public ColumnValueTransformer getColumnValueTransformer() {
//     return columnValueTransformer;
//   }
// 
//   public ColumnDefinition setColumnValueTransformer(ColumnValueTransformer columnValueTransformer) {
//     this.columnValueTransformer = columnValueTransformer;
//     return this;
//   }
// }
// 
// Path: src/main/java/net/nextpulse/jadmin/ColumnType.java
// public enum ColumnType {
//   string,
//   text,
//   integer,
//   bool,
//   datetime;
// 
// }
// 
// Path: src/main/java/net/nextpulse/jadmin/FormPostEntry.java
// public class FormPostEntry {
//   
//   /**
//    * Key value(s) for this post entry, i.e. the object id, non-editable values.
//    */
//   private LinkedHashMap<String, String> keyValues = new LinkedHashMap<>();
//   /**
//    * Editable values of a resource, i.e. an editable name field.
//    */
//   private LinkedHashMap<String, String> values = new LinkedHashMap<>();
//   
//   public FormPostEntry() {
//   }
//   
//   /**
//    * @return map of unescaped post values
//    */
//   public LinkedHashMap<String, String> getValues() {
//     return values;
//   }
//   
//   public void addValue(String columnName, String value) {
//     values.put(columnName, value);
//   }
//   
//   /**
//    * @return map of unescaped values that make up the identifier of this row
//    */
//   public LinkedHashMap<String, String> getKeyValues() {
//     return keyValues;
//   }
//   
//   /**
//    * Adds a new user supplied value for the specified column.
//    *
//    * @param columnName column name
//    * @param value      user provided value
//    */
//   public void addKeyValue(String columnName, String value) {
//     keyValues.put(columnName, value);
//   }
//   
//   /**
//    * Returns a Map with column keys linked to the submitted values.
//    *
//    * @return this entry as map of column name to value
//    */
//   public Map<String, String> toPropertiesMap() {
//     LinkedHashMap<String, String> output = new LinkedHashMap<>();
//     output.putAll(keyValues);
//     output.putAll(values);
//     return output;
//   }
// }


import net.nextpulse.jadmin.ColumnDefinition;
import net.nextpulse.jadmin.ColumnType;
import net.nextpulse.jadmin.FormPostEntry;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import java.util.Optional;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
package net.nextpulse.jadmin.dao;




/**
 * @author yholkamp
 */
public class InMemoryDAOTest {
  private InMemoryDAO dao;
  private ColumnDefinition keyColumn1;
  private ColumnDefinition keyColumn2;
  private ColumnDefinition valueColumn;
// Path: src/main/java/net/nextpulse/jadmin/ColumnDefinition.java
// public class ColumnDefinition {
// 
//   /**
//    * Column name, case sensitive
//    */
//   private String name;
//   /**
//    * JAdmin-type of this column.
//    */
//   private ColumnType type;
// 
//   /**
//    * True if this column is part of the key identifying a row of the datasource containing this column.
//    */
//   private boolean keyColumn;
//   private boolean editable;
//   private List<InputValidationRule> validationRules = new ArrayList<>();
//   private InputTransformer inputTransformer;
//   private ColumnValueTransformer columnValueTransformer;
// 
//   public ColumnDefinition() {
//   }
// 
//   public ColumnDefinition(String name, ColumnType type) {
//     this.name = name;
//     this.type = type;
//   }
// 
//   public ColumnDefinition(String name, ColumnType type, boolean keyColumn, boolean editable) {
//     this.name = name;
//     this.type = type;
//     this.keyColumn = keyColumn;
//     this.editable = editable;
//   }
// 
//   public String getName() {
//     return name;
//   }
// 
//   public ColumnDefinition setName(String name) {
//     this.name = name;
//     return this;
//   }
// 
//   public ColumnType getType() {
//     return type;
//   }
// 
//   public void setType(ColumnType type) {
//     this.type = type;
//   }
// 
//   public boolean isKeyColumn() {
//     return keyColumn;
//   }
// 
//   public ColumnDefinition setKeyColumn(boolean keyColumn) {
//     this.keyColumn = keyColumn;
//     return this;
//   }
// 
//   public boolean isEditable() {
//     return editable;
//   }
// 
//   public ColumnDefinition setEditable(boolean editable) {
//     this.editable = editable;
//     return this;
//   }
// 
//   /**
//    * Adds the provided input validation rule to the list of rules.
//    *
//    * @param inputValidationRules  rule(s) that should be active for this column
//    */
//   public ColumnDefinition addValidationRules(InputValidationRule... inputValidationRules) {
//     validationRules.addAll(Arrays.asList(inputValidationRules));
//     return this;
//   }
//   
//   /**
//    * @return the configured validation rules
//    */
//   public List<InputValidationRule> getValidationRules() {
//     return validationRules;
//   }
//   
//   public InputTransformer getInputTransformer() {
//     return inputTransformer;
//   }
//   
//   public ColumnDefinition setInputTransformer(InputTransformer inputTransformer) {
//     this.inputTransformer = inputTransformer;
//     return this;
//   }
// 
//   public ColumnValueTransformer getColumnValueTransformer() {
//     return columnValueTransformer;
//   }
// 
//   public ColumnDefinition setColumnValueTransformer(ColumnValueTransformer columnValueTransformer) {
//     this.columnValueTransformer = columnValueTransformer;
//     return this;
//   }
// }
// 
// Path: src/main/java/net/nextpulse/jadmin/ColumnType.java
// public enum ColumnType {
//   string,
//   text,
//   integer,
//   bool,
//   datetime;
// 
// }
// 
// Path: src/main/java/net/nextpulse/jadmin/FormPostEntry.java
// public class FormPostEntry {
//   
//   /**
//    * Key value(s) for this post entry, i.e. the object id, non-editable values.
//    */
//   private LinkedHashMap<String, String> keyValues = new LinkedHashMap<>();
//   /**
//    * Editable values of a resource, i.e. an editable name field.
//    */
//   private LinkedHashMap<String, String> values = new LinkedHashMap<>();
//   
//   public FormPostEntry() {
//   }
//   
//   /**
//    * @return map of unescaped post values
//    */
//   public LinkedHashMap<String, String> getValues() {
//     return values;
//   }
//   
//   public void addValue(String columnName, String value) {
//     values.put(columnName, value);
//   }
//   
//   /**
//    * @return map of unescaped values that make up the identifier of this row
//    */
//   public LinkedHashMap<String, String> getKeyValues() {
//     return keyValues;
//   }
//   
//   /**
//    * Adds a new user supplied value for the specified column.
//    *
//    * @param columnName column name
//    * @param value      user provided value
//    */
//   public void addKeyValue(String columnName, String value) {
//     keyValues.put(columnName, value);
//   }
//   
//   /**
//    * Returns a Map with column keys linked to the submitted values.
//    *
//    * @return this entry as map of column name to value
//    */
//   public Map<String, String> toPropertiesMap() {
//     LinkedHashMap<String, String> output = new LinkedHashMap<>();
//     output.putAll(keyValues);
//     output.putAll(values);
//     return output;
//   }
// }


// Path: src/test/java/net/nextpulse/jadmin/dao/InMemoryDAOTest.java
import net.nextpulse.jadmin.ColumnDefinition;
import net.nextpulse.jadmin.ColumnType;
import net.nextpulse.jadmin.FormPostEntry;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
import java.util.Optional;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

package net.nextpulse.jadmin.dao;




/**
 * @author yholkamp
 */
public class InMemoryDAOTest {
  private InMemoryDAO dao;
  private ColumnDefinition keyColumn1;
  private ColumnDefinition keyColumn2;
  private ColumnDefinition valueColumn;
  private FormPostEntry formEntry2;