Skip to content
Success

Console Output

Started by an SCM change
Running as SYSTEM
Building in workspace /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18
Checking out a fresh workspace because Jenkins failed to detect the current workspace /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18
ERROR: svn: E155010: The node '/var/lib/jenkins/home/jobs/ippps18/workspace/ippps18' was not found.
org.tmatesoft.svn.core.SVNException: svn: E155010: The node '/var/lib/jenkins/home/jobs/ippps18/workspace/ippps18' was not found.
	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:70)
	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:57)
	at org.tmatesoft.svn.core.internal.wc17.db.SvnWcDbConflicts.readConflictInternal(SvnWcDbConflicts.java:365)
	at org.tmatesoft.svn.core.internal.wc17.db.SvnWcDbConflicts.readConflict(SvnWcDbConflicts.java:342)
	at org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.readConflicts(SVNWCDb.java:3395)
	at org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.readConflicts(SVNWCDb.java:3355)
	at org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.opReadTreeConflict(SVNWCDb.java:2797)
	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgGetInfo.run(SvnNgGetInfo.java:74)
	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgGetInfo.run(SvnNgGetInfo.java:45)
	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgOperationRunner.run(SvnNgOperationRunner.java:20)
	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)
	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1239)
	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
	at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:2497)
	at hudson.scm.subversion.UpdateUpdater$TaskImpl.parseSvnInfo(UpdateUpdater.java:130)
	at hudson.scm.subversion.UpdateUpdater$TaskImpl.getSvnCommandToUse(UpdateUpdater.java:92)
	at hudson.scm.subversion.UpdateUpdater$TaskImpl.perform(UpdateUpdater.java:135)
	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:168)
	at hudson.scm.SubversionSCM$CheckOutUpdateTask.perform(SubversionSCM.java:1086)
	at hudson.scm.SubversionSCM$CheckOutUpdateTask.run(SubversionSCM.java:1067)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:1037)
	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:1020)
	at hudson.FilePath.act(FilePath.java:1192)
	at hudson.FilePath.act(FilePath.java:1175)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:970)
	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:892)
	at hudson.scm.SCM.checkout(SCM.java:540)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1241)
	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:649)
	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:85)
	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:521)
	at hudson.model.Run.execute(Run.java:1900)
	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
	at hudson.model.ResourceController.execute(ResourceController.java:107)
	at hudson.model.Executor.run(Executor.java:449)
