// Path: src/main/java/org/arbeitspferde/groningen/Datastore.java
// public interface Datastore {
//   
//   /**
//    * Base exception class for all Datastore-related exceptions. This exception was intentionally
//    * made a checked one, because nearly any datastore operation may fail and usually we have
//    * to recover from the failure in the place of a datastore call.
//    */
//   class DatastoreException extends Exception {
//     public DatastoreException() {
//       super();
//     }
//     
//     public DatastoreException(final String message) {
//       super(message);
//     }
//     
//     public DatastoreException(final Throwable cause) {
//       super(cause);
//     }
//     
//     public DatastoreException(final String message, final Throwable cause) {
//       super(message, cause);
//     }
//   }
//   
//   /**
//    * Exception thrown when pipeline in question already exists.
//    */
//   class PipelineAlreadyExists extends DatastoreException {
//     private final PipelineState existingPipeline;
//     
//     public PipelineAlreadyExists(PipelineState existingPipeline) {
//       this.existingPipeline = existingPipeline;
//     }
//     
//     public PipelineState existingPipeline() {
//       return existingPipeline;
//     }
//   }
// 
//   /**
//    * Exception thrown when pipeline in question conflicts with already existing pipeline.
//    */
//   class PipelineConflictsWithRunningPipelines extends DatastoreException {
//     private final List<PipelineState> conflictingPipelines;
//     
//     public PipelineConflictsWithRunningPipelines(List<PipelineState> conflictingPipelines) {
//       this.conflictingPipelines = conflictingPipelines;
//     }
//     
//     public List<PipelineState> conflictingPipelines() {
//       return conflictingPipelines;
//     }
//   }
//   
//   List<PipelineId> listPipelinesIds() throws DatastoreException;
//   
//   List<PipelineState> getPipelines(List<PipelineId> ids) throws DatastoreException;
//   
//   void createPipeline(PipelineState pipelineState, boolean checkForConflicts)
//     throws PipelineAlreadyExists, PipelineConflictsWithRunningPipelines, DatastoreException;
//   
//   void writePipelines(List<PipelineState> pipelinesStates) throws DatastoreException;
//   
//   void deletePipelines(List<PipelineId> ids) throws DatastoreException;
//   
//   List<PipelineState> findConflictingPipelines(GroningenConfig pipelineConfiguration)
//     throws DatastoreException;
// }


import org.arbeitspferde.groningen.Datastore;
package org.arbeitspferde.groningen.datastore;


/**
 * Test for {@link InMemoryDatastore}.
 */
public class InMemoryDatastoreTest extends DatastoreTestCase {

  @Override
// Path: src/main/java/org/arbeitspferde/groningen/Datastore.java
// public interface Datastore {
//   
//   /**
//    * Base exception class for all Datastore-related exceptions. This exception was intentionally
//    * made a checked one, because nearly any datastore operation may fail and usually we have
//    * to recover from the failure in the place of a datastore call.
//    */
//   class DatastoreException extends Exception {
//     public DatastoreException() {
//       super();
//     }
//     
//     public DatastoreException(final String message) {
//       super(message);
//     }
//     
//     public DatastoreException(final Throwable cause) {
//       super(cause);
//     }
//     
//     public DatastoreException(final String message, final Throwable cause) {
//       super(message, cause);
//     }
//   }
//   
//   /**
//    * Exception thrown when pipeline in question already exists.
//    */
//   class PipelineAlreadyExists extends DatastoreException {
//     private final PipelineState existingPipeline;
//     
//     public PipelineAlreadyExists(PipelineState existingPipeline) {
//       this.existingPipeline = existingPipeline;
//     }
//     
//     public PipelineState existingPipeline() {
//       return existingPipeline;
//     }
//   }
// 
//   /**
//    * Exception thrown when pipeline in question conflicts with already existing pipeline.
//    */
//   class PipelineConflictsWithRunningPipelines extends DatastoreException {
//     private final List<PipelineState> conflictingPipelines;
//     
//     public PipelineConflictsWithRunningPipelines(List<PipelineState> conflictingPipelines) {
//       this.conflictingPipelines = conflictingPipelines;
//     }
//     
//     public List<PipelineState> conflictingPipelines() {
//       return conflictingPipelines;
//     }
//   }
//   
//   List<PipelineId> listPipelinesIds() throws DatastoreException;
//   
//   List<PipelineState> getPipelines(List<PipelineId> ids) throws DatastoreException;
//   
//   void createPipeline(PipelineState pipelineState, boolean checkForConflicts)
//     throws PipelineAlreadyExists, PipelineConflictsWithRunningPipelines, DatastoreException;
//   
//   void writePipelines(List<PipelineState> pipelinesStates) throws DatastoreException;
//   
//   void deletePipelines(List<PipelineId> ids) throws DatastoreException;
//   
//   List<PipelineState> findConflictingPipelines(GroningenConfig pipelineConfiguration)
//     throws DatastoreException;
// }


// Path: src/test/java/org/arbeitspferde/groningen/datastore/InMemoryDatastoreTest.java
import org.arbeitspferde.groningen.Datastore;

package org.arbeitspferde.groningen.datastore;


/**
 * Test for {@link InMemoryDatastore}.
 */
public class InMemoryDatastoreTest extends DatastoreTestCase {

  @Override
  protected Datastore createDatastore() {