public void UnMezzoAssegnatoRestituisceIlCodiceDellaRichiesta() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); richiesta.Codice = "C1234"; var eventi = new IPartenza[] { new ComposizionePartenze(richiesta, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } } }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.Multiple(() => { Assert.That(stato.AssegnatoARichiesta, Is.True); Assert.That(stato, Is.InstanceOf <IStatoMezzoAssegnatoARichiesta>()); Assert.That(((IStatoMezzoAssegnatoARichiesta)stato).CodiceRichiesta, Is.EqualTo("C1234")); }); }
public void UnMezzoRientratoEPoiDiNuovoUscitoRestituisceLoStatoInViaggio() { var processoreStato = new ProcessoreStato(); var richiesta1 = new RichiestaAssistenza(); var richiesta2 = new RichiestaAssistenza(); var eventi = new IPartenza[] { new ComposizionePartenze(richiesta1, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } }, new UscitaPartenza(richiesta1, "M1", DateTime.Now, "fonte"), new ArrivoSulPosto(richiesta1, "M1", DateTime.Now, "fonte"), new PartenzaInRientro(richiesta1, "M1", DateTime.Now, "fonte"), new PartenzaRientrata(richiesta1, "M1", DateTime.Now, "fonte"), new ComposizionePartenze(richiesta2, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("YYY", "M1") } }, new UscitaPartenza(richiesta2, "M1", DateTime.Now, "fonte") }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.That(stato, Is.InstanceOf <InViaggio>()); }
public void RichiedereLIstanteTransizioneSenzaEventiGeneraEccezione() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var now = DateTime.Now; var stato = processoreStato.ProcessaEventi(new IPartenza[0]).Stato; Assert.Throws <InvalidOperationException>(() => { var istanteTransizione = stato.IstanteTransizione; }); }
public void UnMezzoPuoAndareDirettamenteFuoriServizio() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var eventi = new IPartenza[] { new VaInFuoriServizio(richiesta, "M1", DateTime.Now, "fonte", "test") }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.That(stato, Is.InstanceOf <FuoriServizio>()); }
public void UnMezzoInSedeNonPuoEssereUscitoDallaSede() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var eventi = new IPartenza[] { new UscitaPartenza(richiesta, "M1", DateTime.Now, "fonte"), }; Assert.Throws <WorkflowException>(() => { var stato = processoreStato.ProcessaEventi(eventi).Stato; }); }
public void UnMezzoRevocatoEdAssegnatoAdAltraRichiestaRestituisceIlCodiceDellAltraRichiesta() { var processoreStato = new ProcessoreStato(); var richiesta1 = new RichiestaAssistenza() { Codice = "R1" }; var richiesta2 = new RichiestaAssistenza() { Codice = "R2" }; var eventi = new IPartenza[] { new ComposizionePartenze(richiesta1, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } }, new UscitaPartenza(richiesta1, "M1", DateTime.Now, "fonte"), new ArrivoSulPosto(richiesta1, "M1", DateTime.Now, "fonte"), new PartenzaInRientro(richiesta1, "M1", DateTime.Now, "fonte"), new PartenzaRientrata(richiesta1, "M1", DateTime.Now, "fonte"), new ComposizionePartenze(richiesta2, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("YYY", "M1") } }, new UscitaPartenza(richiesta2, "M1", DateTime.Now, "fonte") }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.Multiple(() => { Assert.That(stato, Is.InstanceOf <IStatoMezzoAssegnatoARichiesta>()); Assert.That(((IStatoMezzoAssegnatoARichiesta)stato).CodiceRichiesta, Is.EqualTo("R2")); }); }
public void UnMezzoPartitoRestituisceLoStatoInViaggio() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var eventi = new IPartenza[] { new ComposizionePartenze(richiesta, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } }, new UscitaPartenza(richiesta, "M1", DateTime.Now, "fonte") }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.That(stato, Is.InstanceOf <InViaggio>()); }
public void UnEventoDiComposizioneMentreIlMezzoNonEInSedeRestituisceLoStatoLibero() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var fuoriSede = true; var eventi = new IPartenza[] { new ComposizionePartenze(richiesta, DateTime.Now, "fonte", fuoriSede) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } } }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.That(stato, Is.InstanceOf <Libero>()); }
public void UnUnicoEventoProvocaUnaTransizioneNellIstanteDellEvento() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var now = DateTime.Now; var eventi = new IPartenza[] { new ComposizionePartenze(richiesta, now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } } }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.That(stato.IstanteTransizione, Is.EqualTo(now)); }
public void UnMezzoAssegnatoPuoAndareFuoriServizio() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var eventi = new IPartenza[] { new ComposizionePartenze(richiesta, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } }, new VaInFuoriServizio(richiesta, "M1", DateTime.Now, "fonte", "test") }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.That(stato, Is.InstanceOf <FuoriServizio>()); }
public void UnMezzoRevocatoDopoLaComposizioneRestituisceLoStatoInSede() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var richiestaSubentrata = new RichiestaAssistenza(); var eventi = new IPartenza[] { new ComposizionePartenze(richiesta, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } }, new RevocaPerRiassegnazione(richiesta, richiestaSubentrata, "M1", DateTime.Now, "fonte") }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.That(stato, Is.InstanceOf <InSede>()); }
public void UnMezzoInViaggioNonPuoEsserePartitoDalLuogo() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var eventi = new IPartenza[] { new ComposizionePartenze(richiesta, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } }, new UscitaPartenza(richiesta, "M1", DateTime.Now, "fonte"), new PartenzaInRientro(richiesta, "M1", DateTime.Now, "fonte"), }; Assert.Throws <WorkflowException>(() => { var stato = processoreStato.ProcessaEventi(eventi).Stato; }); }
public void LIstanteTransizioneRiportaLaDataDellUltimoEvento() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var now = DateTime.Now; var eventi = new IPartenza[] { new ComposizionePartenze(richiesta, now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } }, new UscitaPartenza(richiesta, "M1", now.AddSeconds(1), "fonte"), new ArrivoSulPosto(richiesta, "M1", now.AddSeconds(2), "fonte") }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.That(stato.IstanteTransizione, Is.EqualTo(now.AddSeconds(2))); }
public void UnMezzoRiassegnatoPrimaDelRientroRestituisceLoStatoLibero() { var processoreStato = new ProcessoreStato(); var richiesta = new RichiestaAssistenza(); var richiestaSubentrata = new RichiestaAssistenza(); var eventi = new IPartenza[] { new ComposizionePartenze(richiesta, DateTime.Now, "fonte", false) { Componenti = new HashSet <ComponentePartenza>() { new ComponentePartenza("XXX", "M1") } }, new UscitaPartenza(richiesta, "M1", DateTime.Now, "fonte"), new ArrivoSulPosto(richiesta, "M1", DateTime.Now, "fonte"), new PartenzaInRientro(richiesta, "M1", DateTime.Now, "fonte"), new RevocaPerRiassegnazione(richiesta, richiestaSubentrata, "M1", DateTime.Now, "fonte") }; var stato = processoreStato.ProcessaEventi(eventi).Stato; Assert.That(stato, Is.InstanceOf <Libero>()); }