Cleaning local Directory .
Checking out https://fhdwdev.ha.bib.de/svn/ippps18/trunk/ippps18 at revision '2023-02-11T07:23:37.014 +0100'
Using sole credentials <https://fhdwdev.ha.bib.de:443> FHDW in realm ‘<https://fhdwdev.ha.bib.de:443> FHDW’
AU        .project
A         developmentTools
A         developmentTools/Checkstyle
AU        developmentTools/Checkstyle/checkstyle-suppressions.xml
AU        developmentTools/Checkstyle/checkstyle.xml
AU        developmentTools/Checkstyle/checkstyleTest.xml
A         developmentTools/Findbugs
AU        developmentTools/Findbugs/findbugs.xml
AU        developmentTools/Findbugs/findbugsExclude.xml
A         developmentTools/Oomph
A         developmentTools/Oomph/ippps18.setup
A         model
AU        model/.classpath
AU        model/.project
AU        model/pom.xml
A         model/src
A         model/src/main
A         model/src/main/java
A         model/src/main/java/ablaeufe
A         model/src/main/java/ablaeufe/meta
A         model/src/main/java/ablaeufe/meta/AtomarerProzesstyp.java
A         model/src/main/java/ablaeufe/meta/Porttyp.java
A         model/src/main/java/ablaeufe/meta/Prozesstyp.java
A         model/src/main/java/ablaeufe/meta/ZusammengesetzterProzesstyp.java
A         model/src/main/java/ablaeufe/meta/akteurstypen
A         model/src/main/java/ablaeufe/meta/akteurstypen/Akteurtyp.java
A         model/src/main/java/ablaeufe/meta/akteurstypen/MaschinellerAkteurtyp.java
A         model/src/main/java/ablaeufe/meta/akteurstypen/MenschlicherAkteurtyp.java
A         model/src/main/java/ablaeufe/meta/aktivitaetstypen
A         model/src/main/java/ablaeufe/meta/aktivitaetstypen/Aktivitaetstyp.java
A         model/src/main/java/ablaeufe/meta/aktivitaetstypen/Endeaktivitaetstyp.java
A         model/src/main/java/ablaeufe/meta/aktivitaetstypen/Standardaktivitaetstyp.java
A         model/src/main/java/ablaeufe/meta/aktivitaetstypen/Startaktivitaetstyp.java
A         model/src/main/java/ablaeufe/meta/konnektortypen
A         model/src/main/java/ablaeufe/meta/konnektortypen/Abstraktionstyp.java
A         model/src/main/java/ablaeufe/meta/konnektortypen/Alternativetyp.java
A         model/src/main/java/ablaeufe/meta/konnektortypen/Aufteilungstyp.java
A         model/src/main/java/ablaeufe/meta/konnektortypen/Konnektortyp.java
A         model/src/main/java/ablaeufe/meta/konnektortypen/Synchronisationstyp.java
A         model/src/main/java/ablaeufe/meta/konnektortypen/Verteilungstyp.java
A         model/src/main/java/ablaeufe/meta/konnektortypen/Zusammenfuehrungstyp.java
A         model/src/main/java/ablaeufe/meta/strategies
A         model/src/main/java/ablaeufe/meta/strategies/aktivitaet
A         model/src/main/java/ablaeufe/meta/strategies/aktivitaet/Verarbeitung.java
A         model/src/main/java/ablaeufe/meta/strategies/alternative
A         model/src/main/java/ablaeufe/meta/strategies/alternative/Bedingung.java
A         model/src/main/java/ablaeufe/meta/strategies/verteilung
A         model/src/main/java/ablaeufe/meta/strategies/verteilung/Aufteilen.java
A         model/src/main/java/ablaeufe/meta/strategies/verteilung/Duplizieren.java
A         model/src/main/java/ablaeufe/meta/strategies/verteilung/VerteilungsStrategie.java
A         model/src/main/java/ablaeufe/meta/visitor
A         model/src/main/java/ablaeufe/meta/visitor/AkteurTypVisitor.java
A         model/src/main/java/ablaeufe/meta/visitor/AktivitaetstypVisitor.java
A         model/src/main/java/ablaeufe/meta/visitor/AtomarerProzesstypVisitor.java
A         model/src/main/java/ablaeufe/meta/visitor/AufteilungstypVisitor.java
A         model/src/main/java/ablaeufe/meta/visitor/KonnektortypVisitor.java
A         model/src/main/java/ablaeufe/meta/visitor/ProzesstypVisitor.java
A         model/src/main/java/ablaeufe/meta/visitor/ZusammenFuehrungsTypVisitor.java
A         model/src/main/java/ablaeufe/operation
AU        model/src/main/java/ablaeufe/operation/AtomarerProzess.java
A         model/src/main/java/ablaeufe/operation/KonsistenzVerletztException.java
AU        model/src/main/java/ablaeufe/operation/Port.java
AU        model/src/main/java/ablaeufe/operation/Prozess.java
AU        model/src/main/java/ablaeufe/operation/ZusammengesetzterProzess.java
A         model/src/main/java/ablaeufe/operation/akteure
AU        model/src/main/java/ablaeufe/operation/akteure/Akteur.java
AU        model/src/main/java/ablaeufe/operation/akteure/MaschinellerAkteur.java
AU        model/src/main/java/ablaeufe/operation/akteure/MenschlicherAkteur.java
A         model/src/main/java/ablaeufe/operation/aktivitaeten
AU        model/src/main/java/ablaeufe/operation/aktivitaeten/Aktivitaet.java
AU        model/src/main/java/ablaeufe/operation/aktivitaeten/Endeaktivitaet.java
AU        model/src/main/java/ablaeufe/operation/aktivitaeten/Standardaktivitaet.java
AU        model/src/main/java/ablaeufe/operation/aktivitaeten/Startaktivitaet.java
A         model/src/main/java/ablaeufe/operation/konnektoren
AU        model/src/main/java/ablaeufe/operation/konnektoren/Abstraktion.java
AU        model/src/main/java/ablaeufe/operation/konnektoren/Aufteilung.java
AU        model/src/main/java/ablaeufe/operation/konnektoren/EntschiedeneAlternative.java
AU        model/src/main/java/ablaeufe/operation/konnektoren/Konnektor.java
AU        model/src/main/java/ablaeufe/operation/konnektoren/Synchronisation.java
AU        model/src/main/java/ablaeufe/operation/konnektoren/Verteilung.java
AU        model/src/main/java/ablaeufe/operation/konnektoren/Zusammenfuehrung.java
A         model/src/main/java/ablaeufe/operation/visitor
AU        model/src/main/java/ablaeufe/operation/visitor/AktivitaetsVisitor.java
AU        model/src/main/java/ablaeufe/operation/visitor/AtomarerProzessVisitor.java
AU        model/src/main/java/ablaeufe/operation/visitor/AufteilungsVisitor.java
AU        model/src/main/java/ablaeufe/operation/visitor/KonnektorVisitor.java
AU        model/src/main/java/ablaeufe/operation/visitor/ProzessVisitor.java
AU        model/src/main/java/ablaeufe/operation/visitor/ZusammenFuehrungsVisitor.java
A         model/src/main/java/auftraege
AU        model/src/main/java/auftraege/Dokumentenklasse.java
AU        model/src/main/java/auftraege/ProduktionsAuftrag.java
AU        model/src/main/java/auftraege/ServiceLevelAgreement.java
AU        model/src/main/java/auftraege/UnpassendeKlasseException.java
AU        model/src/main/java/auftraege/Variable.java
A         model/src/main/java/auftraege/VoraussichtlicheDokumentenklasse.java
A         model/src/main/java/auftraege/VoraussichtlicheDokumentenklassenVariableVisitor.java
A         model/src/main/java/auftraege/auftragsBildungsParameter
A         model/src/main/java/auftraege/auftragsBildungsParameter/BeilagenArten.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/BlattAnzahlSpanne.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/FarbDruckTypMischbar.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/Kunden.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/KuvertFormate.java
AU        model/src/main/java/auftraege/auftragsBildungsParameter/MaxBeilagenarten.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/MaxKundenauftraege.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/PapierFormate.java
AU        model/src/main/java/auftraege/auftragsBildungsParameter/Rollenkapazitaet.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/SendungsAnzahlSpanne.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/SimplexDuplexMischbar.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/AusschliessenderParameter.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/AusschliessenderParameterVisitor.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/DokumentenklassenVariable.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/DokumentenklassenVariablenVisitor.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/LimitierenderParameter.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/LimitierenderParameterVisitor.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/ProduktionsauftragsParameter.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/SpannParam.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/StrategieParameter.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/StrategieParameterVisitor.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/abstraction/VoraussichtlicheDokumentenklassenVariable.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/dokumentenKlassenVariablen
A         model/src/main/java/auftraege/auftragsBildungsParameter/dokumentenKlassenVariablen/Beilagenart.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/dokumentenKlassenVariablen/BlattAnzahl.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/dokumentenKlassenVariablen/Id.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/dokumentenKlassenVariablen/Kommentar.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/dokumentenKlassenVariablen/ProzessModell.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/dokumentenKlassenVariablen/SendungsAnzahl.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/dokumentenKlassenVariablen/UnbekannteVariable.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/dokumentenKlassenVariablen/UnbekannteVariablen.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/states
A         model/src/main/java/auftraege/auftragsBildungsParameter/states/BeilagenArtenErlaubt.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/states/BeilagenArtenState.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/states/BeilagenArtenVerboten.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/states/KundenErlaubt.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/states/KundenState.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/states/KundenVerboten.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/states/KuvertFormateErlaubt.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/states/KuvertFormateState.java
A         model/src/main/java/auftraege/auftragsBildungsParameter/states/KuvertFormateVerboten.java
A         model/src/main/java/auftraege/factory
A         model/src/main/java/auftraege/factory/BeilagenartFactory.java
A         model/src/main/java/auftraege/factory/BlattAnzahlFactory.java
A         model/src/main/java/auftraege/factory/BlattanzahlSpanneFactory.java
A         model/src/main/java/auftraege/factory/DirectDokumentenklassenVariablenFactory.java
A         model/src/main/java/auftraege/factory/DirectProduktionsauftragsParameterFactory.java
A         model/src/main/java/auftraege/factory/DirectVoraussichtlicheDokumentenklassenVariablenFactory.java
A         model/src/main/java/auftraege/factory/DokumentenklassenVariablenFactory.java
A         model/src/main/java/auftraege/factory/DruckTypFactory.java
A         model/src/main/java/auftraege/factory/FarbDruckTypFactory.java
A         model/src/main/java/auftraege/factory/IdFactory.java
A         model/src/main/java/auftraege/factory/KommentarFactory.java
A         model/src/main/java/auftraege/factory/KundeFactory.java
A         model/src/main/java/auftraege/factory/KundenFactory.java
A         model/src/main/java/auftraege/factory/KuvertFormatFactory.java
A         model/src/main/java/auftraege/factory/KuvertFormateFactory.java
A         model/src/main/java/auftraege/factory/MaxBeilagenartenFactory.java
A         model/src/main/java/auftraege/factory/MaxKundenauftraegeFactory.java
A         model/src/main/java/auftraege/factory/PapierFormateFactory.java
A         model/src/main/java/auftraege/factory/PapierformatFactory.java
A         model/src/main/java/auftraege/factory/ProduktionsauftragsParameterFactory.java
A         model/src/main/java/auftraege/factory/ProzessModellFactory.java
A         model/src/main/java/auftraege/factory/RollenKapazitaetFactory.java
A         model/src/main/java/auftraege/factory/SendungsAnzahlFactory.java
A         model/src/main/java/auftraege/factory/SendungsanzahlSpanneFactory.java
A         model/src/main/java/auftraege/factory/SerienTerminFactory.java
A         model/src/main/java/auftraege/factory/ServiceLevelAgreementFactory.java
A         model/src/main/java/auftraege/factory/VoraussichtlicheDokumentenklassenVariablenFactory.java
A         model/src/main/java/auftraege/factory/ZeitraumFactory.java
A         model/src/main/java/auftraege/versand
AU        model/src/main/java/auftraege/versand/Adresse.java
AU        model/src/main/java/auftraege/versand/EPlus1.java
AU        model/src/main/java/auftraege/versand/Eplus2.java
AU        model/src/main/java/auftraege/versand/Kunde.java
AU        model/src/main/java/auftraege/versand/Postdienstleister.java
AU        model/src/main/java/auftraege/versand/VersandArt.java
AU        model/src/main/java/auftraege/versand/VersandInformation.java
A         model/src/main/java/maschine
A         model/src/main/java/maschine/BegrenzteBeilagenArten.java
AU        model/src/main/java/maschine/Maschine.java
AU        model/src/main/java/maschine/MaschinenTyp.java
AU        model/src/main/java/maschine/MaschinentypPersonalbindung.java
A         model/src/main/java/maschine/faehigkeit
AU        model/src/main/java/maschine/faehigkeit/DruckTyp.java
AU        model/src/main/java/maschine/faehigkeit/Drucken.java
AU        model/src/main/java/maschine/faehigkeit/FaehigkeitVisitor.java
AU        model/src/main/java/maschine/faehigkeit/FarbDruckTyp.java
AU        model/src/main/java/maschine/faehigkeit/Kuvertieren.java
AU        model/src/main/java/maschine/faehigkeit/MaschinenFaehigkeit.java
A         model/src/main/java/maschine/faehigkeit/SimplesDrucken.java
A         model/src/main/java/maschine/faehigkeit/SimplesKuvertieren.java
A         model/src/main/java/maschine/papierart
AU        model/src/main/java/maschine/papierart/PapierQuelle.java
A         model/src/main/java/material
A         model/src/main/java/material/Auspraegung.java
A         model/src/main/java/material/DirectMaterialFactory.java
A         model/src/main/java/material/Material.java
A         model/src/main/java/material/MaterialFactory.java
A         model/src/main/java/material/MaterialMitMessung.java
A         model/src/main/java/material/auspraegungen
A         model/src/main/java/material/auspraegungen/Farbe.java
A         model/src/main/java/material/auspraegungen/Papierformat.java
A         model/src/main/java/material/auspraegungen/Papiertyp.java
A         model/src/main/java/material/farbstoff
A         model/src/main/java/material/farbstoff/FarbFactory.java
AU        model/src/main/java/material/farbstoff/Patrone.java
AU        model/src/main/java/material/farbstoff/PatronenTyp.java
AU        model/src/main/java/material/farbstoff/TinteCyan.java
AU        model/src/main/java/material/farbstoff/TinteGelb.java
AU        model/src/main/java/material/farbstoff/TinteMagenta.java
AU        model/src/main/java/material/farbstoff/TinteSchwarz.java
AU        model/src/main/java/material/farbstoff/TintenTyp.java
AU        model/src/main/java/material/farbstoff/TonerEinkomponenten.java
AU        model/src/main/java/material/farbstoff/TonerTransferFluessigkeit.java
AU        model/src/main/java/material/farbstoff/TonerTyp.java
AU        model/src/main/java/material/farbstoff/TonerZweiKomponenten.java
A         model/src/main/java/material/kuvert
AU        model/src/main/java/material/kuvert/Kuvert.java
A         model/src/main/java/material/kuvert/KuvertFactory.java
A         model/src/main/java/material/kuvert/KuvertFormat.java
A         model/src/main/java/material/kuvert/Kuverttyp.java
A         model/src/main/java/material/papier
AU        model/src/main/java/material/papier/Papier.java
AU        model/src/main/java/material/papier/PapierFactory.java
AU        model/src/main/java/material/papier/PapierRolle.java
AU        model/src/main/java/material/papier/RollenFormat.java
A         model/src/main/java/mensch
AU        model/src/main/java/mensch/Mitarbeiter.java
AU        model/src/main/java/mensch/Produktionsrolle.java
AU        model/src/main/java/mensch/Qualifikation.java
AU        model/src/main/java/mensch/QualifikationsException.java
A         model/src/main/java/mensch/faehigkeit
AU        model/src/main/java/mensch/faehigkeit/MitarbeiterFaehigkeit.java
AU        model/src/main/java/mensch/faehigkeit/MitarbeiterFaehigkeitFuerMaschine.java
AU        model/src/main/java/mensch/faehigkeit/MitarbeiterFaehigkeitenManager.java
A         model/src/main/java/planung
A         model/src/main/java/planung/Begruendung.java
A         model/src/main/java/planung/MittelfristigePlanung.java
A         model/src/main/java/planung/Schicht.java
A         model/src/main/java/planung/SchichtZeit.java
A         model/src/main/java/planung/SchichtZeitFactory.java
A         model/src/main/java/schnittstelle
AU        model/src/main/java/schnittstelle/Sitzung.java
A         model/src/main/java/schnittstelle/ablaeufeKommandos
A         model/src/main/java/schnittstelle/ablaeufeKommandos/ErstelleKommandos
AU        model/src/main/java/schnittstelle/ablaeufeKommandos/ErstelleKommandos/ErstelleAbstraktionstypKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/ablaeufeKommandos/ErstelleKommandos/ErstelleAlternativetypKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/ablaeufeKommandos/ErstelleKommandos/ErstelleEndeaktivitaetstypKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/ablaeufeKommandos/ErstelleKommandos/ErstelleStandardaktivitaetstypKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/ablaeufeKommandos/ErstelleKommandos/ErstelleStartaktivitaetstypKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/ablaeufeKommandos/ErstelleKommandos/ErstelleSynchronisationstypKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/ablaeufeKommandos/ErstelleKommandos/ErstelleVerteilungstypKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/ablaeufeKommandos/ErstelleKommandos/ErstelleZusammengesetzterProzesstypKommandoMitResultat.java
A         model/src/main/java/schnittstelle/ablaeufeKommandos/NichtErstelleKommandos
A         model/src/main/java/schnittstelle/kommandoArchitektur
AU        model/src/main/java/schnittstelle/kommandoArchitektur/Kommando.java
AU        model/src/main/java/schnittstelle/kommandoArchitektur/KommandoMitExceptionMitResultat.java
AU        model/src/main/java/schnittstelle/kommandoArchitektur/KommandoMitExceptionOhneResultat.java
AU        model/src/main/java/schnittstelle/kommandoArchitektur/KommandoOhneExceptionMitResultat.java
AU        model/src/main/java/schnittstelle/kommandoArchitektur/KommandoOhneExceptionOhneResultat.java
AU        model/src/main/java/schnittstelle/kommandoArchitektur/KommandoVisitor.java
A         model/src/main/java/schnittstelle/maschinenKommandos
AU        model/src/main/java/schnittstelle/maschinenKommandos/ErstelleMaschineKommandoMitResultat.java
A         model/src/main/java/schnittstelle/mitarbeiterKommandos
AU        model/src/main/java/schnittstelle/mitarbeiterKommandos/ErstelleMitarbeiterFaehigkeitKommando.java
AU        model/src/main/java/schnittstelle/mitarbeiterKommandos/ErstelleMitarbeiterKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/mitarbeiterKommandos/ErstelleProduktionsrolleKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/mitarbeiterKommandos/ErstelleQualifikationKommandoMitResultat.java
AU        model/src/main/java/schnittstelle/mitarbeiterKommandos/FuegeFaehigkeitZuProduktionsrolleHinzuKommando.java
AU        model/src/main/java/schnittstelle/mitarbeiterKommandos/FuegeProduktionsrolleZuMitarbeiterHinzuKommando.java
AU        model/src/main/java/schnittstelle/mitarbeiterKommandos/FuegeQualifikationZuMitarbeiterHinzuKommando.java
A         model/src/main/java/util
A         model/src/main/java/util/ClassObjectMap.java
AU        model/src/main/java/util/CollectionHelper.java
AU        model/src/main/java/util/Constants.java
AU        model/src/main/java/util/Fraction.java
AU        model/src/main/java/util/Immutable.java
A         model/src/main/java/util/Kombinator.java
A         model/src/main/java/util/Numberable.java
AU        model/src/main/java/util/Pair.java
A         model/src/main/java/util/RegexConstants.java
A         model/src/main/java/util/Wrapper.java
A         model/src/main/java/util/exceptions
AU        model/src/main/java/util/exceptions/AlreadyExistsException.java
A         model/src/main/java/util/exceptions/BeilagenAnzahlOutOfBoundsException.java
A         model/src/main/java/util/exceptions/ExceptionConstants.java
AU        model/src/main/java/util/exceptions/FaehigkeitsException.java
AU        model/src/main/java/util/exceptions/FractionConstructionException.java
A         model/src/main/java/util/exceptions/KeineVerfuegbarkeitException.java
AU        model/src/main/java/util/exceptions/KommandoAusfuehrungsException.java
AU        model/src/main/java/util/exceptions/PPSException.java
AU        model/src/main/java/util/exceptions/ProduktionsrollenBereitsVorhandenException.java
AU        model/src/main/java/util/exceptions/SitzungsException.java
A         model/src/main/java/util/exceptions/SollteNichtPassierenException.java
A         model/src/main/java/util/exceptions/VariableDoesNotExistException.java
A         model/src/main/java/util/fractionStyles
A         model/src/main/java/util/fractionStyles/Decimal.java
A         model/src/main/java/util/fractionStyles/FractionStyle.java
A         model/src/main/java/util/fractionStyles/Percent.java
A         model/src/main/java/util/fractionStyles/Science.java
A         model/src/main/java/util/fractionStyles/SingleNumber.java
A         model/src/main/java/util/fractionStyles/SlashSeparated.java
A         model/src/main/java/util/testutilities
AU        model/src/main/java/util/testutilities/AssertThrows.java
AU        model/src/main/java/util/testutilities/Executable.java
A         model/src/main/java/zeit
A         model/src/main/java/zeit/GenerellerKalender.java
AU        model/src/main/java/zeit/Kalender.java
A         model/src/main/java/zeit/KalenderEintragNichtErlaubtException.java
A         model/src/main/java/zeit/MaschinenKalender.java
A         model/src/main/java/zeit/MitarbeiterKalender.java
A         model/src/main/java/zeit/TypMitKalender.java
A         model/src/main/java/zeit/ZeitUtils.java
A         model/src/main/java/zeit/eintraege
A         model/src/main/java/zeit/eintraege/BelegungsEintrag.java
A         model/src/main/java/zeit/eintraege/KalenderEintrag.java
A         model/src/main/java/zeit/eintraege/KalenderEintragGenerell.java
A         model/src/main/java/zeit/eintraege/KalenderEintragTyp.java
A         model/src/main/java/zeit/eintraege/KalenderEintragVisitor.java
A         model/src/main/java/zeit/eintraege/MaschinenBelegungEintrag.java
A         model/src/main/java/zeit/eintraege/MenschBelegungEintrag.java
A         model/src/main/java/zeit/eintraege/UhrzeitZeitraum.java
A         model/src/main/java/zeit/eintraege/Zeitraum.java
A         model/src/main/java/zeit/serientermin
A         model/src/main/java/zeit/serientermin/CreatePassendenKalenderEintragMitZeitraumVisitor.java
A         model/src/main/java/zeit/serientermin/IntervallSerienTermin.java
A         model/src/main/java/zeit/serientermin/MonatlicherSerientermin.java
A         model/src/main/java/zeit/serientermin/MonatlicherSerienterminNachDem28Exception.java
A         model/src/main/java/zeit/serientermin/SerienTermin.java
A         model/src/main/resources
A         model/src/main/resources/ablaeufe
AU        model/src/main/resources/ablaeufe/Entwurf_Ablaeufe.pdf
AU        model/src/main/resources/ablaeufe/ImplementierungAblaeufe.pdf
A         model/src/test
A         model/src/test/java
A         model/src/test/java/SicherstellungFuerDokumentenklassenVariablenViaReflection.java
A         model/src/test/java/ablaeufe
A         model/src/test/java/ablaeufe/meta
A         model/src/test/java/ablaeufe/meta/AblaeufeMetaVisitorTest.java
A         model/src/test/java/ablaeufe/meta/AblaufeMetaAllgemeinTest.java
A         model/src/test/java/ablaeufe/meta/PorttypProzessTypSymmetrieTest.java
A         model/src/test/java/ablaeufe/meta/ProzesstypAufbauTest.java
AU        model/src/test/java/ablaeufe/meta/ZusammengesetzterProzessTypTest.java
A         model/src/test/java/ablaeufe/operation
A         model/src/test/java/ablaeufe/operation/AblaufeOperationAllgemeinTest.java
A         model/src/test/java/ablaeufe/operation/ProzessAufbauTest.java
A         model/src/test/java/auftraege
AU        model/src/test/java/auftraege/AuftraegeAllgemeinTest.java
A         model/src/test/java/dokumentenklassen
A         model/src/test/java/dokumentenklassen/DokumentenklasseSLATest.java
A         model/src/test/java/dokumentenklassen/VoraussichtlicheDokumentenklasseToDokumentenklasseTest.java
A         model/src/test/java/maschine
AU        model/src/test/java/maschine/MaschineAllgemeinTest.java
A         model/src/test/java/maschine/MaschineGetVerfuegbarkeitTest.java
AU        model/src/test/java/maschine/MaschineTest.java
A         model/src/test/java/material
AU        model/src/test/java/material/MaterialAllgemeinTest.java
A         model/src/test/java/mensch
AU        model/src/test/java/mensch/AddProduktionsrolleToMitarbeiterTest.java
AU        model/src/test/java/mensch/AddQualifikationToMitarbeiterTest.java
AU        model/src/test/java/mensch/FaehigkeitenTest.java
AU        model/src/test/java/mensch/MenschAllgemeinTest.java
A         model/src/test/java/schnittstelle
AU        model/src/test/java/schnittstelle/SitzungTest.java
A         model/src/test/java/schnittstelle/ablaeufe
AU        model/src/test/java/schnittstelle/ablaeufe/AblaeufeErstelleKommandoTests.java
A         model/src/test/java/util
A         model/src/test/java/util/ClassObjectMapTest.java
AU        model/src/test/java/util/FractionTest.java
A         model/src/test/java/zeit
A         model/src/test/java/zeit/KalenderEintragTest.java
A         model/src/test/java/zeit/KalenderGenerellTest.java
AU        model/src/test/java/zeit/KalenderTestConstants.java
A         model/src/test/java/zeit/KalenderTestUtils.java
A         model/src/test/java/zeit/MaschinenKalenderTest.java
A         model/src/test/java/zeit/MitarbeiterKalenderTest.java
A         model/src/test/java/zeit/SerienTerminTest.java
A         model/src/test/java/zeit/ZeitraumTest.java
A         model/src/test/resources
A         model/src/test/resources/ablaeufe
A         model/src/test/resources/ablaeufe/objektWelten
AU        model/src/test/resources/ablaeufe/objektWelten/Alternative_Objektwelt.pdf
AU        model/src/test/resources/ablaeufe/objektWelten/Sequenz_Objektwelt.pdf
AU        model/src/test/resources/ablaeufe/objektWelten/Verteilung_Objektwelt.pdf
A         model/src/test/resources/ablaeufe/prozessModelle
AU        model/src/test/resources/ablaeufe/prozessModelle/Alternative_ProzessModell.pdf
AU        model/src/test/resources/ablaeufe/prozessModelle/Euklid_ProzessModell.pdf
A         model/src/test/resources/ablaeufe/prozessModelle/ProzessaufbauTest.svg
AU        model/src/test/resources/ablaeufe/prozessModelle/Sequenz_ProzessModell.pdf
AU        model/src/test/resources/ablaeufe/prozessModelle/Verteilung_ProzessModell.pdf
A         model/src/test/resources/maschine
AU        model/src/test/resources/maschine/Testfallbeschreibung_getAmFruehestenVerfuegbarenQualifiziertenMitarbeiterTest.jpg
A         persist
AU        persist/.classpath
AU        persist/.project
AU        persist/pom.xml
A         persist/src
A         persist/src/main
A         persist/src/main/java
A         persist/src/main/java/example
AU        persist/src/main/java/example/Addresse.java
AU        persist/src/main/java/example/BeispielInterface.java
AU        persist/src/main/java/example/First.java
AU        persist/src/main/java/example/Komponente.java
AU        persist/src/main/java/example/Kunde.java
AU        persist/src/main/java/example/Material.java
AU        persist/src/main/java/example/Produkt.java
AU        persist/src/main/java/example/Second.java
AU        persist/src/main/java/example/Telefonnummer.java
A         persist/src/main/java/persist
AU        persist/src/main/java/persist/Persistierer.java
A         persist/src/main/resources
A         persist/src/test
A         persist/src/test/java
A         persist/src/test/java/example
AU        persist/src/test/java/example/PersistiererTest.java
A         persist/src/test/resources
AU        persist/src/test/resources/moreAttributesThanObjectHas.xml
AU        persist/src/test/resources/wrongType.xml
AU        pom.xml
A         service
AU        service/.classpath
AU        service/.project
A         service/.settings
AU        service/.settings/org.eclipse.core.resources.prefs
AU        service/.settings/org.eclipse.jdt.core.prefs
AU        service/.settings/org.eclipse.m2e.core.prefs
A         service/pom.xml
A         service/src
A         service/src/main
A         service/src/main/java
A         service/src/main/java/planung
A         service/src/main/java/planung/wochenplanung
A         service/src/main/java/planung/wochenplanung/PlanungsStrategie.java
A         service/src/main/java/planung/wochenplanung/PlanungsStrategieFactory.java
A         service/src/main/java/planung/wochenplanung/StandardStrategie.java
A         service/src/main/java/produktionsauftrag
A         service/src/main/java/produktionsauftrag/DokumentenklasseBuilder.java
AU        service/src/main/java/produktionsauftrag/FaktorOutOfBoundsException.java
A         service/src/main/java/produktionsauftrag/ProduktionsAuftragServiceImpl.java
AU        service/src/main/java/produktionsauftrag/ProduktionsAuftragsService.java
A         service/src/main/java/produktionsauftrag/ProduktionsauftragsBuilder.java
A         service/src/main/java/rollenbelegung
A         service/src/main/java/rollenbelegung/Belegung.java
A         service/src/main/java/rollenbelegung/ErmittelteBelegungen.java
A         service/src/main/java/rollenbelegung/MaschinenBelegung.java
AU        service/src/main/java/rollenbelegung/MaschinenRollenbelegungService.java
A         service/src/main/java/rollenbelegung/MitarbeiterBelegung.java
AU        service/src/main/java/rollenbelegung/Produktionsplaner.java
AU        service/src/main/java/rollenbelegung/SortierHelper.java
A         service/src/main/java/rollenbelegung/SortierParameter
A         service/src/main/java/rollenbelegung/SortierParameter/MaschinenRollenbelegungServiceParameter.java
A         service/src/main/java/rollenbelegung/SortierParameter/MaschinenSortierParameter
A         service/src/main/java/rollenbelegung/SortierParameter/MaschinenSortierParameter/MaschinenSortierParameter.java
AU        service/src/main/java/rollenbelegung/SortierParameter/MaschinenSortierParameter/SortBeilagenFaecherAnzahl.java
AU        service/src/main/java/rollenbelegung/SortierParameter/MaschinenSortierParameter/SortDruckTyp.java
AU        service/src/main/java/rollenbelegung/SortierParameter/MaschinenSortierParameter/SortFarbDruckTyp.java
AU        service/src/main/java/rollenbelegung/SortierParameter/MaschinenSortierParameter/SortGeschwindigkeit.java
A         service/src/main/java/rollenbelegung/SortierParameter/MitarbeiterSortierParameter
A         service/src/main/java/rollenbelegung/SortierParameter/MitarbeiterSortierParameter/MitarbeiterSortierParameter.java
AU        service/src/main/java/rollenbelegung/SortierParameter/MitarbeiterSortierParameter/SortAnzahlQualifikationen.java
A         service/src/main/java/rollenbelegung/SortierParameter/ProduktionsAuftragsSortierParameter
A         service/src/main/java/rollenbelegung/SortierParameter/ProduktionsAuftragsSortierParameter/ProduktionsAuftragSortierParameter.java
AU        service/src/main/java/rollenbelegung/SortierParameter/ProduktionsAuftragsSortierParameter/SortAnzahlGeringsterUmruestungenFuerBeilagen.java
AU        service/src/main/java/rollenbelegung/SortierParameter/ProduktionsAuftragsSortierParameter/SortBeilagenAnzahl.java
AU        service/src/main/java/rollenbelegung/SortierParameter/ProduktionsAuftragsSortierParameter/SortDruckTyp.java
AU        service/src/main/java/rollenbelegung/SortierParameter/ProduktionsAuftragsSortierParameter/SortFarbDruckTyp.java
AU        service/src/main/java/rollenbelegung/SortierParameter/ProduktionsAuftragsSortierParameter/SortGroesse.java
AU        service/src/main/java/rollenbelegung/SortierParameter/ProduktionsAuftragsSortierParameter/SortSLA.java
AU        service/src/main/java/rollenbelegung/SortierParameter/SortierParameter.java
AU        service/src/main/java/rollenbelegung/SortierParameter/SortierReihenfolge.java
A         service/src/main/java/rollenbelegung/SortierParameter/ZuordnungsParameter.java
A         service/src/main/java/servicekommandos
A         service/src/main/java/servicekommandos/produktionsauftrag
A         service/src/main/java/servicekommandos/produktionsauftrag/ErstelleProduktionsauftraegeKommando.java
A         service/src/main/java/servicekommandos/rollenbelegung
A         service/src/main/java/servicekommandos/rollenbelegung/FindeBelegungAberErzeugeKeineKalendereintraegeKommando.java
A         service/src/main/java/servicekommandos/rollenbelegung/FindeBelegungKommando.java
A         service/src/main/java/servicekommandos/simulation
A         service/src/main/java/servicekommandos/simulation/PruefeKommando.java
A         service/src/main/java/servicekommandos/simulation/PruefeUndSimuliereKommando.java
A         service/src/main/java/servicekommandos/simulation/SimuliereKommando.java
A         service/src/main/java/servicekommandos/statistik
A         service/src/main/java/servicekommandos/tagesplanung
AU        service/src/main/java/servicekommandos/tagesplanung/ErzeugeParameterVariationenAusKommando.java
AU        service/src/main/java/servicekommandos/tagesplanung/FindeOptimaleParameterAusKommando.java
AU        service/src/main/java/servicekommandos/tagesplanung/PlaneUndSimuliereKommando.java
AU        service/src/main/java/servicekommandos/tagesplanung/PlaneUndSimuliereMitOptimalenParameterAusKommando.java
A         service/src/main/java/servicekommandos/wochenplanung
AU        service/src/main/java/servicekommandos/wochenplanung/ErstelleMittelfristigePlanungKommando.java
A         service/src/main/java/simulation
A         service/src/main/java/simulation/PruefErgebnis.java
AU        service/src/main/java/simulation/PruefErgebnisBuilder.java
A         service/src/main/java/simulation/SimulationsErgebnis.java
A         service/src/main/java/simulation/SimulationsErgebnisBuilder.java
A         service/src/main/java/simulation/SimulationsHelper
A         service/src/main/java/simulation/SimulationsHelper/Auslastung.java
A         service/src/main/java/simulation/SimulationsHelper/AuslastungsHelper.java
A         service/src/main/java/simulation/SimulationsHelper/BelegungsHelper.java
A         service/src/main/java/simulation/SimulationsHelper/SimulationsKonstanten.java
A         service/src/main/java/simulation/SimulationsHelper/UeberbuchungsHelper.java
A         service/src/main/java/simulation/SimulationsService.java
A         service/src/main/java/simulation/SimulationsServiceImpl.java
A         service/src/main/java/simulation/exceptions
A         service/src/main/java/simulation/exceptions/PruefungsException.java
A         service/src/main/java/simulation/exceptions/SimulationsException.java
A         service/src/main/java/statistik
AU        service/src/main/java/statistik/StatCalc.java
AU        service/src/main/java/statistik/StatCalcEmptyListException.java
A         service/src/main/java/tagesplanung
AU        service/src/main/java/tagesplanung/TagesplanungsService.java
AU        service/src/main/java/tagesplanung/TagesplanungsServiceImpl.java
A         service/src/main/resources
A         service/src/test
A         service/src/test/java
A         service/src/test/java/features
A         service/src/test/java/features/CucumberContext.java
A         service/src/test/java/features/RunCucumberTests.java
A         service/src/test/java/features/beilagenoptimierung
A         service/src/test/java/features/beilagenoptimierung/BeilagenOptimierungStepDefs.java
A         service/src/test/java/features/common
A         service/src/test/java/features/common/DateConverter.java
A         service/src/test/java/features/common/DateUtils.java
A         service/src/test/java/features/common/MaschinenFaehigkeitConverter.java
A         service/src/test/java/features/common/TimeQuantityConverter.java
A         service/src/test/java/features/produktionsauftrag
A         service/src/test/java/features/produktionsauftrag/KundenauftragIdAnzahlBlattTripel.java
A         service/src/test/java/features/produktionsauftrag/KundenauftragTestDAO.java
A         service/src/test/java/features/produktionsauftrag/ProduktionsauftragStepDefs.java
A         service/src/test/java/features/produktionsauftrag/ProduktionsauftragStepUtils.java
A         service/src/test/java/features/produktionsauftrag/ProduktionsauftragTestDAO.java
A         service/src/test/java/features/produktionsauftrag/ProduktionsauftragsParameterTestDAO.java
A         service/src/test/java/features/rollenbelegung
AU        service/src/test/java/features/rollenbelegung/FaehigkeitDAO.java
AU        service/src/test/java/features/rollenbelegung/MaschineDAO.java
AU        service/src/test/java/features/rollenbelegung/MaschinenTypTestDAO.java
AU        service/src/test/java/features/rollenbelegung/MitarbeiterDAO.java
A         service/src/test/java/features/rollenbelegung/RollenbelegungStepDefs.java
AU        service/src/test/java/features/rollenbelegung/RollenbelegungStepUtils.java
AU        service/src/test/java/features/rollenbelegung/SortierParameterDAO.java
A         service/src/test/java/features/simulation
A         service/src/test/java/features/simulation/BelegungTestDAO.java
A         service/src/test/java/features/simulation/FaehigkeitUndSchrittTestDAO.java
A         service/src/test/java/features/simulation/KalenderEintragTestDAO.java
A         service/src/test/java/features/simulation/MaschinenBelegungTestDAO.java
A         service/src/test/java/features/simulation/MaterialTestDAO.java
A         service/src/test/java/features/simulation/MaterialVerbrauchTestDAO.java
A         service/src/test/java/features/simulation/MitarbeiterBelegungTestDAO.java
A         service/src/test/java/features/simulation/SimulationStepDefs.java
A         service/src/test/java/features/simulation/SimulationStepUtils.java
A         service/src/test/java/features/statistik
AU        service/src/test/java/features/statistik/StatistikStepDefs.java
A         service/src/test/java/features/tagesplanung
AU        service/src/test/java/features/tagesplanung/ParameterKombinationDAO.java
AU        service/src/test/java/features/tagesplanung/StrategieParameterDAO.java
AU        service/src/test/java/features/tagesplanung/TagesplanungStepDefs.java
AU        service/src/test/java/features/tagesplanung/TagesplanungStepUtils.java
A         service/src/test/java/features/wochenplanung
A         service/src/test/java/features/wochenplanung/MaschinenTypZuordnungTestDAO.java
A         service/src/test/java/features/wochenplanung/MaschinentypenListenConverter.java
A         service/src/test/java/features/wochenplanung/PlanungTestDAO.java
A         service/src/test/java/features/wochenplanung/SchichtTestDAO.java
A         service/src/test/java/features/wochenplanung/UebrigeAuftraegeTestDAO.java
A         service/src/test/java/features/wochenplanung/WochenplanungStepDefs.java
A         service/src/test/java/features/wochenplanung/WochenplanungStepUtils.java
A         service/src/test/java/produktionsauftrag
A         service/src/test/java/produktionsauftrag/ProduktionsauftragTest.java
A         service/src/test/java/rollenbelegung
AU        service/src/test/java/rollenbelegung/ProduktionsplanerTest.java
A         service/src/test/java/servicekommandos
A         service/src/test/java/servicekommandos/MaschinenRollenbelegungsKommandosTest.java
A         service/src/test/java/servicekommandos/ProduktionsAuftragServiceKommandosTest.java
A         service/src/test/java/servicekommandos/SimulationsKommandosTest.java
AU        service/src/test/java/servicekommandos/TagesplanungKommandosTest.java
AU        service/src/test/java/servicekommandos/WochenplanungKommandosTest.java
A         service/src/test/java/simulation
AU        service/src/test/java/simulation/SimulationsTest.java
A         service/src/test/java/statistik
AU        service/src/test/java/statistik/StatistikTest.java
A         service/src/test/java/tagesplanung
AU        service/src/test/java/tagesplanung/ParameterVariationTest.java
AU        service/src/test/java/tagesplanung/SimulationsErgebnisVergleichTest.java
A         service/src/test/java/tagesplanung/TagesplanungTest.java
A         service/src/test/java/wochenplanung
A         service/src/test/java/wochenplanung/PlanungsStrategieTest.java
A         service/src/test/java/wochenplanung/SchichtTest.java
A         service/src/test/resources
A         service/src/test/resources/features
A         service/src/test/resources/features/Beilagenoptimierung.feature
A         service/src/test/resources/features/Produktionsauftrag.feature
A         service/src/test/resources/features/Pruefer.feature
A         service/src/test/resources/features/Rollenbelegung.feature
A         service/src/test/resources/features/Simulation.feature
A         service/src/test/resources/features/Statistik.feature
A         service/src/test/resources/features/Tagesplanung.feature
A         service/src/test/resources/features/Wochenplanung.feature
A         view
AU        view/.classpath
AU        view/.project
AU        view/pom.xml
A         view/src
A         view/src/main
A         view/src/main/java
A         view/src/main/resources
A         view/src/test
A         view/src/test/java
A         view/src/test/resources
 U        .
