コード例 #1
0
        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"));
            });
        }
コード例 #2
0
        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>());
        }
コード例 #3
0
        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;
            });
        }
コード例 #4
0
        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>());
        }
コード例 #5
0
        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;
            });
        }
コード例 #6
0
        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"));
            });
        }
コード例 #7
0
        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>());
        }
コード例 #8
0
        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>());
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        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>());
        }
コード例 #11
0
        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>());
        }
コード例 #12
0
        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;
            });
        }
コード例 #13
0
        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)));
        }
コード例 #14
0
        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>());
        }