예제 #1
0
        public void Un_evento_di_partenza_rientrata_con_parametri_corretti_e_correttamente_creato()
        {
            var now    = DateTime.Now;
            var evento = new PartenzaRientrata(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"));
        }
예제 #2
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);
        }
예제 #3
0
파일: InRientro.cs 프로젝트: somaliz/sovvf
 /// <summary>
 ///   Nello stato <see cref="InRientro" /> l'evento <see cref="PartenzaRientrata" /> produce
 ///   la transizione nello stato <see cref="InSede" />.
 /// </summary>
 /// <param name="partenzaRientrata">Il visitor</param>
 /// <returns>Lo stato <see cref="InSede" /></returns>
 public override IStatoMezzo AcceptVisitor(PartenzaRientrata partenzaRientrata)
 {
     return(new InSede(partenzaRientrata.Istante));
 }
예제 #4
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="partenzaRientrata">Il visitor accettato</param>
 /// <returns>Niente, poiché solleva un'eccezione</returns>
 public virtual IStatoMezzo AcceptVisitor(PartenzaRientrata partenzaRientrata)
 {
     throw new WorkflowException($"Impossibile transire in seguito all'evento {nameof(partenzaRientrata)}");
 }