At revision 1376

Parsing POMs
Established TCP socket on 46471
[ippps18] $ /usr/lib/jvm/openjdk-bin-8/bin/java -Xmx1024m -XX:MaxPermSize=128m -cp /var/lib/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.14.jar:/usr/share/maven-bin-3.8/boot/plexus-classworlds-2.6.0.jar:/usr/share/maven-bin-3.8/conf/logging jenkins.maven3.agent.Maven35Main /usr/share/maven-bin-3.8 /var/lib/jenkins/home/war/WEB-INF/lib/remoting-3077.vd69cf116da_6f.jar /var/lib/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven35-interceptor-1.14.jar /var/lib/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.14.jar 46471
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
Exception in thread "main" java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:425)
	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
	at jenkins.maven3.agent.Maven35Main.main(Maven35Main.java:136)
	at jenkins.maven3.agent.Maven35Main.main(Maven35Main.java:66)
ERROR: ================================================================================
ERROR: Invalid project setup: Connection reset
ERROR: [JENKINS-18403][JENKINS-28294] JDK 'jdk-1.8' not supported to run Maven projects.
ERROR: Maven projects have to be launched with a Java version greater or equal to the minimum version required by the controller.
ERROR: Use the Maven JDK Toolchains (plugin) to build your maven project with an older JDK.
ERROR: Retrying with agent Java and setting compile/test properties to point to /usr/lib/jvm/openjdk-bin-8.
ERROR: ================================================================================
Established TCP socket on 43319
[ippps18] $ /opt/openjdk-bin-11.0.18_p10/bin/java -Xmx1024m -XX:MaxPermSize=128m -cp /var/lib/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven35-agent-1.14.jar:/usr/share/maven-bin-3.8/boot/plexus-classworlds-2.6.0.jar:/usr/share/maven-bin-3.8/conf/logging jenkins.maven3.agent.Maven35Main /usr/share/maven-bin-3.8 /var/lib/jenkins/home/war/WEB-INF/lib/remoting-3077.vd69cf116da_6f.jar /var/lib/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven35-interceptor-1.14.jar /var/lib/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.14.jar 43319
OpenJDK 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven:  -B -f /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/pom.xml clean install site
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] Integrationsprojekt HFW415                                         [pom]
[INFO] persist                                                            [jar]
[INFO] model                                                              [jar]
[INFO] view                                                               [jar]
[INFO] service                                                            [jar]
[INFO] 
[INFO] ----------------------< de.fhdw.ippps18:ippps18 >-----------------------
[INFO] Building Integrationsprojekt HFW415 0.0.1-SNAPSHOT                 [1/5]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ ippps18 ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:prepare-agent (jacoco-initialize) @ ippps18 ---
[INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/target/jacoco.exec
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:report (jacoco-site) @ ippps18 ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ ippps18 ---
[INFO] Installing /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/pom.xml to /var/lib/jenkins/.m2/repository/de/fhdw/ippps18/ippps18/0.0.1-SNAPSHOT/ippps18-0.0.1-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-site-plugin:3.3:site (default-site) @ ippps18 ---
[INFO] configuring report plugin org.apache.maven.plugins:maven-project-info-reports-plugin:2.9
[INFO] configuring report plugin org.apache.maven.plugins:maven-site-plugin:3.4
[INFO] configuring report plugin org.apache.maven.plugins:maven-checkstyle-plugin:2.17
[INFO] configuring report plugin org.codehaus.mojo:findbugs-maven-plugin:3.0.5
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/var/lib/jenkins/.m2/repository/org/codehaus/groovy/groovy/2.4.12/groovy-2.4.12.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[WARNING] No project URL defined - decoration links will not be relativized!
[INFO] Rendering site with org.apache.maven.skins:maven-default-skin:jar:1.0 skin.
[INFO] Generating "Dependencies" report    --- maven-project-info-reports-plugin:2.9
[WARNING] The repository url 'http://localhost:8083/nexus/content/groups/public' is invalid - Repository 'public' will be blacklisted.
[INFO] Generating "Dependency Convergence" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Dependency Information" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "About" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Project Modules" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugin Management" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugins" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Summary" report    --- maven-project-info-reports-plugin:2.9
[JENKINS] Archiving site from /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/target/site to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18@tmp/maven-reporters/moduleset/site
[INFO] 
[INFO] ----------------------< de.fhdw.ippps18:persist >-----------------------
[INFO] Building persist 0.0.1-SNAPSHOT                                    [2/5]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ persist ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:prepare-agent (jacoco-initialize) @ persist ---
[INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/jacoco.exec
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ persist ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ persist ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 10 source files to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ persist ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ persist ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.20.1:test (default-test) @ persist ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running example.PersistiererTest
Security framework of XStream not initialized, XStream is probably vulnerable.
[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.955 s - in example.PersistiererTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[JENKINS] Recording test results
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:report (jacoco-site) @ persist ---
[INFO] Loading execution data file /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/jacoco.exec
[INFO] Analyzed bundle 'persist' with 12 classes
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ persist ---
[INFO] Building jar: /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/persist-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ persist ---
[INFO] Installing /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/persist-0.0.1-SNAPSHOT.jar to /var/lib/jenkins/.m2/repository/de/fhdw/ippps18/persist/0.0.1-SNAPSHOT/persist-0.0.1-SNAPSHOT.jar
[INFO] Installing /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/pom.xml to /var/lib/jenkins/.m2/repository/de/fhdw/ippps18/persist/0.0.1-SNAPSHOT/persist-0.0.1-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-site-plugin:3.3:site (default-site) @ persist ---
[INFO] configuring report plugin org.apache.maven.plugins:maven-project-info-reports-plugin:2.9
[INFO] configuring report plugin org.apache.maven.plugins:maven-site-plugin:3.4
[INFO] configuring report plugin org.apache.maven.plugins:maven-checkstyle-plugin:2.17
[INFO] configuring report plugin org.codehaus.mojo:findbugs-maven-plugin:3.0.5
[INFO] Fork Value is true
     [java] WARNING: An illegal reflective access operation has occurred
     [java] WARNING: Illegal reflective access by org.dom4j.io.SAXContentHandler (file:/var/lib/jenkins/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar) to method com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$LocatorProxy.getEncoding()
     [java] WARNING: Please consider reporting this to the maintainers of org.dom4j.io.SAXContentHandler
     [java] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
     [java] WARNING: All illegal access operations will be denied in a future release
     [java] The following classes needed for analysis were missing:
     [java]   java.lang.Object
     [java]   java.io.File
     [java]   java.lang.String
     [java]   java.nio.file.Files
     [java]   java.util.Arrays
     [java]   java.util.stream.Stream
     [java]   java.util.LinkedList
     [java]   java.lang.Double
     [java]   java.util.HashSet
     [java]   java.util.Set
     [java]   java.lang.NoSuchFieldError
     [java]   java.io.Serializable
     [java]   java.lang.NoClassDefFoundError
     [java]   java.nio.file.OpenOption
     [java]   java.lang.invoke.LambdaMetafactory
     [java]   java.lang.invoke.MethodHandles$Lookup
     [java]   java.lang.invoke.MethodHandles
     [java]   java.lang.UnsatisfiedLinkError
     [java]   java.lang.IllegalAccessError
     [java]   java.lang.NoSuchMethodError
     [java]   java.lang.NullPointerException
     [java]   java.lang.IncompatibleClassChangeError
     [java]   java.lang.AbstractMethodError
     [java]   java.lang.Error
     [java]   java.lang.Exception
     [java] Missing classes: 12
[INFO] Done FindBugs Analysis....
[WARNING] No project URL defined - decoration links will not be relativized!
[INFO] Rendering site with org.apache.maven.skins:maven-default-skin:jar:1.0 skin.
[INFO] Skipped "Checkstyle" report, file "checkstyle.html" already exists for the English version.
[INFO] Generating "Dependencies" report    --- maven-project-info-reports-plugin:2.9
[WARNING] The repository url 'http://localhost:8083/nexus/content/groups/public' is invalid - Repository 'public' will be blacklisted.
[INFO] Generating "Dependency Convergence" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Dependency Information" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "About" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugin Management" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugins" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Summary" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Checkstyle" report    --- maven-checkstyle-plugin:2.17
[WARNING] Unable to locate Source XRef to link to - DISABLED
[INFO] Generating "FindBugs" report    --- findbugs-maven-plugin:3.0.5
[JENKINS] Archiving site from /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/site to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist@tmp/maven-reporters/moduleset/site/persist
[INFO] 
[INFO] -----------------------< de.fhdw.ippps18:model >------------------------
[INFO] Building model 0.0.1-SNAPSHOT                                      [3/5]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ model ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:prepare-agent (jacoco-initialize) @ model ---
[INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/jacoco.exec
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ model ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ model ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 263 source files to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ model ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 9 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ model ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 31 source files to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.20.1:test (default-test) @ model ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running schnittstelle.ablaeufe.AblaeufeErstelleKommandoTests
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.148 s - in schnittstelle.ablaeufe.AblaeufeErstelleKommandoTests
[INFO] Running schnittstelle.SitzungTest
Security framework of XStream not initialized, XStream is probably vulnerable.
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.479 s - in schnittstelle.SitzungTest
[INFO] Running material.MaterialAllgemeinTest
[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.215 s - in material.MaterialAllgemeinTest
[INFO] Running ablaeufe.meta.PorttypProzessTypSymmetrieTest
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 s - in ablaeufe.meta.PorttypProzessTypSymmetrieTest
[INFO] Running ablaeufe.meta.AblaeufeMetaVisitorTest
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.03 s - in ablaeufe.meta.AblaeufeMetaVisitorTest
[INFO] Running ablaeufe.meta.ProzesstypAufbauTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.026 s - in ablaeufe.meta.ProzesstypAufbauTest
[INFO] Running ablaeufe.meta.AblaufeMetaAllgemeinTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.026 s - in ablaeufe.meta.AblaufeMetaAllgemeinTest
[INFO] Running ablaeufe.meta.ZusammengesetzterProzessTypTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.024 s - in ablaeufe.meta.ZusammengesetzterProzessTypTest
[INFO] Running ablaeufe.operation.AblaufeOperationAllgemeinTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 s - in ablaeufe.operation.AblaufeOperationAllgemeinTest
[INFO] Running ablaeufe.operation.ProzessAufbauTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 s - in ablaeufe.operation.ProzessAufbauTest
[INFO] Running auftraege.AuftraegeAllgemeinTest
eine unbekannte Variable wurde kreiert: [name1,name2]
eine unbekannte Variable wurde kreiert: [name1,name2]
[INFO] Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.054 s - in auftraege.AuftraegeAllgemeinTest
[INFO] Running util.ClassObjectMapTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 s - in util.ClassObjectMapTest
[INFO] Running util.FractionTest
[INFO] Tests run: 14, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 s - in util.FractionTest
[INFO] Running zeit.KalenderGenerellTest
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.017 s - in zeit.KalenderGenerellTest
[INFO] Running zeit.ZeitraumTest
[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.013 s - in zeit.ZeitraumTest
[INFO] Running zeit.SerienTerminTest
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.094 s - in zeit.SerienTerminTest
[INFO] Running zeit.MitarbeiterKalenderTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.048 s - in zeit.MitarbeiterKalenderTest
[INFO] Running zeit.MaschinenKalenderTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.021 s - in zeit.MaschinenKalenderTest
[INFO] Running zeit.KalenderEintragTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s - in zeit.KalenderEintragTest
[INFO] Running mensch.MenschAllgemeinTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 s - in mensch.MenschAllgemeinTest
[INFO] Running mensch.AddQualifikationToMitarbeiterTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.019 s - in mensch.AddQualifikationToMitarbeiterTest
[INFO] Running mensch.AddProduktionsrolleToMitarbeiterTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.02 s - in mensch.AddProduktionsrolleToMitarbeiterTest
[INFO] Running mensch.FaehigkeitenTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.007 s - in mensch.FaehigkeitenTest
[INFO] Running maschine.MaschineGetVerfuegbarkeitTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.032 s - in maschine.MaschineGetVerfuegbarkeitTest
[INFO] Running maschine.MaschineAllgemeinTest
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.041 s - in maschine.MaschineAllgemeinTest
[INFO] Running maschine.MaschineTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 s - in maschine.MaschineTest
[INFO] Running dokumentenklassen.VoraussichtlicheDokumentenklasseToDokumentenklasseTest
[INFO] Tests run: 28, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.128 s - in dokumentenklassen.VoraussichtlicheDokumentenklasseToDokumentenklasseTest
[INFO] Running dokumentenklassen.DokumentenklasseSLATest
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in dokumentenklassen.DokumentenklasseSLATest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 191, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[JENKINS] Recording test results
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:report (jacoco-site) @ model ---
[INFO] Loading execution data file /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/jacoco.exec
[INFO] Analyzed bundle 'model' with 251 classes
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ model ---
[INFO] Building jar: /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/model-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ model ---
[INFO] Installing /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/model-0.0.1-SNAPSHOT.jar to /var/lib/jenkins/.m2/repository/de/fhdw/ippps18/model/0.0.1-SNAPSHOT/model-0.0.1-SNAPSHOT.jar
[INFO] Installing /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/pom.xml to /var/lib/jenkins/.m2/repository/de/fhdw/ippps18/model/0.0.1-SNAPSHOT/model-0.0.1-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-site-plugin:3.3:site (default-site) @ model ---
[INFO] configuring report plugin org.apache.maven.plugins:maven-project-info-reports-plugin:2.9
[INFO] configuring report plugin org.apache.maven.plugins:maven-site-plugin:3.4
[INFO] configuring report plugin org.apache.maven.plugins:maven-checkstyle-plugin:2.17
[INFO] configuring report plugin org.codehaus.mojo:findbugs-maven-plugin:3.0.5
[INFO] Fork Value is true
     [java] WARNING: An illegal reflective access operation has occurred
     [java] WARNING: Illegal reflective access by org.dom4j.io.SAXContentHandler (file:/var/lib/jenkins/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar) to method com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$LocatorProxy.getEncoding()
     [java] WARNING: Please consider reporting this to the maintainers of org.dom4j.io.SAXContentHandler
     [java] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
     [java] WARNING: All illegal access operations will be denied in a future release
     [java] The following classes needed for analysis were missing:
     [java]   java.lang.Object
     [java]   java.lang.Exception
     [java]   java.lang.annotation.Annotation
     [java]   java.lang.Number
     [java]   java.lang.Comparable
     [java]   java.lang.Iterable
     [java]   java.util.Iterator
     [java]   java.lang.Enum
     [java]   java.lang.RuntimeException
     [java]   java.lang.String
     [java]   java.time.LocalTime
     [java]   java.time.LocalDateTime
     [java]   java.time.LocalDate
     [java]   java.util.Collection
     [java]   java.lang.IllegalArgumentException
     [java]   java.util.Collections
     [java]   java.util.HashSet
     [java]   java.util.stream.Stream
     [java]   java.util.Optional
     [java]   java.util.Set
     [java]   java.lang.StringBuilder
     [java]   java.util.LinkedList
     [java]   java.time.DayOfWeek
     [java]   java.lang.IllegalStateException
     [java]   java.util.Objects
     [java]   java.lang.NullPointerException
     [java]   java.time.Month
     [java]   java.lang.Integer
     [java]   java.time.Duration
     [java]   java.lang.Class
     [java]   java.time.temporal.ChronoUnit
     [java]   java.lang.Boolean
     [java]   java.util.stream.LongStream
     [java]   java.util.Map
     [java]   java.util.List
     [java]   java.util.EnumSet
     [java]   java.util.HashMap
     [java]   java.util.stream.Collectors
     [java]   java.time.format.DateTimeFormatter
     [java]   java.util.ArrayList
     [java]   java.util.Comparator
     [java]   java.util.regex.Pattern
     [java]   java.util.regex.Matcher
     [java]   java.io.PrintStream
     [java]   java.math.RoundingMode
     [java]   java.math.BigInteger
     [java]   java.lang.Error
     [java]   java.math.BigDecimal
     [java]   java.util.Arrays
     [java]   java.io.File
     [java]   java.lang.Double
     [java]   java.lang.UnsupportedOperationException
     [java]   java.lang.Long
     [java]   java.util.NoSuchElementException
     [java]   java.util.stream.IntStream
     [java]   java.lang.AssertionError
     [java]   java.util.Map$Entry
     [java]   java.util.LinkedHashMap
     [java]   java.lang.NoSuchFieldError
     [java]   java.lang.UnsatisfiedLinkError
     [java]   java.io.Serializable
     [java]   java.lang.AbstractMethodError
     [java]   java.lang.IllegalAccessError
     [java]   java.lang.IncompatibleClassChangeError
     [java]   java.lang.NoClassDefFoundError
     [java]   java.lang.invoke.LambdaMetafactory
     [java]   java.lang.invoke.MethodHandles$Lookup
     [java]   java.lang.invoke.MethodHandles
     [java]   java.lang.NoSuchMethodError
     [java]   java.time.temporal.TemporalAmount
     [java]   java.lang.ClassFormatError
     [java]   java.lang.VerifyError
     [java]   java.lang.ExceptionInInitializerError
     [java]   java.lang.NegativeArraySizeException
     [java]   java.lang.ArrayIndexOutOfBoundsException
     [java]   java.lang.NoSuchMethodException
     [java]   java.lang.Void
     [java] Missing classes: 61
[INFO] Done FindBugs Analysis....
[WARNING] No project URL defined - decoration links will not be relativized!
[INFO] Rendering site with org.apache.maven.skins:maven-default-skin:jar:1.0 skin.
[INFO] Skipped "Checkstyle" report, file "checkstyle.html" already exists for the English version.
[INFO] Generating "Dependencies" report    --- maven-project-info-reports-plugin:2.9
[WARNING] The repository url 'http://localhost:8083/nexus/content/groups/public' is invalid - Repository 'public' will be blacklisted.
[INFO] Generating "Dependency Convergence" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Dependency Information" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "About" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugin Management" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugins" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Summary" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Checkstyle" report    --- maven-checkstyle-plugin:2.17
[WARNING] Unable to locate Source XRef to link to - DISABLED
[INFO] Generating "FindBugs" report    --- findbugs-maven-plugin:3.0.5
[JENKINS] Archiving site from /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/site to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model@tmp/maven-reporters/moduleset/site/model
[INFO] 
[INFO] ------------------------< de.fhdw.ippps18:view >------------------------
[INFO] Building view 0.0.1-SNAPSHOT                                       [4/5]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ view ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:prepare-agent (jacoco-initialize) @ view ---
[INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view/target/jacoco.exec
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ view ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ view ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ view ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ view ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.20.1:test (default-test) @ view ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:report (jacoco-site) @ view ---
[JENKINS] Recording test results
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ view ---
[INFO] Building jar: /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view/target/view-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ view ---
[INFO] Installing /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view/target/view-0.0.1-SNAPSHOT.jar to /var/lib/jenkins/.m2/repository/de/fhdw/ippps18/view/0.0.1-SNAPSHOT/view-0.0.1-SNAPSHOT.jar
[INFO] Installing /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view/pom.xml to /var/lib/jenkins/.m2/repository/de/fhdw/ippps18/view/0.0.1-SNAPSHOT/view-0.0.1-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-site-plugin:3.3:site (default-site) @ view ---
[INFO] configuring report plugin org.apache.maven.plugins:maven-project-info-reports-plugin:2.9
[INFO] configuring report plugin org.apache.maven.plugins:maven-site-plugin:3.4
[INFO] configuring report plugin org.apache.maven.plugins:maven-checkstyle-plugin:2.17
[INFO] configuring report plugin org.codehaus.mojo:findbugs-maven-plugin:3.0.5
[WARNING] No project URL defined - decoration links will not be relativized!
[INFO] Rendering site with org.apache.maven.skins:maven-default-skin:jar:1.0 skin.
[INFO] Skipped "Checkstyle" report, file "checkstyle.html" already exists for the English version.
[INFO] Generating "Dependencies" report    --- maven-project-info-reports-plugin:2.9
[WARNING] The repository url 'http://localhost:8083/nexus/content/groups/public' is invalid - Repository 'public' will be blacklisted.
[INFO] Generating "Dependency Convergence" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Dependency Information" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "About" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugin Management" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugins" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Summary" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Checkstyle" report    --- maven-checkstyle-plugin:2.17
[JENKINS] Archiving site from /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view/target/site to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view@tmp/maven-reporters/moduleset/site/view
[INFO] 
[INFO] ----------------------< de.fhdw.ippps18:service >-----------------------
[INFO] Building service 0.0.1-SNAPSHOT                                    [5/5]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ service ---
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:prepare-agent (jacoco-initialize) @ service ---
[INFO] argLine set to -javaagent:/var/lib/jenkins/.m2/repository/org/jacoco/org.jacoco.agent/0.7.9/org.jacoco.agent-0.7.9-runtime.jar=destfile=/var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/jacoco.exec
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ service ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 61 source files to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 8 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ service ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 55 source files to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.20.1:test (default-test) @ service ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running simulation.SimulationsTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.193 s - in simulation.SimulationsTest
[INFO] Running wochenplanung.SchichtTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.136 s - in wochenplanung.SchichtTest
[INFO] Running wochenplanung.PlanungsStrategieTest
Security framework of XStream not initialized, XStream is probably vulnerable.
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.574 s - in wochenplanung.PlanungsStrategieTest
[INFO] Running features.RunCucumberTests
Feature: Beilagenoptimierung

  Background:                                                                        # features/Beilagenoptimierung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                              # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                           # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:         # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)

  Scenario: Beispiel 1.1 des Aufgabenzettels Sortierung                                                                                          # features/Beilagenoptimierung.feature:42
    Given folgende Lst von Produktionsaufträgen:                                                                                                 # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    When die Produktionsaufträge sortiert werden mit dem Parameter "SortAnzahlGeringsterUmruestungenFuerBeilagen_Aufsteigend" und den Maschinen: # BeilagenOptimierungStepDefs.dieProduktionsauftraegeSortiertWerdenMitDemParameter(String,MaschineDAO>)
[A, B, C]
[B, C]
[A, B]
[C]
[B]
[C, D]
[D]
    Then erwarte ich folgende Reihenfolge für die Produktionsaufträge:                                                                           # BeilagenOptimierungStepDefs.erwarteIchFolgendeReihenfolgeFuerDieProduktionsauftraege(ProduktionsauftragTestDAO>)

  Background:                                                                        # features/Beilagenoptimierung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                              # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                           # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:         # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)

  Scenario: Beispiel 1.1 des Aufgabenzettels Sortierung mit dazugehörigem Rollenbelegunsauftruf                # features/Beilagenoptimierung.feature:68
    Given folgende Lst von Produktionsaufträgen:                                                               # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                          # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                  # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                              # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                             # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                            # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                             # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                        # features/Beilagenoptimierung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                              # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                           # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:         # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)

  Scenario: Beispiel 1.2 altes Verhalten ohne Sortierung                                                       # features/Beilagenoptimierung.feature:108
    Given folgende Lst von Produktionsaufträgen:                                                               # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                          # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                              # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                             # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                            # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                             # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                        # features/Beilagenoptimierung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                              # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                           # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:         # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)

  Scenario: Beispiel 1.2 altes Verhalten mit Sortierung nach optimaler BeilagenRüstung                         # features/Beilagenoptimierung.feature:153
    Given folgende Lst von Produktionsaufträgen:                                                               # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                          # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                  # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                              # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                             # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                            # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                             # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                        # features/Beilagenoptimierung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                              # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                           # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:         # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)

  Scenario: Beispiel 1.2 neues Verhalten mit Sortierung nach optimaler BeilagenRüstung                  # features/Beilagenoptimierung.feature:198
    Given folgende Lst von Produktionsaufträgen:                                                        # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                  # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                  # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                           # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "GERINGSTE_UMRUESTUNGEN" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                       # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                      # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                     # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                      # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                        # features/Beilagenoptimierung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                              # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                           # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:         # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)

  Scenario: Beispiel 1 von Natalie altes Verhalten ohne Sortierung                                             # features/Beilagenoptimierung.feature:245
    Given folgende Lst von Produktionsaufträgen:                                                               # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                          # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 3 besitzt die Fähigkeit Maschine 3 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                              # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                             # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                             # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                        # features/Beilagenoptimierung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                              # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                           # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:         # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)

  Scenario: Beispiel 1 von Natalie altes Verhalten mit Sortierung                                              # features/Beilagenoptimierung.feature:280
    Given folgende Lst von Produktionsaufträgen:                                                               # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                          # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 3 besitzt die Fähigkeit Maschine 3 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                  # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                              # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                             # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                             # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                        # features/Beilagenoptimierung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                              # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                           # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:         # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)

  Scenario: Beispiel 1 von Natalie neues Verhalten mit Sortierung                                       # features/Beilagenoptimierung.feature:318
    Given folgende Lst von Produktionsaufträgen:                                                        # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                  # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                  # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 3 besitzt die Fähigkeit Maschine 3 zu bedienen                                  # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                           # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "GERINGSTE_UMRUESTUNGEN" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                       # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                      # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                      # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

Feature: Kundenaufträge sollen zu Produktionsaufträgen gebündelt werden

  Scenario: FarbDruckTyp sowie SimplexDuplex können vermischt werden # features/Produktionsauftrag.feature:3
    Given folgende Kundenaufträge:                                   # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende StrategieParameter:                                 # ProduktionsauftragStepDefs.folgendeStrategieParameter(DataTable)
    When die Produktionsaufträge erstellt werden                     # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                    # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)

  Scenario: FarbDruckTypen können vermischt werden # features/Produktionsauftrag.feature:19
    Given folgende Kundenaufträge:                 # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende StrategieParameter:               # ProduktionsauftragStepDefs.folgendeStrategieParameter(DataTable)
    When die Produktionsaufträge erstellt werden   # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:  # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)

  Scenario: SimplexDuplex können vermischt werden # features/Produktionsauftrag.feature:35
    Given folgende Kundenaufträge:                # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende StrategieParameter:              # ProduktionsauftragStepDefs.folgendeStrategieParameter(DataTable)
    When die Produktionsaufträge erstellt werden  # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge: # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)

  Scenario: FarbDruckTyp sowie SimplexDuplex dürfen nicht vermischt werden! # features/Produktionsauftrag.feature:51
    Given folgende Kundenaufträge:                                          # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                            # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                           # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)

  Scenario: Negativtestfall : Durch die Parametrisierung und den Kundenaufträgen wird kein Produktionsauftrag gebildet. # features/Produktionsauftrag.feature:68
    Given folgende Kundenaufträge:                                                                                      # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:                                                              # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                                                                        # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then werden keine Produktionsaufträge gebildet.                                                                     # ProduktionsauftragStepDefs.werdenKeineProduktionsauftraegeGebildet()
    And bleiben folgende Dokumentenklassen übrig:                                                                       # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Erstellt einen Produktionsauftrag mit 1000 Seiten, dem SLA Heute +1 Tag und dem Prozesstyp P_80G_C3_SIMPLEX_FARBE # features/Produktionsauftrag.feature:90
    Given folgende Kundenaufträge:                                                                                            # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:                                                                    # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                                                                              # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                                                             # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                                                                # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Eine Dokumentenklasse hat einige Variablen nicht belegt. # features/Produktionsauftrag.feature:103
    Given folgende Kundenaufträge:                                   # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:           # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                     # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                    # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:                    # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Erstellt einen Produktionsauftrag aus zwei passenden Kundenaufträgen. # features/Produktionsauftrag.feature:121
    Given folgende Kundenaufträge:                                                # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:                        # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                                  # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                 # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                    # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Erstellt zwei Produktionsauftraege aus zwei unpassenden Kundenaufträgen. # features/Produktionsauftrag.feature:135
    Given folgende Kundenaufträge:                                                   # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:                           # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                                     # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                    # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                       # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Es wird eine Liste mit Dokumentenklassen erstellt. Es dienen 4 Kundenaufträge als Datengrundlage, # features/Produktionsauftrag.feature:150
  welche in 3 unterschiedliche Produktionsaufträge umgewandelt werden sollen
    Given folgende Kundenaufträge:                                                                            # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:                                                    # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                                                              # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                                             # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                                                # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Es wird eine Liste mit Dokumentenklassen erstellt. Es dienen 4 Kundenaufträge als Datengrundlage, # features/Produktionsauftrag.feature:171
  welche in 3 unterschiedliche Produktionsaufträge umgewandelt werden sollen
    Given folgende Kundenaufträge:                                                                            # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:                                                    # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                                                              # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                                             # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                                                # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Ein Produktionauftrag, da zwar kein SLA kritisch, aber eine Rolle voll # features/Produktionsauftrag.feature:191
  Übrige Seiten werden noch nicht zugeordnet
    Given folgende Kundenaufträge:                                                 # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:                         # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                                   # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                  # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                     # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Zwei Produktionaufträge, da SLA kritisch, aber zweite Rolle nicht voll # features/Produktionsauftrag.feature:206
    Given folgende Kundenaufträge:                                                 # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:                         # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                                   # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                  # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                     # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Ein Produktionauftrag, da zwar SLA kritisch und Rolle voll # features/Produktionsauftrag.feature:220
    Given folgende Kundenaufträge:                                     # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Parametrisierung für Produktionsaufträge:             # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    When die Produktionsaufträge erstellt werden                       # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                      # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)

  Scenario: später kann das hier wieder gelöscht werden. Hier bastel ich nur für die Parametrisierung der Produktionsaufträge! # features/Produktionsauftrag.feature:232
    Given folgende Parametrisierung für Produktionsaufträge:                                                                   # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)

  Scenario: MaxBeilagenarten und Rollenkapazität als Parameter limitieren die Bildung von Produktionsaufträgen. # features/Produktionsauftrag.feature:255
    Given folgende Parametrisierung für Produktionsaufträge:                                                    # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                                                                                # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                                                # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                                               # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                                                  # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: MaxBeilagenarten als Parameter limitiert die Bildung von Produktionsaufträgen, aber ein KuvertFormat macht das ganze unspannend. # features/Produktionsauftrag.feature:273
    Given folgende Parametrisierung für Produktionsaufträge:                                                                                 # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                                                                             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                                                                            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                                                                               # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: MaxBeilagenarten als Parameter limitiert die Bildung von Produktionsaufträgen. # features/Produktionsauftrag.feature:290
    Given folgende Parametrisierung für Produktionsaufträge:                               # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                                                           # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                           # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                          # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                             # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Kuvertformat Einzel                              # features/Produktionsauftrag.feature:306
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Kuvertformat Mehrfach                            # features/Produktionsauftrag.feature:324
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: eine unbekannte Variable !!! :o                  # features/Produktionsauftrag.feature:344
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
eine unbekannte Variable wurde kreiert: [asdf,ja]
eine unbekannte Variable wurde kreiert: [asdf,nein]
eine unbekannte Variable wurde kreiert: [asdf,ja]
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.               # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: zwei unbekannte Variablen !!! O.o                # features/Produktionsauftrag.feature:362
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
eine unbekannte Variable wurde kreiert: [asdf,ja]
eine unbekannte Variable wurde kreiert: [lululu,nein]
eine unbekannte Variable wurde kreiert: [lululu,ja]
eine unbekannte Variable wurde kreiert: [lululu,ja]
eine unbekannte Variable wurde kreiert: [asdf,nein]
eine unbekannte Variable wurde kreiert: [lululu,pling]
eine unbekannte Variable wurde kreiert: [asdf,ja]
eine unbekannte Variable wurde kreiert: [lululu,nein]
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.               # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: zwei unbekannte Variablen, aber mit minimal mehr variation (: # features/Produktionsauftrag.feature:380
    Given folgende Parametrisierung für Produktionsaufträge:              # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
eine unbekannte Variable wurde kreiert: [asdf,ja]
eine unbekannte Variable wurde kreiert: [lululu,ja]
eine unbekannte Variable wurde kreiert: [lululu,ja]
eine unbekannte Variable wurde kreiert: [lululu,ja]
eine unbekannte Variable wurde kreiert: [lululu,nein]
eine unbekannte Variable wurde kreiert: [asdf,ja]
eine unbekannte Variable wurde kreiert: [lululu,nein]
    And folgende Kundenaufträge:                                          # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                          # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                         # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                            # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Blattanzahl Min, bei dem keine Produktionsaufträge gebildet werden. # features/Produktionsauftrag.feature:402
    Given folgende Parametrisierung für Produktionsaufträge:                    # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                                                # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then werden keine Produktionsaufträge gebildet.                             # ProduktionsauftragStepDefs.werdenKeineProduktionsauftraegeGebildet()
    And bleiben folgende Dokumentenklassen übrig:                               # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Blattanzahl Min, bei dem Produktionsaufträge gebildet werden. # features/Produktionsauftrag.feature:419
    Given folgende Parametrisierung für Produktionsaufträge:              # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                                          # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                          # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                         # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:                         # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Blattanzahl Max.                                 # features/Produktionsauftrag.feature:437
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.               # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Blattanzahl Max.                                 # features/Produktionsauftrag.feature:454
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Blattanzahl Max. allerdings Farbe mischbar       # features/Produktionsauftrag.feature:472
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende StrategieParameter:                         # ProduktionsauftragStepDefs.folgendeStrategieParameter(DataTable)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Blattanzahl Max. allerdings SimplexDuplex mischbar # features/Produktionsauftrag.feature:492
    Given folgende Parametrisierung für Produktionsaufträge:   # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende StrategieParameter:                           # ProduktionsauftragStepDefs.folgendeStrategieParameter(DataTable)
    And folgende Kundenaufträge:                               # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden               # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:              # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:              # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Blattanzahl Max. allerdings mit Strategieparametern, dass fröhlich gemsicht werden kann # features/Produktionsauftrag.feature:513
    Given folgende Parametrisierung für Produktionsaufträge:                                        # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende StrategieParameter:                                                                # ProduktionsauftragStepDefs.folgendeStrategieParameter(DataTable)
    And folgende Kundenaufträge:                                                                    # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                                    # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                                   # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:                                                   # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Blattanzahl Min. + Max.                          # features/Produktionsauftrag.feature:534
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Blattformat Einzel                               # features/Produktionsauftrag.feature:553
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Blattformat Mehrfach                             # features/Produktionsauftrag.feature:571
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Drucktyp Simplex                                 # features/Produktionsauftrag.feature:591
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Drucktyp Duplex                                  # features/Produktionsauftrag.feature:611
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Farbtyp SchwarzWeiß                              # features/Produktionsauftrag.feature:632
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Farbtyp Farbdruck                                # features/Produktionsauftrag.feature:652
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: SLA ab                                                                         # features/Produktionsauftrag.feature:672
    Given folgende Parametrisierung für Produktionsaufträge:                               # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 20.06.2018 um 12:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende Kundenaufträge:                                                           # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                           # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                          # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:                                          # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: SLA bis                                                                        # features/Produktionsauftrag.feature:693
    Given folgende Parametrisierung für Produktionsaufträge:                               # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 28.06.2018 um 12:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende StrategieParameter:                                                       # ProduktionsauftragStepDefs.folgendeStrategieParameter(DataTable)
    And folgende Kundenaufträge:                                                           # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                           # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                          # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:                                          # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: SLA Zeitraum                                                                   # features/Produktionsauftrag.feature:717
    Given folgende Parametrisierung für Produktionsaufträge:                               # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 01.03.2018 um 12:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende Kundenaufträge:                                                           # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                           # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                          # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:                                          # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: SLA Vergangenheit                                                              # features/Produktionsauftrag.feature:741
    Given folgende Parametrisierung für Produktionsaufträge:                               # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 01.01.2018 um 12:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende Kundenaufträge:                                                           # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                           # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then werden keine Produktionsaufträge gebildet.                                        # ProduktionsauftragStepDefs.werdenKeineProduktionsauftraegeGebildet()
    And bleiben folgende Dokumentenklassen übrig:                                          # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Kunde Einzel                                     # features/Produktionsauftrag.feature:755
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Kunde Mehrfach                                   # features/Produktionsauftrag.feature:778
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Kunde Einzel Ausschluss                          # features/Produktionsauftrag.feature:799
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Kunde Mehrfach Ausschluss                        # features/Produktionsauftrag.feature:820
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Beilagenart Einzel                               # features/Produktionsauftrag.feature:842
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Beilagenart Mehrfach                             # features/Produktionsauftrag.feature:862
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Beilagenart Einzel Ausschluss                    # features/Produktionsauftrag.feature:886
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Beilagenart Mehrfach Ausschluss                  # features/Produktionsauftrag.feature:905
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Max Beilagenarten                                # features/Produktionsauftrag.feature:927
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.               # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Max Beilagenarten, allerdings zu viele Beilagen in allen Kundenaufträgen. Daher keine Produktionsaufträge. # features/Produktionsauftrag.feature:948
    Given folgende Parametrisierung für Produktionsaufträge:                                                           # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                                                                                       # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                                                       # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then werden keine Produktionsaufträge gebildet.                                                                    # ProduktionsauftragStepDefs.werdenKeineProduktionsauftraegeGebildet()
    And bleiben folgende Dokumentenklassen übrig:                                                                      # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Max Beilagenarten, allerdings zu inkompatible Beilagen in fast allen Kundenaufträgen. Daher wenige Zusammenfassungen. # features/Produktionsauftrag.feature:961
    Given folgende Parametrisierung für Produktionsaufträge:                                                                      # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                                                                                                  # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden                                                                                  # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:                                                                                 # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                                                                    # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Kuverttyp Einzel                                 # features/Produktionsauftrag.feature:979
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Kuverttyp Mehrfach                               # features/Produktionsauftrag.feature:1002
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Kuverttyp Einzel Ausschluss                      # features/Produktionsauftrag.feature:1024
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: Kuverttyp Mehrfach Ausschluss                    # features/Produktionsauftrag.feature:1047
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And bleiben folgende Dokumentenklassen übrig:            # ProduktionsauftragStepDefs.bleibenFolgendeDokumentenklassenUebrig(KundenauftragTestDAO>)

  Scenario: max. Kundenaufträge                              # features/Produktionsauftrag.feature:1069
    Given folgende Parametrisierung für Produktionsaufträge: # ProduktionsauftragStepDefs.folgendeParametrisierungFuerProduktionsauftraege(ProduktionsauftragsParameterTestDAO>)
    And folgende Kundenaufträge:                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden             # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge:            # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.               # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

  Scenario: Beilagenart Einzel                    # features/Produktionsauftrag.feature:1087
    Given folgende StrategieParameter:            # ProduktionsauftragStepDefs.folgendeStrategieParameter(DataTable)
    And folgende Kundenaufträge:                  # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Produktionsaufträge erstellt werden  # ProduktionsauftragStepDefs.dieProduktionsauftraegeErstelltWerden()
    Then existieren folgende Produktionsaufträge: # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.    # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()

Feature: Prüfung von Produktionsplänen

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: die Prüfung hat keine Fehler gefunden           # features/Pruefer.feature:39
    When die Zuordnung der Produktionsplanung geprüft wurde # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Prüfung hatte 0 Fehler                         # SimulationStepDefs.diePruefungHatteFehler(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Prüfung ob ein Mitarbeiter die Fähigkeit hat, welche für die Aufgabe bei seiner Belegung benötigt wird, soll fehlschlagen. # features/Pruefer.feature:45
    Given eine Maschine zum Drucken mit der Nummer 3 und den Kalendereintraegen:                                                       # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                                                     # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                                                              # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()
    When die Zuordnung der Produktionsplanung geprüft wurde                                                                            # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Prüfung hatte 1 Fehler                                                                                                    # SimulationStepDefs.diePruefungHatteFehler(int)
    And dem Mitarbeiter 2 fehlt die Fähigkeit die Maschine 3 zu bedienen                                                               # SimulationStepDefs.demMitarbeiterFehltDieFaehigkeitDieMaschineZuBedienen(int,int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: zu einer Mitarbeiterbelegung gibt es keine passende Maschinenbelegung # features/Pruefer.feature:60
    Given der Mitarbeiter 2 hat folgende Belegungen:                              # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde                       # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Prüfung hatte 1 Fehler                                               # SimulationStepDefs.diePruefungHatteFehler(int)
    And es gab 1 Mitarbeiterbelegung ohne passende Maschinenbelegung              # SimulationStepDefs.esGabMitarbeiterbelegungOhnePassendeMaschinenbelegung(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: zu mehreren Mitarbeiterbelegungen gibt es keine passende Maschinenbelegung                  # features/Pruefer.feature:70
    Given eine Maschine zum Drucken mit der Nummer 3 und den Kalendereintraegen:                        # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And ein Mitarbeiter mit dem Namen Meister Propper, der Personalnummer 3 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 3 hat folgende Belegungen:                                                      # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 3 hat die Fähigkeit Maschine 3 zu bedienen                                      # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    When die Zuordnung der Produktionsplanung geprüft wurde                                             # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Prüfung hatte 3 Fehler                                                                     # SimulationStepDefs.diePruefungHatteFehler(int)
    And es gab 3 Mitarbeiterbelegung ohne passende Maschinenbelegung                                    # SimulationStepDefs.esGabMitarbeiterbelegungOhnePassendeMaschinenbelegung(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: zu einer Maschinenbelegungen gibt es keine passende Mitarbeiterbelegung # features/Pruefer.feature:89
    Given die Maschine 2 hat folgende Belegungen:                                   # SimulationStepDefs.dieMaschineHatFolgendeBelegungen(int,MaschinenBelegungTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde                         # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Prüfung hatte 1 Fehler                                                 # SimulationStepDefs.diePruefungHatteFehler(int)
    And es gab 1 Maschinenbelegung ohne passende Mitarbeiterbelegung                # SimulationStepDefs.esGabMaschinenbelegungOhnePassendeMitarbeiterbelegung(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: zu mehrerer Maschinenbelegungen gibt es keine passende Mitarbeiterbelegung # features/Pruefer.feature:99
    Given eine Maschine zum Drucken mit der Nummer 3 und den Kalendereintraegen:       # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And die Maschine 3 hat folgende Belegungen:                                        # SimulationStepDefs.dieMaschineHatFolgendeBelegungen(int,MaschinenBelegungTestDAO>)
    And die Maschine 2 hat folgende Belegungen:                                        # SimulationStepDefs.dieMaschineHatFolgendeBelegungen(int,MaschinenBelegungTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde                            # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Prüfung hatte 4 Fehler                                                    # SimulationStepDefs.diePruefungHatteFehler(int)
    And es gab 4 Maschinenbelegung ohne passende Mitarbeiterbelegung                   # SimulationStepDefs.esGabMaschinenbelegungOhnePassendeMitarbeiterbelegung(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Maschine 2 soll überbucht sein und durch die Prüfung erkannt werden # features/Pruefer.feature:116
    Given der Mitarbeiter 1 hat folgende Belegungen:                            # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen       # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()
    When die Zuordnung der Produktionsplanung geprüft wurde                     # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Maschine 2 ist überbucht                                           # SimulationStepDefs.dieMaschineIstUeberbucht(int)
    And die Prüfung hatte 1 Fehler                                              # SimulationStepDefs.diePruefungHatteFehler(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Mitarbeiter 1 soll überbucht sein und durch die Prüfung erkannt werden # features/Pruefer.feature:127
    Given der Mitarbeiter 1 hat folgende Belegungen:                               # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen          # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()
    When die Zuordnung der Produktionsplanung geprüft wurde                        # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then der Mitarbeiter 1 ist überbucht                                           # SimulationStepDefs.derMitarbeiterIstUeberbucht(int)
    And die Prüfung hatte 1 Fehler                                                 # SimulationStepDefs.diePruefungHatteFehler(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Mitarbeiter 1 und Maschine 1 sollen überbucht sein und durch die Prüfung erkannt werden # features/Pruefer.feature:138
    Given der Mitarbeiter 1 hat folgende Belegungen:                                                # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                           # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()
    When die Zuordnung der Produktionsplanung geprüft wurde                                         # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then der Mitarbeiter 1 ist überbucht                                                            # SimulationStepDefs.derMitarbeiterIstUeberbucht(int)
    And die Maschine 1 ist überbucht                                                                # SimulationStepDefs.dieMaschineIstUeberbucht(int)
    And die Prüfung hatte 2 Fehler                                                                  # SimulationStepDefs.diePruefungHatteFehler(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Mitarbeiter ist eingeteilt, aber aufgrund von Krankheit gar nicht verfügbar                   # features/Pruefer.feature:150
    Given ein Mitarbeiter mit dem Namen Meister Propper, der Personalnummer 3 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 3 hat folgende Belegungen:                                                        # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 3 hat die Fähigkeit Maschine 1 zu bedienen                                        # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                                 # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()
    When die Zuordnung der Produktionsplanung geprüft wurde                                               # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then der Mitarbeiter 3 ist überbucht                                                                  # SimulationStepDefs.derMitarbeiterIstUeberbucht(int)
    And die Prüfung hatte 1 Fehler                                                                        # SimulationStepDefs.diePruefungHatteFehler(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Mitarbeiter ist eingeteilt, hat aber keine Anwesenheit eingetragen im Kalender                # features/Pruefer.feature:165
    Given ein Mitarbeiter mit dem Namen Meister Propper, der Personalnummer 3 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 3 hat folgende Belegungen:                                                        # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 3 hat die Fähigkeit Maschine 1 zu bedienen                                        # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                                 # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()
    When die Zuordnung der Produktionsplanung geprüft wurde                                               # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then der Mitarbeiter 3 ist überbucht                                                                  # SimulationStepDefs.derMitarbeiterIstUeberbucht(int)
    And die Prüfung hatte 1 Fehler                                                                        # SimulationStepDefs.diePruefungHatteFehler(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Prüfung des Prozessmodells soll nicht erfolgreich sein. # features/Pruefer.feature:179
    Given Produktionsauftrag 1 hat folgendes Prozessmodell:         # SimulationStepDefs.produktionsauftragsHatFolgendesProzessmodell(int,FaehigkeitUndSchrittTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde         # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Prüfung hatte 1 Fehler                                 # SimulationStepDefs.diePruefungHatteFehler(int)
    And der Produktionsauftrag 1 hat fehlende Belegungen            # SimulationStepDefs.derProduktionsauftragHatFehlendeBelegungen(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Prüfung des Prozessmodells soll erfolgreich sein, bei einem Prozessmodell mit nur einer Fähigkeit. # features/Pruefer.feature:191
    Given Produktionsauftrag 1 hat folgendes Prozessmodell:                                                    # SimulationStepDefs.produktionsauftragsHatFolgendesProzessmodell(int,FaehigkeitUndSchrittTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde                                                    # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Prüfung hatte 0 Fehler                                                                            # SimulationStepDefs.diePruefungHatteFehler(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Prüfung des Prozessmodells soll erfolgreich sein, bei einem Prozessmodell mit mehreren Fähigkeiten. # features/Pruefer.feature:200
    Given Produktionsauftrag 7 hat folgendes Prozessmodell:                                                     # SimulationStepDefs.produktionsauftragsHatFolgendesProzessmodell(int,FaehigkeitUndSchrittTestDAO>)
    And ein Mitarbeiter mit dem Namen Meister Propper, der Personalnummer 3 und den Kalendereintraegen:         # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 3 hat folgende Belegungen:                                                              # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                                       # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()
    And der Mitarbeiter 3 hat die Fähigkeit Maschine 1 zu bedienen                                              # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 3 hat die Fähigkeit Maschine 2 zu bedienen                                              # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    When die Zuordnung der Produktionsplanung geprüft wurde                                                     # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then die Prüfung hatte 0 Fehler                                                                             # SimulationStepDefs.diePruefungHatteFehler(int)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Verbrauchtes Material wird korrekt berechnet, wenn ein Material gar nicht vorhanden ist # features/Pruefer.feature:220
    Given das folgende Material:                                                                    # SimulationStepDefs.dasFolgendeMaterial(MaterialTestDAO>)
    And der Produktionsauftrag 1 verbraucht die folgenden Materialien:                              # SimulationStepDefs.derProduktionsauftragVerbrauchtDieFolgendenMaterialien(int,MaterialTestDAO>)
    And der Produktionsauftrag 2 verbraucht die folgenden Materialien:                              # SimulationStepDefs.derProduktionsauftragVerbrauchtDieFolgendenMaterialien(int,MaterialTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde                                         # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then es werden folgende Materialien verbraucht:                                                 # SimulationStepDefs.esWerdenFolgendeMaterialienVerbraucht(MaterialTestDAO>)
    Then es fehlen folgende Materialien:                                                            # SimulationStepDefs.esFehlenFolgendeMaterialien(MaterialTestDAO>)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Fehlendes Material wird korrekt berechnet, wenn das vorhandene Material nicht ausreicht # features/Pruefer.feature:251
    Given das folgende Material:                                                                    # SimulationStepDefs.dasFolgendeMaterial(MaterialTestDAO>)
    And der Produktionsauftrag 1 verbraucht die folgenden Materialien:                              # SimulationStepDefs.derProduktionsauftragVerbrauchtDieFolgendenMaterialien(int,MaterialTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde                                         # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then es fehlen folgende Materialien:                                                            # SimulationStepDefs.esFehlenFolgendeMaterialien(MaterialTestDAO>)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Es ist genügend Material vorhanden.                        # features/Pruefer.feature:272
    Given das folgende Material:                                       # SimulationStepDefs.dasFolgendeMaterial(MaterialTestDAO>)
    And der Produktionsauftrag 1 verbraucht die folgenden Materialien: # SimulationStepDefs.derProduktionsauftragVerbrauchtDieFolgendenMaterialien(int,MaterialTestDAO>)
    And der Produktionsauftrag 2 verbraucht die folgenden Materialien: # SimulationStepDefs.derProduktionsauftragVerbrauchtDieFolgendenMaterialien(int,MaterialTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde            # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then es werden folgende Materialien verbraucht:                    # SimulationStepDefs.esWerdenFolgendeMaterialienVerbraucht(MaterialTestDAO>)
    Then es sind ausreichend Materialien vorhanden                     # SimulationStepDefs.esSindAusreichendMaterialienVorhanden()

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Materialverbrauch pro Materialtyp wird korrekt berechnet.  # features/Pruefer.feature:299
    Given das folgende Material:                                       # SimulationStepDefs.dasFolgendeMaterial(MaterialTestDAO>)
    And der Produktionsauftrag 1 verbraucht die folgenden Materialien: # SimulationStepDefs.derProduktionsauftragVerbrauchtDieFolgendenMaterialien(int,MaterialTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde            # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then es sind ausreichend Materialien vorhanden                     # SimulationStepDefs.esSindAusreichendMaterialienVorhanden()
    And es werden folgende Materialien verbraucht:                     # SimulationStepDefs.esWerdenFolgendeMaterialienVerbraucht(MaterialTestDAO>)
    And es werden folgende Materialien pro Kategorie verbraucht:       # SimulationStepDefs.esWerdenFolgendeMaterialienProTypVerbraucht(MaterialVerbrauchTestDAO>)

  Background:                                                                                         # features/Pruefer.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6, 7                                     # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Materialverbrauch und Verbrauch pro Materialtyp bei leerer Eingabe berechnen. # features/Pruefer.feature:322
    Given das folgende Material:                                                          # SimulationStepDefs.dasFolgendeMaterial(MaterialTestDAO>)
    And der Produktionsauftrag 1 verbraucht die folgenden Materialien:                    # SimulationStepDefs.derProduktionsauftragVerbrauchtDieFolgendenMaterialien(int,MaterialTestDAO>)
    When die Zuordnung der Produktionsplanung geprüft wurde                               # SimulationStepDefs.dieZuordnungDerProduktionsplanungGeprueftWurde()
    Then es sind ausreichend Materialien vorhanden                                        # SimulationStepDefs.esSindAusreichendMaterialienVorhanden()
    And es werden folgende Materialien verbraucht:                                        # SimulationStepDefs.esWerdenFolgendeMaterialienVerbraucht(MaterialTestDAO>)
    And es werden folgende Materialien pro Kategorie verbraucht:                          # SimulationStepDefs.esWerdenFolgendeMaterialienProTypVerbraucht(MaterialVerbrauchTestDAO>)

Feature: Rollenbelegung

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag mit dem Prozessmodell "Drucken" wird einer qualifizierten und verfügbaren Maschine # features/Rollenbelegung.feature:49
  und einem qualifizierten und verfügbaren Mitarbeiter mittels des MaschinenRollenBelegungService zugeordnet.
  Die Dauer der Belegungseinträge ergibt sich aus:
  (Anzahl Blatt Produktionsauftrag / Verarbeitungsgeschwindigkeit der Maschine) + Rüstzeit + (Beilagenrüstzeit * Anzahl Beilagen)
    Given folgende Lst von Produktionsaufträgen:                                                                      # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                     # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                    # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                   # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                    # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag mit dem Prozessmodell "Drucken" kann nicht zugeordnet werden, da es keine Maschine gibt, die Drucken kann. # features/Rollenbelegung.feature:71
    Given folgende Lst von Produktionsaufträgen:                                                                                              # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                             # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then folgende Produktionsaufträge bleiben übrig:                                                                                          # RollenbelegungStepDefs.folgendeProduktionsauftraegeBleibenUebrig(ProduktionsauftragTestDAO>)

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag mit dem Prozessmodell "Drucken" kann nicht zugeordnet werden, da es keine Maschine gibt, die Farbdruck beherrscht. # features/Rollenbelegung.feature:81
    Given folgende Lst von Produktionsaufträgen:                                                                                                      # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                                                # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                                     # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then folgende Produktionsaufträge bleiben übrig:                                                                                                  # RollenbelegungStepDefs.folgendeProduktionsauftraegeBleibenUebrig(ProduktionsauftragTestDAO>)

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag mit dem Prozessmodell "Drucken" kann nicht zugeordnet werden, da es keine Maschine gibt, die duplex beherrscht. # features/Rollenbelegung.feature:95
    Given folgende Lst von Produktionsaufträgen:                                                                                                   # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                                              # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                                             # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                                  # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then folgende Produktionsaufträge bleiben übrig:                                                                                               # RollenbelegungStepDefs.folgendeProduktionsauftraegeBleibenUebrig(ProduktionsauftragTestDAO>)

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag mit dem Prozessmodell "Drucken" kann nicht zugeordnet werden.Es existiert zwar eine Maschine, die Drucken kann, # features/Rollenbelegung.feature:109
  aber kein Mitarbeiter, der sie bedienen kann.
    Given folgende Lst von Produktionsaufträgen:                                                                                                   # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                                              # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                                             # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                                  # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then folgende Produktionsaufträge bleiben übrig:                                                                                               # RollenbelegungStepDefs.folgendeProduktionsauftraegeBleibenUebrig(ProduktionsauftragTestDAO>)

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag mit dem Prozessmodell "Kuvertieren" wird einer qualifizierten und verfügbaren Maschine # features/Rollenbelegung.feature:125
  und einem qualifizierten und verfügbaren Mitarbeiter mittels des MaschinenRollenBelegungService zugeordnet.
    Given folgende Lst von Produktionsaufträgen:                                                                          # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                    # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                         # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                        # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                       # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                        # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag mit dem Prozessmodell "Kuvertieren" kann nicht zugeordnet werden, da es keine Maschine gibt, # features/Rollenbelegung.feature:145
  die Kuvertieren kann.
    Given folgende Lst von Produktionsaufträgen:                                                                                # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                               # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then folgende Produktionsaufträge bleiben übrig:                                                                            # RollenbelegungStepDefs.folgendeProduktionsauftraegeBleibenUebrig(ProduktionsauftragTestDAO>)

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag mit dem Prozessmodell "Kuvertieren" kann nicht zugeordnet werden, da es keine Maschine gibt, # features/Rollenbelegung.feature:157
  die das Kuvertformat beherrscht.
    Given folgende Lst von Produktionsaufträgen:                                                                                # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                           # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                          # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                               # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then folgende Produktionsaufträge bleiben übrig:                                                                            # RollenbelegungStepDefs.folgendeProduktionsauftraegeBleibenUebrig(ProduktionsauftragTestDAO>)

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag mit dem Prozessmodell "Kuvertien" kann nicht zugeordnet werden.Es existiert zwar eine Maschine, die Kuvertieren kann, # features/Rollenbelegung.feature:173
  aber kein Mitarbeiter, der sie bedienen kann.
    Given folgende Lst von Produktionsaufträgen:                                                                                                         # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                    # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                                        # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then folgende Produktionsaufträge bleiben übrig:                                                                                                     # RollenbelegungStepDefs.folgendeProduktionsauftraegeBleibenUebrig(ProduktionsauftragTestDAO>)

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein Produktionsauftrag mit dem Prozessmodell Drucken und Kuvertieren wird zwei Maschinen und einem Mitarbeiter zugeordnet. # features/Rollenbelegung.feature:188
    Given folgende Lst von Produktionsaufträgen:                                                                                       # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                                  # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                                 # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 2 zu bedienen                                                                 # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                      # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                                     # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                                    # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                                     # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein Produktionsauftrag mit dem Prozessmodell Drucken und Kuvertieren kann nicht zugeordnet werden. # features/Rollenbelegung.feature:210
  Es existiert zwar eine Maschine, die Drucken kann, aber keine Maschine, die Kuvertieren kann.
    Given folgende Lst von Produktionsaufträgen:                                                               # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                          # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                              # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then folgende Produktionsaufträge bleiben übrig:                                                           # RollenbelegungStepDefs.folgendeProduktionsauftraegeBleibenUebrig(ProduktionsauftragTestDAO>)

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein Produktionsauftrag mit dem Prozessmodell Drucken und Kuvertieren kann nicht zugeordnet werden. # features/Rollenbelegung.feature:226
  Es existiert zwar eine Maschine, die Kuvertieren kann, aber keine Maschine, die Drucken kann.
    Given folgende Lst von Produktionsaufträgen:                                                               # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                          # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 2 zu bedienen                                         # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                              # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then folgende Produktionsaufträge bleiben übrig:                                                           # RollenbelegungStepDefs.folgendeProduktionsauftraegeBleibenUebrig(ProduktionsauftragTestDAO>)

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: 10 Drei Produktionsaufträge mit den Prozessmodellen, Drucken und Kuvertieren, Drucken und Kuvertieren, werden zwei Maschinen, # features/Rollenbelegung.feature:242
  einem Drucker und einem Kuvertierer, und einem Mitarbeiter, der diese Maschinen bedienen kann, zugeordnet.
    Given folgende Lst von Produktionsaufträgen:                                                                                          # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                                    # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 2 zu bedienen                                                                    # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                         # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                                        # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                                       # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                                        # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Drei Produktionsaufträge mit den Prozessmodellen, Drucken und Kuvertieren, Drucken und Kuvertieren, werden zwei Maschinen, # features/Rollenbelegung.feature:272
  einem Drucker und einem Kuvertierer, und einem Mitarbeiter, der diese Maschinen bedienen kann, zugeordnet. Dabei werden
  allerdings keine Einträge in den Kalendern von Maschinen und Mitarbeitern vorgenommen.
    Given folgende Lst von Produktionsaufträgen:                                                                                       # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                                  # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                                 # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 2 zu bedienen                                                                 # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When keine Kalendereinträge erzeugt, aber die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                 # RollenbelegungStepDefs.keineKalendereintraegeErzeugtAberDieProduktionsauftraegeDenMaschinenUndMitarbeiternZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                                     # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                                    # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                                     # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()
    And die Kalender von Maschinen und Mitarbeitern enthalten keine Belegungseinträge                                                  # RollenbelegungStepDefs.dieKalenderVonMaschinenUndMitarbeiternEnthaltenKeineBelegungseintraege()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein Produktionsauftrag kann an zwei verschiedenen Maschinen bearbeitet werden, aufgrund des MaschinenSortierParameters # features/Rollenbelegung.feature:307
  "SortGeschwindigkeit_Absteigend" wird die schnellere Maschine 1 für die Bearbeitung ausgewählt, auch wenn Maschine 2
  ebenfalls verfügbar und in der Lage wäre, den Auftrag zu bearbeiten und sich in der Maschinen-Liste vor Maschine 1 befindet.
    Given folgende Lst von Produktionsaufträgen:                                                                                   # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                              # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                             # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 2 zu bedienen                                                             # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                                      # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                  # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                                 # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                                # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                                 # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein Produktionsauftrag kann an zwei verschiedenen Maschinen bearbeitet werden, aufgrund des MaschinenSortierParameters # features/Rollenbelegung.feature:333
  "SortGeschwindigkeit_Aufsteigend" wird die langsamere Maschine 2 für die Bearbeitung ausgewählt, auch wenn Maschine 1
  ebenfalls verfügbar und in der Lage wäre, den Auftrag zu bearbeiten und sich in der Maschinen-Liste vor Maschine 2 befindet.
    Given folgende Lst von Produktionsaufträgen:                                                                                   # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                              # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                             # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 2 zu bedienen                                                             # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                                      # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                  # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                                 # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                                # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                                 # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Zwei ProduktionsAufträge, einer simplex, einer duplex, werden Maschinen und Mitarbeitern zugeordnet. # features/Rollenbelegung.feature:359
  Problem: Eine Duplex-Maschine(1) wird für einen Simplex-Auftrag(1) belegt, obwohl es auch eine passende Simplex-Maschine(2) gäbe.
  Dadurch wird der Duplex-Auftrag(2) erst später bearbeitet.
    Given folgende Lst von Produktionsaufträgen:                                                                 # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                            # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                           # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                           # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                               # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                              # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                               # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Zwei ProduktionsAufträge, einer simplex, einer duplex, werden Maschinen und Mitarbeitern zugeordnet. # features/Rollenbelegung.feature:385
  Durch den MaschinenSortierParameter "SortDruckTyp_Aufsteigend" werden die Maschinen so sortiert, dass die Simplex-Maschine(2)
  für den Simplex-Auftrag(1) belegt wird und die Duplex-Maschine(1) direkt für den Duplex-Auftrag(2) zur Verfügung steht.
    Given folgende Lst von Produktionsaufträgen:                                                                 # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                            # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                           # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                           # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                    # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                               # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                              # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                               # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Zwei ProduktionsAufträge, einer SchwarzWeiß, einer Farbdruck, werden Maschinen und Mitarbeitern zugeordnet. # features/Rollenbelegung.feature:414
  Problem: Eine Farbdruck-Maschine(1) wird für einen SchwarzWeiß-Auftrag(1) belegt, obwohl es auch eine passende
  SchwarzWeiß-Maschine(2) gäbe. Dadurch wird der Farbdruck-Auftrag(2) erst später bearbeitet.
    Given folgende Lst von Produktionsaufträgen:                                                                        # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                  # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                                  # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                       # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                      # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                     # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                      # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Zwei ProduktionsAufträge, einer SchwarzWeiß, einer Farbdruck, werden Maschinen und Mitarbeitern zugeordnet. # features/Rollenbelegung.feature:440
  Durch den MaschinenSortierParameter "SortFarbDruckTyp_Aufsteigend" werden die Maschinen so sortiert, dass die SchwarzWeiß-Maschine(2)
  für den SchwarzWeiß-Auftrag(1) belegt wird und die Farbe-Maschine(1) direkt für den Farbe-Auftrag(2) zur Verfügung steht.
    Given folgende Lst von Produktionsaufträgen:                                                                        # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                  # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 2 zu bedienen                                                  # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                           # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                       # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                      # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                     # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                      # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Zwei ProduktionsAufträge, einer kleiner (2) als der andere (1), werden Maschinen und Mitarbeitern zugeordnet. # features/Rollenbelegung.feature:470
  Durch den ProduktionsAuftragSortierParameter "SortGroesse_Aufsteigend" werden die Produktionsaufträge so sortiert, dass der kleinere (2)
  vor dem größeren Auftrag (1) zugeordnet wird, auch wenn der größere Auftrag (1) ebenfalls bearbeitet werden kann und sich in der
  Liste der Produktionsaufträge vor dem kleineren Auftrag (2) befindet.
    Given folgende Lst von Produktionsaufträgen:                                                                          # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                    # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                             # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                         # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                        # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                       # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                        # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Zwei ProduktionsAufträge, einer größer (2) als der andere (1), werden Maschinen und Mitarbeitern zugeordnet. # features/Rollenbelegung.feature:498
  Durch den ProduktionsAuftragSortierParameter "SortGroesse_Absteigend" werden die Produktionsaufträge so sortiert, dass der größere (2)
  vor dem kleineren Auftrag (1) zugeordnet wird, auch wenn der kleinere Auftrag (1) ebenfalls bearbeitet werden kann und sich in der
  Liste der Produktionsaufträge vor dem größeren Auftrag (2) befindet.
    Given folgende Lst von Produktionsaufträgen:                                                                         # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                    # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                   # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                            # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                        # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                       # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                      # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                       # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Zwei ProduktionsAufträge, einer mit früherem SLA (2) als der andere (1), werden Maschinen und Mitarbeitern zugeordnet. # features/Rollenbelegung.feature:526
  Durch den ProduktionsAuftragSortierParameter "SortSLA_Aufsteigend" werden die Produktionsaufträge so sortiert, dass der mit dem
  früheren SLA (2) vor dem Auftrag mit dem späteren SLA (1) zugeordnet wird, auch wenn der Auftrag mit dem späteren SLA (1)
  ebenfalls bearbeitet werden kann und sich in der Liste der Produktionsaufträge vor dem Auftrag  mit dem früheren SLA (2) befindet.

  Zwei ProduktionsAufträge, ein SLA liegt vor dem anderen, werden Maschinen und Mitarbeitern zugeordnet.
    Given folgende Lst von Produktionsaufträgen:                                                                                   # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                              # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                             # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                                      # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                  # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                                 # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                                # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                                 # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Zwei ProduktionsAufträge, einer simplex (2) der andere duplex (1), werden Maschinen und Mitarbeitern zugeordnet. # features/Rollenbelegung.feature:555
  Durch den ProduktionsAuftragSortierParameter "SortDruckTyp_Aufsteigend" werden die Produktionsaufträge so sortiert, dass der
  simplex Auftrag (2) vor dem duplex Auftrag (1) zugeordnet wird, auch wenn der duplex Auftrag (1) ebenfalls bearbeitet
  werden kann und sich in der Liste der Produktionsaufträge vor dem simplex Auftrag (2) befindet.
    Given folgende Lst von Produktionsaufträgen:                                                                             # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                       # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                                # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                            # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                           # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                          # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                           # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Zwei ProduktionsAufträge, einer SchwarzWeiß (2) der andere Farbdruck (1), werden Maschinen und Mitarbeitern zugeordnet. # features/Rollenbelegung.feature:583
  Durch den ProduktionsAuftragSortierParameter "SortFarbDruckTyp_Aufsteigend" werden die Produktionsaufträge so sortiert, dass der
  SchwarzWeiß-Auftrag (2) vor dem Farbdruck-Auftrag (1) zugeordnet wird, auch wenn der Farbdruck-Auftrag (1) ebenfalls bearbeitet
  werden kann und sich in der Liste der Produktionsaufträge vor dem SchwarzWeiß-Auftrag (2) befindet.
    Given folgende Lst von Produktionsaufträgen:                                                                                    # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                               # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                              # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                                       # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                   # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                                  # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                                 # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                                  # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

  Background:                                                                                                  # features/Rollenbelegung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: Ein ProduktionsAuftrag wird Maschinen und Mitarbeitern zugeordnet. Dabei wird aufgrund des MitarbeiterSortierParameters # features/Rollenbelegung.feature:612
  "SortAnzahlQualifikationen_Aufsteigend" der Mitarbeiter 2 mit weniger Qualifikationen a.k.a. Mario für die Bearbeitung ausgewählt,
  auch wenn der Mitarbeiter 1 mit mehr Qualifikationen a.k.a. Mara ebenfalls verfügbar und in der Lage wäre, die entsprechende
  Maschine zu bedienen und sich in der Mitarbeiter-Liste vor Mario befindet.
    Given folgende Lst von Produktionsaufträgen:                                                                                    # RollenbelegungStepDefs.folgendeLstVonProduktionsauftraegen(ProduktionsauftragTestDAO>)
    And folgende Liste von Maschinen:                                                                                               # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                              # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 2 zu bedienen                                                              # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 besitzt die Fähigkeit Maschine 1 zu bedienen                                                              # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                                       # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Produktionsaufträge den Maschinen und Mitarbeitern zugeordnet werden                                                   # RollenbelegungStepDefs.dieProduktionsauftraegeDenMaschinenZugeordnetWerden()
    Then wird folgende Maschinenbelegung erwartet:                                                                                  # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                                 # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                                  # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()

Feature: Simluation von Produktionsplänen

  Background:                                                                                         # features/Simulation.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 09.02.2018 um 12:30 Uhr            # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6                                        # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Zeit soll beim simulieren korrekt pro Produktionsauftrag und insgesammt korrekt berechnet werden # features/Simulation.feature:40
    When die Simulation ausgeführt wurde                                                                     # SimulationStepDefs.whenDieSimulationAusgefuehrtWurde()
    Then wurden insgesamt 25 h benötigt                                                                      # SimulationStepDefs.wurdeZeitBenoetigt(String)
    Then wurde für Produktionsauftrag 1 2 h benötigt                                                         # SimulationStepDefs.wurdeZeitBenoetigt(int,String)
    Then wurde für Produktionsauftrag 2 9 h benötigt                                                         # SimulationStepDefs.wurdeZeitBenoetigt(int,String)
    Then wurde für Produktionsauftrag 3 4 h benötigt                                                         # SimulationStepDefs.wurdeZeitBenoetigt(int,String)
    Then wurde für Produktionsauftrag 4 6 h benötigt                                                         # SimulationStepDefs.wurdeZeitBenoetigt(int,String)
    Then wurde für Produktionsauftrag 5 2 h benötigt                                                         # SimulationStepDefs.wurdeZeitBenoetigt(int,String)
    Then wurde für Produktionsauftrag 6 2 h benötigt                                                         # SimulationStepDefs.wurdeZeitBenoetigt(int,String)

  Background:                                                                                         # features/Simulation.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 09.02.2018 um 12:30 Uhr            # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6                                        # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Auslastung pro Mitarbeiter und die gesamte Auslastung wird korrekt berechnet # features/Simulation.feature:51
    When die Simulation ausgeführt wurde                                                 # SimulationStepDefs.whenDieSimulationAusgefuehrtWurde()
    Then der Mitarbeiter 1 ist zu 15/24 ausgelastet                                      # SimulationStepDefs.derMitarbeiterIstZuAusgelastet(int,String)
    And der Mitarbeiter 2 ist zu 10/22 ausgelastet                                       # SimulationStepDefs.derMitarbeiterIstZuAusgelastet(int,String)
    And die Gesamtauslastung der Mitarbeiter ist 25/46                                   # SimulationStepDefs.dieGesamtauslastungDerMitarbeiterIst(String)

  Background:                                                                                         # features/Simulation.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 09.02.2018 um 12:30 Uhr            # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6                                        # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Auslastung pro Maschine und die gesamte Auslastung wird korrekt berechnet # features/Simulation.feature:58
    When die Simulation ausgeführt wurde                                              # SimulationStepDefs.whenDieSimulationAusgefuehrtWurde()
    Then die Maschine 1 ist zu 13/48 ausgelastet                                      # SimulationStepDefs.dieMaschineIstZuAusgelastet(int,String)
    And die Maschine 2 ist zu 12/48 ausgelastet                                       # SimulationStepDefs.dieMaschineIstZuAusgelastet(int,String)
    And die Gesamtauslastung der Maschinen ist 25/96                                  # SimulationStepDefs.dieGesamtauslastungDerMaschinenIst(String)

  Background:                                                                                         # features/Simulation.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 09.02.2018 um 12:30 Uhr            # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6                                        # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Es wird ein SLA nicht eingehalten                           # features/Simulation.feature:65
eine unbekannte Variable wurde kreiert: [SortFarbDruckTyp,Farbdruck]
eine unbekannte Variable wurde kreiert: [AnzahlBlaetter,1000]
eine unbekannte Variable wurde kreiert: [AnzahlSendungen,1000]
    Given der Produktionsauftrag 1 hat die folgenden Dokumentenklassen: # SimulationStepDefs.derProduktionsauftragHatDieFolgendenDokumentenklassen(int,KundenauftragTestDAO>)
    When die Simulation ausgeführt wurde                                # SimulationStepDefs.whenDieSimulationAusgefuehrtWurde()
    Then wurde der SLA für die Dokumentenklasse 1 nicht eingehalten     # SimulationStepDefs.wurdeDerSLAFuerDieDokumentenklasseNichtEingehalten(int)

  Background:                                                                                         # features/Simulation.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 09.02.2018 um 12:30 Uhr            # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6                                        # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Es wird ein SLA eingehalten                                 # features/Simulation.feature:74
eine unbekannte Variable wurde kreiert: [SortFarbDruckTyp,Farbdruck]
eine unbekannte Variable wurde kreiert: [AnzahlBlaetter,1000]
eine unbekannte Variable wurde kreiert: [AnzahlSendungen,1000]
    Given der Produktionsauftrag 1 hat die folgenden Dokumentenklassen: # SimulationStepDefs.derProduktionsauftragHatDieFolgendenDokumentenklassen(int,KundenauftragTestDAO>)
    When die Simulation ausgeführt wurde                                # SimulationStepDefs.whenDieSimulationAusgefuehrtWurde()
    Then wurden alle SLAs eingehalten                                   # SimulationStepDefs.wurdeDerSLAFuerImmerEingehalten()

  Background:                                                                                         # features/Simulation.feature:3
    Given eine Maschine zum Drucken mit der Nummer 1 und den Kalendereintraegen:                      # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And eine Maschine zum Kuvertieren mit der Nummer 2 und den Kalendereintraegen:                    # SimulationStepDefs.givenEineMaschine(String,int,KalenderEintragTestDAO>)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 09.02.2018 um 12:30 Uhr            # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And Produktionsauftraege mit den Nummern: 1, 2, 3, 4, 5, 6                                        # SimulationStepDefs.givenEinProduktionsauftrag(Integer>)
    And ein Mitarbeiter mit dem Namen Mario Lünser, der Personalnummer 1 und den Kalendereintraegen:  # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 1 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And ein Mitarbeiter mit dem Namen Sandra Lünser, der Personalnummer 2 und den Kalendereintraegen: # SimulationStepDefs.givenEinMitarbeiter(String,String,int,KalenderEintragTestDAO>)
    And der Mitarbeiter 2 hat folgende Belegungen:                                                    # SimulationStepDefs.givenMitarbeiterBelegungen(int,MitarbeiterBelegungTestDAO>)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 1 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 2 hat die Fähigkeit Maschine 2 zu bedienen                                    # SimulationStepDefs.derMitarbeiterHatDieFaehigkeitMaschineZuBedienen(int,int)
    And zu den Mitarbeiterbelegungen gibt es passende Maschinenbelegungen                             # SimulationStepDefs.givenMaschinenBelegungenZuMitarbeiterBelegungen()

  Scenario: Es wird ein SLA nicht eingehalten, weil es einen nicht zugeordneten Produktionsauftrag gibt # features/Simulation.feature:82
    Given dem Produktionsauftrag 2 sind keine Belegungen zugeordnet                                     # SimulationStepDefs.demProduktionsauftragSindKeineBelegungenZugeordnet(int)
eine unbekannte Variable wurde kreiert: [SortFarbDruckTyp,Farbdruck]
eine unbekannte Variable wurde kreiert: [AnzahlBlaetter,1000]
eine unbekannte Variable wurde kreiert: [AnzahlSendungen,1000]
eine unbekannte Variable wurde kreiert: [SortFarbDruckTyp,Farbdruck]
eine unbekannte Variable wurde kreiert: [AnzahlBlaetter,1000]
eine unbekannte Variable wurde kreiert: [AnzahlSendungen,1000]
eine unbekannte Variable wurde kreiert: [SortFarbDruckTyp,Farbdruck]
eine unbekannte Variable wurde kreiert: [AnzahlBlaetter,1000]
eine unbekannte Variable wurde kreiert: [AnzahlSendungen,1000]
    And der Produktionsauftrag 2 hat die folgenden Dokumentenklassen:                                   # SimulationStepDefs.derProduktionsauftragHatDieFolgendenDokumentenklassen(int,KundenauftragTestDAO>)
    When die Simulation ausgeführt wurde                                                                # SimulationStepDefs.whenDieSimulationAusgefuehrtWurde()
    Then wurde der SLA für die Dokumentenklasse 1 nicht eingehalten                                     # SimulationStepDefs.wurdeDerSLAFuerDieDokumentenklasseNichtEingehalten(int)
    And wurde der SLA für die Dokumentenklasse 2 nicht eingehalten                                      # SimulationStepDefs.wurdeDerSLAFuerDieDokumentenklasseNichtEingehalten(int)
    And wurde der SLA für die Dokumentenklasse 3 nicht eingehalten                                      # SimulationStepDefs.wurdeDerSLAFuerDieDokumentenklasseNichtEingehalten(int)

Feature: Statistik

  Scenario: Es wird die verbrauchte Zeit von keinen Produktionsauftrag erfragt (leere Liste). Dies sollte eine Exception werfen! # features/Statistik.feature:3
    Given folgende Liste von Produktionsaufträgen: Leere Liste von Produktionsaufträgen                                          # StatistikStepDefs.folgendeListeVonProduktionsaufträgenLeereListeVonProduktionsaufträgen()
    And folgender Zeitraum wird betrachtet: Beliebiger Zeitraum                                                                  # StatistikStepDefs.folgenderZeitraumWirdBetrachtetBeliebigerZeitraum()
    When die verbrauchte Zeit errechnet wird                                                                                     # StatistikStepDefs.dieVerbrauchteZeitErrechnetWird()
    Then wird eine Exception geworfen                                                                                            # StatistikStepDefs.wirdEineExceptionGeworfen()

  Scenario: Es wird die verbrauchte Zeit von Produktionsaufträgen erfragt. Diese liegen teilweise, ganz oder gar nicht in dem gesuchtem Zeitraum. # features/Statistik.feature:9
    Given folgende Liste von Produktionsaufträgen:                                                                                                # StatistikStepDefs.folgendeListeVonProduktionsaufträgen(DataTable)
    And folgender Zeitraum wird betrachtet:  13.05.2018 6:00 bis 13.05.2018 22:00                                                                 # StatistikStepDefs.folgenderZeitraumWirdBetrachtetBis(String,String)
    When die verbrauchte Zeit errechnet wird                                                                                                      # StatistikStepDefs.dieVerbrauchteZeitErrechnetWird()
    Then erhalten wir folgende Zeit:  5,5h                                                                                                        # StatistikStepDefs.erhaltenWirFolgendeZeitH(double,double)

  Scenario: Auslastung des Maschinenparks berechnen.                             # features/Statistik.feature:21
    Given folgende Belegung des Maschinenparks:                                  # StatistikStepDefs.folgendeBelegungDesMaschinenparks(DataTable)
    And folgender Zeitraum wird betrachtet: 13.05.2018 8:00 bis 13.05.2018 12:00 # StatistikStepDefs.folgenderZeitraumWirdBetrachtetBis(String,String)
    When die Maschinenparkauslastung berechnet wird                              # StatistikStepDefs.dieMaschinenparkauslastungBerechnetWird()
    Then erhalten wir folgende Quantitaet: 300/390                               # StatistikStepDefs.erhaltenWirFolgendeQuantitaet(String,String)

  Scenario: Auslastung der Maschine 1 berechnen.                                 # features/Statistik.feature:35
    Given folgende Belegung des Maschinenparks:                                  # StatistikStepDefs.folgendeBelegungDesMaschinenparks(DataTable)
    And folgender Zeitraum wird betrachtet: 13.05.2018 8:00 bis 13.05.2018 12:00 # StatistikStepDefs.folgenderZeitraumWirdBetrachtetBis(String,String)
    When die Auslastung der Maschine 1 berechnet wird                            # StatistikStepDefs.dieAuslastungDerMaschineBerechnetWird(int)
    Then erhalten wir folgende Quantitaet: 150/210                               # StatistikStepDefs.erhaltenWirFolgendeQuantitaet(String,String)

  Scenario: Auslastung eines leeren Maschinenparks berechnen.           # features/Statistik.feature:46
    Given folgende Belegung des Maschinenparks: Keine Maschinenbelegung # StatistikStepDefs.folgendeBelegungDesMaschinenparksKeineMaschinenbelegung()
    And folgender Zeitraum wird betrachtet: Beliebiger Zeitraum         # StatistikStepDefs.folgenderZeitraumWirdBetrachtetBeliebigerZeitraum()
    When die Maschinenparkauslastung berechnet wird                     # StatistikStepDefs.dieMaschinenparkauslastungBerechnetWird()
    Then wird eine Exception geworfen                                   # StatistikStepDefs.wirdEineExceptionGeworfen()

  Scenario: Auslastung des Personals berechnen.                                  # features/Statistik.feature:52
    Given folgende Belegung der Mitarbeiter:                                     # StatistikStepDefs.folgendeBelegungDerMitarbeiter(DataTable)
    And folgender Zeitraum wird betrachtet: 13.05.2018 4:00 bis 13.05.2018 10:00 # StatistikStepDefs.folgenderZeitraumWirdBetrachtetBis(String,String)
    When die Personalauslastung berechnet wird                                   # StatistikStepDefs.diePersonalauslastungBerechnetWird()
    Then erhalten wir folgende Quantitaet: 240/330                               # StatistikStepDefs.erhaltenWirFolgendeQuantitaet(String,String)

  Scenario: Auslastung des Mitarbeiters 2 berechnen.                             # features/Statistik.feature:67
    Given folgende Belegung der Mitarbeiter:                                     # StatistikStepDefs.folgendeBelegungDerMitarbeiter(DataTable)
    And folgender Zeitraum wird betrachtet: 13.05.2018 4:00 bis 13.05.2018 10:00 # StatistikStepDefs.folgenderZeitraumWirdBetrachtetBis(String,String)
    When die Auslastung des Mitarbeiters 2 berechnet wird                        # StatistikStepDefs.dieAuslastungDesMitarbeitersBerechnetWird(int)
    Then erhalten wir folgende Quantitaet: 90/150                                # StatistikStepDefs.erhaltenWirFolgendeQuantitaet(String,String)

  Scenario: Auslastung eines nicht vorhandenen Personals berechnen.     # features/Statistik.feature:82
    Given folgende Belegung der Mitarbeitern: Keine Mitarbeiterbelegung # StatistikStepDefs.folgendeBelegungDerMitarbeiternKeineMitarbeiterbelegung()
    And folgender Zeitraum wird betrachtet: Beliebiger Zeitraum         # StatistikStepDefs.folgenderZeitraumWirdBetrachtetBeliebigerZeitraum()
    When die Personalauslastung berechnet wird                          # StatistikStepDefs.diePersonalauslastungBerechnetWird()
    Then wird eine Exception geworfen                                   # StatistikStepDefs.wirdEineExceptionGeworfen()

  Scenario: Es wird die verbrauchte Zeit von Produktionsaufträgen erfragt. Diese liegen teilweise, ganz oder gar nicht in dem gesuchtem Zeitraum. # features/Statistik.feature:88
    Given folgende Liste von Produktionsaufträgen:                                                                                                # StatistikStepDefs.folgendeListeVonProduktionsaufträgen(DataTable)
    When die Anzahl an SLA-Ueberschreitungen berechnet wird                                                                                       # StatistikStepDefs.dieAnzahlAnSLAUeberschreitungenBerechnetWird()
    Then erhalten wir folgende Anzahl:  2                                                                                                         # StatistikStepDefs.erhaltenWirFolgendeAnzahl(Integer)

  Scenario: Es wird die Anzahl an SLA-Überschreitungen von keinen Produktionsauftrag erfragt (leere Liste). Dies sollte eine Exception werfen! # features/Statistik.feature:99
    Given folgende Liste von Produktionsaufträgen: Leere Liste von Produktionsaufträgen                                                        # StatistikStepDefs.folgendeListeVonProduktionsaufträgenLeereListeVonProduktionsaufträgen()
    And folgender Zeitraum wird betrachtet: Beliebiger Zeitraum                                                                                # StatistikStepDefs.folgenderZeitraumWirdBetrachtetBeliebigerZeitraum()
    When die Anzahl an SLA-Ueberschreitungen berechnet wird                                                                                    # StatistikStepDefs.dieAnzahlAnSLAUeberschreitungenBerechnetWird()
    Then wird eine Exception geworfen                                                                                                          # StatistikStepDefs.wirdEineExceptionGeworfen()

Feature: Tagesplanung

  Background:                                                                                                  # features/Tagesplanung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: planeUndSimuliere() des TagesplanungsService wird aufgerufen und anschließend wird das Ergebnis in die Kalender der Maschinen # features/Tagesplanung.feature:17
    und Mitarbeiter überführt und die entprechenden Einträge werden auch in den Produktionsaufträgen erzeugt.
    Given folgende Kundenaufträge:                                                                                                        # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende StrategieParameter:                                                                                                      # ProduktionsauftragStepDefs.folgendeStrategieParameter(DataTable)
    And folgende Liste von Maschinen:                                                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                                    # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern:                                                                                             # RollenbelegungStepDefs.folgendeListeVonProduktionsauftragSortierParametern(SortierParameterDAO>)
    When die Simulation der Tagesplanung durchgeführt wird                                                                                # TagesplanungStepDefs.dieSimulationDerTagesplanungDurchgefuehrtWird()
    And das Simulationsergebnis in die Kalender der Maschinen und Mitarbeiter und in die Produktionsaufträge übertragen wird              # TagesplanungStepDefs.dasSimulationsergebnisInDieKalenderDerMaschinenUndMitarbeiterUndInDieProduktionsauftraegeUebertragenWird()
    Then existieren folgende Produktionsaufträge:                                                                                         # ProduktionsauftragStepDefs.existierenFolgendeProduktionsauftraege(ProduktionsauftragTestDAO>)
    And es bleiben keine Kundenaufträge übrig.                                                                                            # ProduktionsauftragStepDefs.esBleibenKeineKundenauftraegeUebrig()
    And wird folgende Maschinenbelegung erwartet:                                                                                         # RollenbelegungStepDefs.wirdFolgendeMaschinenbelegungErwartet(MaschinenBelegungTestDAO>)
    And wird folgende Mitarbeiterbelegung erwartet:                                                                                       # RollenbelegungStepDefs.folgendeMitarbeiterbelegung(MitarbeiterBelegungTestDAO>)
    And es bleiben keine Produktionsaufträge übrig                                                                                        # RollenbelegungStepDefs.esBleibenKeineProduktionsauftraegeUebrig()
    And die Prüfung hatte 0 Fehler                                                                                                        # SimulationStepDefs.diePruefungHatteFehler(int)
    And wurden alle SLAs eingehalten                                                                                                      # SimulationStepDefs.wurdeDerSLAFuerImmerEingehalten()
    And die Maschine 1 ist zu 65/1440 ausgelastet                                                                                         # SimulationStepDefs.dieMaschineIstZuAusgelastet(int,String)
    And der Mitarbeiter 1 ist zu 65/480 ausgelastet                                                                                       # SimulationStepDefs.derMitarbeiterIstZuAusgelastet(int,String)
    And zum Simulationsergebnis existieren korrespondierende Einträge in Maschinen, Mitarbeitern und Produktionsaufträgen                 # TagesplanungStepDefs.zumSimulationsergebnisExistierenKorrespondierendeEintraegeInMaschinenMitarbeiternUndProduktionsauftraegen()

  Background:                                                                                                  # features/Tagesplanung.feature:3
    Given der Eingangszeitpunkt sämtlicher Dokumentenklassen ist morgen um 08:00 Uhr                           # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_morgen_um_Uhr(int,int)
    And folgende Liste von Fähigkeiten:                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Mitarbeitern, die heute und morgen anwesend sind:                                   # RollenbelegungStepDefs.folgendeListeVonMitarbeitern(MitarbeiterDAO>)
    And die Zuordnung der ProduktionsAufträge geschieht mittels des Parameters "FRUEHEST_VERFUEGBARE_MASCHINE" # RollenbelegungStepDefs.dieZuordnungDerProduktionsAuftraegeGeschiehtMittelsDesParameters(String)

  Scenario: findeOptimaleParameterAus() des TagesplanungsService wird aufgerufen. Als zu variierender Parameter wird "SortGeschwindigkeit_Absteigend" # features/Tagesplanung.feature:52
             übergeben. Mit Nutzung dieses Parameters wird das Simulationsergebnis optimal, da die Maschinen so vorteilhaft sortiert werden.
    Given folgende Kundenaufträge:                                                                                                                    # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende StrategieParameter, die variiert werden sollen:                                                                                      # TagesplanungStepDefs.folgendeStrategieParameterDieVariiertWerdenSollen(StrategieParameterDAO>)
    And folgende Liste von Maschinen:                                                                                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 1 zu bedienen                                                                                # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And der Mitarbeiter 1 besitzt die Fähigkeit Maschine 2 zu bedienen                                                                                # RollenbelegungStepDefs.derMitarbeiterBesitztDieFaehigkeitMaschineZuBedienen(int,int)
    And folgende Liste von SortierParametern, die variiert werden sollen:                                                                             # TagesplanungStepDefs.folgendeListeVonSortierParameternDieVariiertWerdenSollen(SortierParameterDAO>)
    When nach optimalen Parametern gesucht wird                                                                                                       # TagesplanungStepDefs.nachOptimalenParameternGesuchtWird()
    Then sind die folgenden Parameter optimal                                                                                                         # TagesplanungStepDefs.sindDieFolgendenParameterOptimal(ParameterKombinationDAO>)

Feature: Es soll auf Basis von bereits existierenden und vorgeplanten Dokumentenklassen Pläne für Zeiträume erstellt werden.

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Es gibt nur tatsächliche Kundenaufträge in dem gegebenen Zeitraum, aus denen eine Planung erstellt wird.                                         # features/Wochenplanung.feature:43
    Given folgende Kundenaufträge:                                                                                                                           # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Es gibt nur tatsächliche Kundenaufträge, da mehrere Maschinen in Frage kommen wird so geplant, dass die jeweils effektivste Maschine genutzt wird. # features/Wochenplanung.feature:61
    Given folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird   # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                           # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                        # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Es gibt nur tatsächliche Kundenaufträge in dem gegebenen Zeitraum, aus denen eine Planung erstellt wird. (b)                                     # features/Wochenplanung.feature:79
  Wobei am Ende die Schicht nicht voll genutzt wird, da keine Produktionsaufträge mehr vorhanden sind.
    Given folgende Kundenaufträge:                                                                                                                           # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Es gibt nur tatsächliche Kundenaufträge in dem gegebenen Zeitraum, aus denen eine Planung erstellt wird, allerdings mit einem verringertem Produktionssatz von 80%. # features/Wochenplanung.feature:96
    Given folgende Kundenaufträge:                                                                                                                                              # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 80% erstellt wird                     # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                            # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                                         # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                                 # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt 2 Maschinen vom selben Maschinentypen, die so wenig belegt werden, dass alles in einer schicht auf eine Maschine passt                   # features/Wochenplanung.feature:118
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt 2 Maschinen vom selben Maschinentypen, die so sehr belegt werden, dass in einer Schicht auf eine zweite Maschine ausgewichen werden muss # features/Wochenplanung.feature:146
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt 2 Maschinen vom selben Maschinentypen, die so sehr belegt werden, dass in einer Schicht auf eine zweite Maschine ausgewichen werden muss (2) # features/Wochenplanung.feature:175
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                         # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                          # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                       # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                            # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                 # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird     # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                             # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                          # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                  # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt 2 Maschinen vom selben Maschinentypen, die so sehr belegt werden, dass in einer Schicht auf eine zweite Maschine ausgewichen werden muss und sogar noch etwas in die nächste Schicht fällt # features/Wochenplanung.feature:205
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                                                       # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                                                          # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                                                               # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird                                                   # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                                                           # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                                                                        # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                                                                # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt eine Maschine, die gegebene Dokumentenklasse nicht verarbeiten kann                                                                      # features/Wochenplanung.feature:235
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And es bleiben folgende Aufträge im BestCase, AverageCase und WorstCase übrig:                                                                           # WochenplanungStepDefs.esBleibenFolgendeAuftraegeImSzenarioUebrig(String,UebrigeAuftraegeTestDAO>)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt zwei Maschinen mit verschiedenen Maschinentypen, die jedoch bis auf die Geschwindigkeit gleich sind. Also wird zunächst die schnellere genommen und dann auf die langsamere ausgewichen. # features/Wochenplanung.feature:262
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird                                                 # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt zwei Maschinen mit verschiedenen Maschinentypen, die jedoch bis auf die Geschwindigkeit gleich sind. Also wird zunächst die schnellere genommen und dann auf die langsamere ausgewichen. # features/Wochenplanung.feature:290
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird                                                 # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Aufträge fallen noch gerade so in die erste Schicht auf die schnelle Maschine. (ohne sortierte Eingabe)                                          # features/Wochenplanung.feature:324
  es gibt zwei Maschinen mit verschiedenen Maschinentypen, die jedoch bis auf die Geschwindigkeit gleich sind. Also wird zunächst die schnellere genommen und dann auf die langsamere ausgewichen.
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Aufträge können gerade so nicht mehr von der schnellen Maschine in der ersten Schicht gewuppt werden. (ohne sortierte Eingabe)                   # features/Wochenplanung.feature:360
  es gibt zwei Maschinen mit verschiedenen Maschinentypen, die jedoch bis auf die Geschwindigkeit gleich sind. Also wird zunächst die schnellere genommen und dann auf die langsamere ausgewichen.
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Aufträge passen noch in die erste Schicht auf beiden Maschinen                                                                                   # features/Wochenplanung.feature:396
  es gibt zwei Maschinen mit verschiedenen Maschinentypen, die jedoch bis auf die Geschwindigkeit gleich sind. Also wird zunächst die schnellere genommen und dann auf die langsamere ausgewichen.
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es muss gerade so noch nicht auf die nächste Schicht ausgewichen werden, wobei beide Maschinen komplett befüllt sind.  (mit sortierter Eingabe)  # features/Wochenplanung.feature:434
  es gibt zwei Maschinen mit verschiedenen Maschinentypen, die jedoch bis auf die Geschwindigkeit gleich sind. Also wird zunächst die schnellere genommen und dann auf die langsamere ausgewichen.
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es muss auf die zweite Schicht ausgewichen werden, da beide Maschinen das Aufkommen von Produktionsaufträgen nicht in der ersten Schicht schaffen werden. # features/Wochenplanung.feature:474
  es gibt zwei Maschinen mit verschiedenen Maschinentypen, die jedoch bis auf die Geschwindigkeit gleich sind. Also wird zunächst die schnellere genommen und dann auf die langsamere ausgewichen.
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                              # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                               # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                            # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                      # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird          # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                  # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                               # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                       # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: wenn der Produktionsauftrag mit Fähigkeiten "Drucken" und "Kuvertieren" nicht in die erste Schicht zeitlich passt, da alle Druckern belegt sind. # features/Wochenplanung.feature:517
  In diesem Fall ist zu erwarten, dass der Auftrag erst in der 2. Schicht bearbeitet wird und in der 1. gar nicht  abgearbeitet wird (auch das Kuvertieren nicht, obwohl die Maschinen dafür da sind).
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Hier wartet der Algorythmus nicht, bis der Auftrag mit der id2 gedruckt wird. Es kann bereits in erste Stunde der Schicht dieser Auftrag kuvertiert werden. # features/Wochenplanung.feature:555
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                                 # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                              # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                        # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird            # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                    # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                                 # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                         # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: ein Auftrag mit den benötigten Fähigkeiten "drucken" und "kuvertieren" ist gegeben. Hier darf der gleiche Auftrag kuvertiert werden,             # features/Wochenplanung.feature:592
  solange er noch nicht gedruckt ist! Dieses Problem kann in der Tagesplanung behandelt werden, indem der Auftrag vielleicht noch zerschnitten wird.
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Verschiedene Dokumentenklassen können aus verschiedenen Gründen nicht verarbeitet werden.                                                        # features/Wochenplanung.feature:628
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 13:30 Uhr                                                                   # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And es bleiben folgende Aufträge im BestCase, AverageCase und WorstCase übrig:                                                                           # WochenplanungStepDefs.esBleibenFolgendeAuftraegeImSzenarioUebrig(String,UebrigeAuftraegeTestDAO>)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt mehrere Drucker und sobald ein Drucker in der Schicht vollständig befüllt ist,  müssen die Druckaufträge zu nächste Drcuckmaschine zugeordnet werden. # features/Wochenplanung.feature:682
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                  # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                          # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird              # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                      # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                                   # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                           # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt mehrere Drucker des gleichen Typs.                                                                                                       # features/Wochenplanung.feature:721
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt mehrere Drucker des gleichen Typs, die sich nach Geschwindigkeit unterscheiden.  Der schnellere Maschinen werden als erste befüllt. Prüfung, ob das stimmt. # features/Wochenplanung.feature:760
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                        # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                                         # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                           # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                                # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird                    # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                            # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                                         # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                                 # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: es gibt mehrere Drucker des gleichen Typs, die sich nach Geschwindigkeit unterscheiden.  Der schnellere Maschinen werden als erste befüllt. Prüfung, ob das stimmt. # features/Wochenplanung.feature:797
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                        # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                                         # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                           # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                                # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird                    # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                            # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase, AverageCase und WorstCase erwartet:                                                                                         # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And es bleiben folgende Aufträge im BestCase, AverageCase und WorstCase übrig:                                                                                              # WochenplanungStepDefs.esBleibenFolgendeAuftraegeImSzenarioUebrig(String,UebrigeAuftraegeTestDAO>)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Außer normalen eingehenden Kundenaufträge sind auch die voraussichtlichen Dokumentenklassen vorhanden, die im "best case" gar nicht kommen,      # features/Wochenplanung.feature:846
  im "average case" werden auf alle Schichten des Eingangszeitraums verteilt und im "worst case" wird es mit maximalem Blattanzahl in jeder Schicht des Planungzeitraums erwartet. Prüfung, ob die Belegung stimmt.
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Voranmeldungen:                                                                                                                             # WochenplanungStepDefs.folgendeVoranmeldungen(String,String>>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 20.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase erwartet:                                                                                                 # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im AverageCase erwartet:                                                                                              # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im WorstCase erwartet:                                                                                                # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Hier wird der Auftrag 9 im Average Case mit 1000 Blätter in die 2 Schicht eingeplant (500+500) und im worst case nur ein Mal bei der 2 Schicht mit 1000 Blätter genommen # features/Wochenplanung.feature:896
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                             # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                                              # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                           # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                                # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                                     # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Voranmeldungen:                                                                                                                                                     # WochenplanungStepDefs.folgendeVoranmeldungen(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird                         # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                                 # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase erwartet:                                                                                                                         # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im AverageCase erwartet:                                                                                                                      # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im WorstCase erwartet:                                                                                                                        # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                                      # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Es müssen die normale Aufträge, sowie die vorangemeldete Kundenaufträge in die Planung aufgenommen werden.                                       # features/Wochenplanung.feature:939
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr                                                                   # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Voranmeldungen:                                                                                                                             # WochenplanungStepDefs.folgendeVoranmeldungen(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase erwartet:                                                                                                 # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im AverageCase erwartet:                                                                                              # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im WorstCase erwartet:                                                                                                # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Planung sortiert nach Maschinengeschwindigkeiten mit Voraussichtlichen Dokumentenklassen                                                         # features/Wochenplanung.feature:984
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Voranmeldungen:                                                                                                                             # WochenplanungStepDefs.folgendeVoranmeldungen(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase erwartet:                                                                                                 # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im AverageCase erwartet:                                                                                              # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im WorstCase erwartet:                                                                                                # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Testfall zu einer Voraussichtlichen Dokumentenklasse, die in der Schicht verschoben wird und daher im Average- und Worst-Case unterschiedlich behandelt wird. # features/Wochenplanung.feature:1030
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                  # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr                                                                                # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende Liste von Fähigkeiten:                                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                          # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Voranmeldungen:                                                                                                                                          # WochenplanungStepDefs.folgendeVoranmeldungen(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird              # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                      # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase erwartet:                                                                                                              # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im AverageCase erwartet:                                                                                                           # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im WorstCase erwartet:                                                                                                             # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase, WorstCase übrig.                                                                                              # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Voraussichtliche Dokumentenklasse, die in der Schicht verschoben wird und daher im WorstCase sogar unbearbeitet zurück kommt.                    # features/Wochenplanung.feature:1079
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                     # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr                                                                   # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende Liste von Fähigkeiten:                                                                                                                      # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                        # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                             # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Voranmeldungen:                                                                                                                             # WochenplanungStepDefs.folgendeVoranmeldungen(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                         # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase erwartet:                                                                                                 # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im AverageCase erwartet:                                                                                              # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im WorstCase erwartet:                                                                                                # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase und AverageCase übrig.                                                                                         # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)
    And es bleiben folgende Aufträge im WorstCase übrig:                                                                                                     # WochenplanungStepDefs.esBleibenFolgendeAuftraegeImSzenarioUebrig(String,UebrigeAuftraegeTestDAO>)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Mehrere Aufträge (normale und  voraussichtliche) müssen geplant werden. Prüfung: sortierung nach SLA.  Zu erwarten ist, dass erst die Aufträge mit frühesten SLA verarbeitet werden. # features/Wochenplanung.feature:1129
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                                         # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 19.03.2018 um 00:00 Uhr                                                                                                       # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende Liste von Fähigkeiten:                                                                                                                                                          # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                                       # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                                            # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                                                 # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Voranmeldungen:                                                                                                                                                                 # WochenplanungStepDefs.folgendeVoranmeldungen(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 19.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird                                     # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                                             # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase erwartet:                                                                                                                                     # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im AverageCase erwartet:                                                                                                                                  # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im WorstCase erwartet:                                                                                                                                    # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                                                  # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

  Background:                                                                              # features/Wochenplanung.feature:3
    And folgende Liste von Fähigkeiten:                                                    # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                 # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                      # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And die Schichtzeiten der Firma sehen wie folgt aus:                                   # WochenplanungStepDefs.dieSchichtzeitenDerFirmaSehenWieFolgtAus(DataTable)
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 18.03.2018 um 22:30 Uhr # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)

  Scenario: Mehrere Aufträge (normale und  voraussichtliche) müssen geplant werden. Prüfung: sortierung nach SLA.  Zu erwarten ist, dass erst die Aufträge mit frühesten SLA verarbeitet werden. Gleiche Scenario, als der Testfall oben. # features/Wochenplanung.feature:1177
    Given alle Maschinen, Maschinentypen und Fähigkeiten sind resettet, sodass nichts von ihnen aus dem Background gilt.                                                                                                                  # RollenbelegungStepDefs.alleMaschinenMaschinentypenUndFaehigkeitenSindResettetSodassNichtsVonIhnenAusDemBackgroundGilt()
    And der Eingangszeitpunkt sämtlicher Dokumentenklassen ist der 19.03.2018 um 00:00 Uhr                                                                                                                                                # WochenplanungStepDefs.der_Eingangszeitpunkt_saemtlicher_Dokumentenklassen_ist_der_um_Uhr(int,int,int,int,int)
    And folgende Liste von Fähigkeiten:                                                                                                                                                                                                   # RollenbelegungStepDefs.folgendeListeVonFaehigkeiten(FaehigkeitDAO>)
    And folgende Liste von MaschinenTypen:                                                                                                                                                                                                # RollenbelegungStepDefs.folgendeListeVonMaschinenTypen(MaschinenTypTestDAO>)
    And folgende Liste von Maschinen:                                                                                                                                                                                                     # RollenbelegungStepDefs.folgendeListeVonMaschinen(MaschineDAO>)
    And folgende Kundenaufträge:                                                                                                                                                                                                          # ProduktionsauftragStepDefs.folgendeKundenauftraege(String,String>>)
    And folgende Voranmeldungen:                                                                                                                                                                                                          # WochenplanungStepDefs.folgendeVoranmeldungen(String,String>>)
    When die Planung für den Zeitraum 19.03.2018 - 23.03.2018 mit der Planungsstrategie "standardstrategie" mit einem Produktionssatz von 100% erstellt wird                                                                              # WochenplanungStepDefs.diePlanungFuerDenZeitraumMitDerPlanungsstrategieMitEinemProduktionssatzErstelltWird(int,int,int,int,int,int,String,int)
    Then gibt es folgende Schichten:                                                                                                                                                                                                      # WochenplanungStepDefs.gibtEsFolgendeSchichten(SchichtTestDAO>)
    And folgende Maschinentypen werden im BestCase erwartet:                                                                                                                                                                              # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im AverageCase erwartet:                                                                                                                                                                           # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And folgende Maschinentypen werden im WorstCase erwartet:                                                                                                                                                                             # WochenplanungStepDefs.folgendeMaschinentypenWerdenImSzenarioErwartet(String,MaschinenTypZuordnungTestDAO>)
    And Es bleiben keine Aufträge im BestCase, AverageCase und WorstCase übrig.                                                                                                                                                           # WochenplanungStepDefs.esBleibenKeineAuftraegeImSzenarioUebrig(String)

161 Scenarios (161 passed)
1674 Steps (1674 passed)
0m6.115s

[INFO] Tests run: 161, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.967 s - in features.RunCucumberTests
[INFO] Running servicekommandos.WochenplanungKommandosTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.035 s - in servicekommandos.WochenplanungKommandosTest
[INFO] Running servicekommandos.MaschinenRollenbelegungsKommandosTest
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 s - in servicekommandos.MaschinenRollenbelegungsKommandosTest
[INFO] Running servicekommandos.ProduktionsAuftragServiceKommandosTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 s - in servicekommandos.ProduktionsAuftragServiceKommandosTest
[INFO] Running servicekommandos.TagesplanungKommandosTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.045 s - in servicekommandos.TagesplanungKommandosTest
[INFO] Running servicekommandos.SimulationsKommandosTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.021 s - in servicekommandos.SimulationsKommandosTest
[INFO] Running produktionsauftrag.ProduktionsauftragTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in produktionsauftrag.ProduktionsauftragTest
[INFO] Running tagesplanung.SimulationsErgebnisVergleichTest
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 s - in tagesplanung.SimulationsErgebnisVergleichTest
[INFO] Running tagesplanung.ParameterVariationTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.011 s - in tagesplanung.ParameterVariationTest
[INFO] Running tagesplanung.TagesplanungTest
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.067 s - in tagesplanung.TagesplanungTest
[INFO] Running rollenbelegung.ProduktionsplanerTest
eine unbekannte Variable wurde kreiert: [BlattAnzahl,200]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 s - in rollenbelegung.ProduktionsplanerTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 200, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[JENKINS] Recording test results
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.9:report (jacoco-site) @ service ---
[INFO] Loading execution data file /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/jacoco.exec
[INFO] Analyzed bundle 'service' with 70 classes
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ service ---
[INFO] Building jar: /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/service-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ service ---
[INFO] Installing /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/service-0.0.1-SNAPSHOT.jar to /var/lib/jenkins/.m2/repository/de/fhdw/ippps18/service/0.0.1-SNAPSHOT/service-0.0.1-SNAPSHOT.jar
[INFO] Installing /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/pom.xml to /var/lib/jenkins/.m2/repository/de/fhdw/ippps18/service/0.0.1-SNAPSHOT/service-0.0.1-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-site-plugin:3.3:site (default-site) @ service ---
[INFO] configuring report plugin org.apache.maven.plugins:maven-project-info-reports-plugin:2.9
[INFO] configuring report plugin org.apache.maven.plugins:maven-site-plugin:3.4
[INFO] configuring report plugin org.apache.maven.plugins:maven-checkstyle-plugin:2.17
[INFO] configuring report plugin org.codehaus.mojo:findbugs-maven-plugin:3.0.5
[INFO] Fork Value is true
     [java] WARNING: An illegal reflective access operation has occurred
     [java] WARNING: Illegal reflective access by org.dom4j.io.SAXContentHandler (file:/var/lib/jenkins/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar) to method com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$LocatorProxy.getEncoding()
     [java] WARNING: Please consider reporting this to the maintainers of org.dom4j.io.SAXContentHandler
     [java] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
     [java] WARNING: All illegal access operations will be denied in a future release
     [java] The following classes needed for analysis were missing:
     [java]   java.lang.Object
     [java]   java.lang.Comparable
     [java]   java.lang.Exception
     [java]   java.lang.RuntimeException
     [java]   java.lang.Enum
     [java]   java.util.Comparator
     [java]   java.util.LinkedList
     [java]   java.util.Optional
     [java]   java.lang.Boolean
     [java]   java.lang.Integer
     [java]   java.lang.String
     [java]   java.util.Arrays
     [java]   java.util.stream.Stream
     [java]   java.util.stream.Collectors
     [java]   java.util.List
     [java]   java.lang.StringBuilder
     [java]   java.util.Map
     [java]   java.util.Collection
     [java]   java.util.Set
     [java]   java.util.ArrayList
     [java]   java.util.Iterator
     [java]   java.lang.Double
     [java]   java.time.LocalDateTime
     [java]   java.util.stream.IntStream
     [java]   java.util.concurrent.CompletableFuture
     [java]   java.util.HashMap
     [java]   java.util.Map$Entry
     [java]   java.time.LocalTime
     [java]   java.util.HashSet
     [java]   java.util.Collections
     [java]   java.util.EnumSet
     [java]   java.time.LocalDate
     [java]   java.util.LinkedHashSet
     [java]   java.util.function.Function
     [java]   java.util.function.BinaryOperator
     [java]   java.lang.Class
     [java]   java.util.Objects
     [java]   java.io.PrintStream
     [java]   java.util.regex.Pattern
     [java]   java.util.regex.Matcher
     [java]   java.time.ZoneOffset
     [java]   java.lang.Math
     [java]   java.lang.Number
     [java]   java.time.temporal.ChronoUnit
     [java]   java.lang.Long
     [java]   java.time.format.DateTimeFormatter
     [java]   java.util.AbstractMap$SimpleEntry
     [java]   java.lang.AssertionError
     [java]   java.util.LinkedHashMap
     [java]   java.lang.UnsupportedOperationException
     [java]   java.lang.NoSuchFieldError
     [java]   java.io.Serializable
     [java]   java.lang.invoke.LambdaMetafactory
     [java]   java.lang.invoke.MethodHandles$Lookup
     [java]   java.lang.invoke.MethodHandles
     [java]   java.lang.NoClassDefFoundError
     [java]   java.lang.UnsatisfiedLinkError
     [java]   java.lang.IllegalAccessError
     [java]   java.lang.NoSuchMethodError
     [java]   java.lang.IncompatibleClassChangeError
     [java]   java.lang.AbstractMethodError
     [java]   java.time.temporal.TemporalUnit
     [java]   java.time.format.DateTimeParseException
     [java]   java.text.Format
     [java]   java.lang.ArrayIndexOutOfBoundsException
     [java]   java.lang.Error
     [java]   java.lang.Runnable
     [java]   java.util.AbstractMap
     [java]   java.lang.InterruptedException
     [java]   java.time.DayOfWeek
     [java]   java.util.concurrent.ExecutionException
     [java]   java.lang.System
     [java]   java.lang.ClassFormatError
     [java]   java.lang.VerifyError
     [java]   java.lang.ExceptionInInitializerError
     [java]   java.lang.ClassCastException
     [java] Missing classes: 58
[INFO] Done FindBugs Analysis....
[WARNING] No project URL defined - decoration links will not be relativized!
[INFO] Rendering site with org.apache.maven.skins:maven-default-skin:jar:1.0 skin.
[INFO] Skipped "Checkstyle" report, file "checkstyle.html" already exists for the English version.
[INFO] Generating "Dependencies" report    --- maven-project-info-reports-plugin:2.9
[WARNING] The repository url 'http://localhost:8083/nexus/content/groups/public' is invalid - Repository 'public' will be blacklisted.
[INFO] Generating "Dependency Convergence" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Dependency Information" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "About" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugin Management" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Plugins" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Summary" report    --- maven-project-info-reports-plugin:2.9
[INFO] Generating "Checkstyle" report    --- maven-checkstyle-plugin:2.17
[WARNING] Unable to locate Source XRef to link to - DISABLED
[INFO] Generating "FindBugs" report    --- findbugs-maven-plugin:3.0.5
[JENKINS] Archiving site from /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/site to /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service@tmp/maven-reporters/moduleset/site/service
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Integrationsprojekt HFW415 0.0.1-SNAPSHOT:
[INFO] 
[INFO] Integrationsprojekt HFW415 ......................... SUCCESS [ 19.603 s]
[INFO] persist ............................................ SUCCESS [ 26.216 s]
[INFO] model .............................................. SUCCESS [ 36.634 s]
[INFO] view ............................................... SUCCESS [  4.880 s]
[INFO] service ............................................ SUCCESS [ 36.498 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:07 min
[INFO] Finished at: 2023-02-11T07:26:05+01:00
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/pom.xml to de.fhdw.ippps18/model/0.0.1-SNAPSHOT/model-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/model-0.0.1-SNAPSHOT.jar to de.fhdw.ippps18/model/0.0.1-SNAPSHOT/model-0.0.1-SNAPSHOT.jar
Copying /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model@tmp/maven-reporters/moduleset to /var/lib/jenkins/home/jobs/ippps18
[JENKINS] Archiving /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/pom.xml to de.fhdw.ippps18/persist/0.0.1-SNAPSHOT/persist-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/persist-0.0.1-SNAPSHOT.jar to de.fhdw.ippps18/persist/0.0.1-SNAPSHOT/persist-0.0.1-SNAPSHOT.jar
Copying /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist@tmp/maven-reporters/moduleset to /var/lib/jenkins/home/jobs/ippps18
[JENKINS] Archiving /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/pom.xml to de.fhdw.ippps18/ippps18/0.0.1-SNAPSHOT/ippps18-0.0.1-SNAPSHOT.pom
Copying /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18@tmp/maven-reporters/moduleset to /var/lib/jenkins/home/jobs/ippps18
[JENKINS] Archiving /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view/pom.xml to de.fhdw.ippps18/view/0.0.1-SNAPSHOT/view-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view/target/view-0.0.1-SNAPSHOT.jar to de.fhdw.ippps18/view/0.0.1-SNAPSHOT/view-0.0.1-SNAPSHOT.jar
Copying /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view@tmp/maven-reporters/moduleset to /var/lib/jenkins/home/jobs/ippps18
[JENKINS] Archiving /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/pom.xml to de.fhdw.ippps18/service/0.0.1-SNAPSHOT/service-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/service-0.0.1-SNAPSHOT.jar to de.fhdw.ippps18/service/0.0.1-SNAPSHOT/service-0.0.1-SNAPSHOT.jar
Copying /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service@tmp/maven-reporters/moduleset to /var/lib/jenkins/home/jobs/ippps18
channel stopped
[JaCoCo plugin] Collecting JaCoCo coverage data...
[JaCoCo plugin] **/**.exec;**/classes;**/src/main/java; locations are configured
[JaCoCo plugin] Number of found exec files for pattern **/**.exec: 3
[JaCoCo plugin] Saving matched execfiles:  /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/jacoco.exec /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/jacoco.exec /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/jacoco.exec
[JaCoCo plugin] Saving matched class directories for class-pattern: **/classes: 
[JaCoCo plugin]  - /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/target/classes 290 files
[JaCoCo plugin]  - /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/target/classes 14 files
[JaCoCo plugin]  - /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/target/classes 75 files
[JaCoCo plugin]  - /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view/target/classes 0 files
[JaCoCo plugin] Saving matched source directories for source-pattern: **/src/main/java: 
[JaCoCo plugin] Source Inclusions: **/*.java
[JaCoCo plugin] Source Exclusions: 
[JaCoCo plugin] - /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/model/src/main/java 263 files
[JaCoCo plugin] - /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/persist/src/main/java 10 files
[JaCoCo plugin] - /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/service/src/main/java 61 files
[JaCoCo plugin] - /var/lib/jenkins/home/jobs/ippps18/workspace/ippps18/view/src/main/java 0 files
[JaCoCo plugin] Loading inclusions files..
[JaCoCo plugin] inclusions: []
[JaCoCo plugin] exclusions: []
[JaCoCo plugin] Thresholds: JacocoHealthReportThresholds [minClass=0, maxClass=0, minMethod=0, maxMethod=0, minLine=0, maxLine=0, minBranch=0, maxBranch=0, minInstruction=0, maxInstruction=0, minComplexity=0, maxComplexity=0]
[JaCoCo plugin] Publishing the results..
[JaCoCo plugin] Loading packages..
[JaCoCo plugin] Done.
[JaCoCo plugin] Overall coverage: class: 93.333336, method: 90.24812, line: 90.490585, branch: 77.89382, instruction: 90.673065, complexity: 83.311775
[CucumberReport] Using Cucumber Reports version 5.7.4
[CucumberReport] JSON report directory is ""
[CucumberReport] Copied 4 properties files from workspace "/var/lib/jenkins/home/jobs/ippps18/workspace/ippps18" to reports directory "/var/lib/jenkins/home/jobs/ippps18/builds/ippps18/1035/cucumber-html-reports/.cache"
[CucumberReport] Copied 1 files from workspace "/var/lib/jenkins/home/jobs/ippps18/workspace/ippps18" to reports directory "/var/lib/jenkins/home/jobs/ippps18/builds/ippps18/1035/cucumber-html-reports/.cache"
[CucumberReport] Processing 1 json files:
[CucumberReport] /var/lib/jenkins/home/jobs/ippps18/builds/ippps18/1035/cucumber-html-reports/.cache/service/target/cucumber/cucumber.json
Finished: SUCCESS