Example #1
0
        private void Crea_Richiesta_R1_Con_M1_e_M2_revocato_e_riassegnato_e_M1_revocato_e_M2_in_viaggio(out IEnumerable <SituazioneMezzo> expected, out IEnumerable <RichiestaAssistenza> richieste)
        {
            var richiesta = new RichiestaAssistenza()
            {
                Codice = "R1",
            };
            var richiestaSubentrata = new RichiestaAssistenza()
            {
                Codice = "R2",
            };

            richieste = new RichiestaAssistenza[] { richiesta, richiestaSubentrata };
            var now = DateTime.Now;
            var componentePartenza1       = new ComponentePartenza("CF1", "M1");
            var componentePartenza2       = new ComponentePartenza("CF2", "M2");
            var istanteEventoAssegnazione = now.AddMinutes(-10);
            var eventoComposizione        = new ComposizionePartenze(richiesta, istanteEventoAssegnazione, "Fonte", false)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    componentePartenza1, componentePartenza2
                }
            };
            var istanteEventoUscitaM1 = now.AddMinutes(-7);
            var eventoUscitaM1        = new UscitaPartenza(richiesta, "M1", istanteEventoUscitaM1, "Fonte");
            var istanteEventoUscitaM2 = now.AddMinutes(-6);
            var eventoUscitaM2        = new UscitaPartenza(richiesta, "M2", istanteEventoUscitaM2, "Fonte");
            var istanteSulPostoM1     = now.AddMinutes(-4);
            var eventoSulPostoM1      = new ArrivoSulPosto(richiesta, "M1", istanteSulPostoM1, "Fonte");
            var istanteSganciatoM1    = now.AddMinutes(-2);
            var eventoSganciatoM1     = new RevocaPerRiassegnazione(richiesta, richiestaSubentrata, "M1", istanteSganciatoM1, "Fonte");
            var istanteRiassegnatoM1  = now.AddMinutes(-1);
            var eventoComposizione2   = new ComposizionePartenze(richiestaSubentrata, istanteRiassegnatoM1, "Fonte", true)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    componentePartenza1
                }
            };

            expected = new SituazioneMezzo[]
            {
                new SituazioneMezzo()
                {
                    Codice      = "M1",
                    CodiceStato = new InViaggio(istanteRiassegnatoM1, "R2").Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteRiassegnatoM1
                },
                new SituazioneMezzo()
                {
                    Codice      = "M2",
                    CodiceStato = new InViaggio(istanteEventoUscitaM2, "R1").Codice,
                    CodiceRichiestaAssistenza = "R1",
                    IstanteAggiornamentoStato = istanteEventoUscitaM2
                },
            };
        }
Example #2
0
        public void Un_evento_di_arrivo_sul_posto_con_parametri_corretti_e_correttamente_creato()
        {
            var now    = DateTime.Now;
            var evento = new ArrivoSulPosto(this.richiesta, "M1", now, "Fonte");

            Assert.That(evento.CodiceMezzo, Is.EqualTo("M1"));
            Assert.That(evento.Istante, Is.EqualTo(now));
            Assert.That(evento.CodiceFonte, Is.EqualTo("Fonte"));
        }
Example #3
0
        private RichiestaAssistenza Crea_Richiesta_Con_M3_e_M4_assegnati_e_M4_in_sede_e_M3_in_rientro(out IEnumerable <SituazioneMezzo> expected)
        {
            var richiesta = new RichiestaAssistenza()
            {
                Codice = "R2",
            };
            var componentePartenza1       = new ComponentePartenza("CF3", "M3");
            var componentePartenza2       = new ComponentePartenza("CF4", "M4");
            var istanteEventoAssegnazione = DateTime.Now.AddMinutes(-10);
            var eventoComposizione        = new ComposizionePartenze(richiesta, istanteEventoAssegnazione, "Fonte", false)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    componentePartenza1, componentePartenza2
                }
            };
            var istanteEventoUscitaM3 = DateTime.Now.AddMinutes(-7);
            var eventoUscitaM3        = new UscitaPartenza(richiesta, "M3", istanteEventoUscitaM3, "Fonte");
            var istanteSulPostoM3     = DateTime.Now.AddMinutes(-4);
            var eventoSulPostoM3      = new ArrivoSulPosto(richiesta, "M3", istanteSulPostoM3, "Fonte");
            var istanteInRientroM3    = DateTime.Now.AddMinutes(-2);
            var eventoInRientroM3     = new PartenzaInRientro(richiesta, "M3", istanteInRientroM3, "Fonte");
            var istanteEventoUscitaM4 = DateTime.Now.AddMinutes(-7);
            var eventoUscitaM4        = new UscitaPartenza(richiesta, "M4", istanteEventoUscitaM4, "Fonte");
            var istanteSulPostoM4     = DateTime.Now.AddMinutes(-4);
            var eventoSulPostoM4      = new ArrivoSulPosto(richiesta, "M4", istanteSulPostoM4, "Fonte");
            var istanteInRientroM4    = DateTime.Now.AddMinutes(-3);
            var eventoInRientroM4     = new PartenzaInRientro(richiesta, "M4", istanteInRientroM4, "Fonte");
            var istanteRientratoM4    = DateTime.Now.AddMinutes(-2);
            var eventoRientratoM4     = new PartenzaRientrata(richiesta, "M4", istanteRientratoM4, "Fonte");

            expected = new SituazioneMezzo[]
            {
                new SituazioneMezzo()
                {
                    Codice      = "M3",
                    CodiceStato = new InRientro(istanteInRientroM3, "R2").Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteSulPostoM3
                },
                new SituazioneMezzo()
                {
                    Codice      = "M4",
                    CodiceStato = new InSede(istanteRientratoM4).Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteRientratoM4
                },
            };
            return(richiesta);
        }
Example #4
0
        private RichiestaAssistenza Crea_Richiesta_Con_M3_e_M4_assegnati_e_M3_sul_posto_e_in_viaggio(out IEnumerable <SituazioneMezzo> expected)
        {
            var richiesta = new RichiestaAssistenza()
            {
                Codice = "R2",
            };

            var componentePartenza1 = new ComponentePartenza("CF3", "M3");
            var componentePartenza2 = new ComponentePartenza("CF4", "M4");
            var istanteEvento1      = DateTime.Now.AddMinutes(-11);
            var eventoComposizione  = new ComposizionePartenze(richiesta, istanteEvento1, "Fonte", false)
            {
                Componenti = new HashSet <ComponentePartenza>()
                {
                    componentePartenza1, componentePartenza2
                }
            };
            var istanteEvento2 = DateTime.Now.AddMinutes(-6);
            var eventoUscita   = new UscitaPartenza(richiesta, "M4", istanteEvento2, "Fonte");
            var istanteEvento3 = DateTime.Now.AddMinutes(-3);
            var eventoSulPosto = new ArrivoSulPosto(richiesta, "M4", istanteEvento3, "Fonte");

            expected = new SituazioneMezzo[]
            {
                new SituazioneMezzo()
                {
                    Codice      = "M4",
                    CodiceStato = new SulPosto(istanteEvento3, "R2").Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteEvento3
                },
                new SituazioneMezzo()
                {
                    Codice      = "M3",
                    CodiceStato = new Assegnato(istanteEvento1, "R2").Codice,
                    CodiceRichiestaAssistenza = "R2",
                    IstanteAggiornamentoStato = istanteEvento1
                },
            };
            return(richiesta);
        }
Example #5
0
 /// <summary>
 ///   Accetta il visitor e scatena l'implementazione di default che consiste nel sollevare
 ///   una <see cref="WorkflowException" />. Gli stati concreti, implementati nelle classi
 ///   derivate, effettuano l'override dei metodi corrispondenti a transizioni di stato
 ///   ammesse, restituendo lo stato corretto a fronte dell'evento (visitor) di ingresso.
 /// </summary>
 /// <param name="arrivoSulPosto">Il visitor accettato</param>
 /// <returns>Niente, poiché solleva un'eccezione</returns>
 public virtual IStatoMezzo AcceptVisitor(ArrivoSulPosto arrivoSulPosto)
 {
     throw new WorkflowException($"Impossibile transire in seguito all'evento {nameof(arrivoSulPosto)}");
 }
Example #6
0
 /// <summary>
 ///   Nello stato <see cref="InViaggio" /> l'evento <see cref="ArrivoSulPosto" /> produce la
 ///   transizione nello stato <see cref="SulPosto" />.
 /// </summary>
 /// <param name="arrivoSulPosto">Il visitor</param>
 /// <returns>Lo stato <see cref="SulPosto" /></returns>
 public override IStatoMezzo AcceptVisitor(ArrivoSulPosto arrivoSulPosto)
 {
     return(new SulPosto(arrivoSulPosto.Istante, arrivoSulPosto.CodiceRichiesta));
 }