コード例 #1
0
        public Netzplan Netzplan_berechnen()
        {
            string[] linien = this.generiereNamen("linie").Take(this.NumberOfLinien).ToArray();
            Haltestelle[] haltestellen = this.generiereNamen("haltestelle")
                .Take(this.NumberOfHaltestellen)
                .Select(name => new Haltestelle() { Name = name, Strecken = new Strecke[0] })
                .ToArray();

            foreach (string linie in linien)
            {
                var startHaltestelle = haltestellen[this.seed.Next(haltestellen.Length)];
                var numberOfStops = this.seed.Next(this.MinimumStopsPerLine, this.MaximumStopsPerLine);
                for (int i = 0; i < numberOfStops; i++)
                {
                    var nextStop = haltestellen[this.seed.Next(haltestellen.Length)];
                    var strecke = new Strecke { Linienname = linie, Zielhaltestellenname = nextStop.Name };

                    var strecken = new List<Strecke>(startHaltestelle.Strecken);
                    strecken.Add(strecke);
                    startHaltestelle.Strecken = strecken.ToArray();

                    startHaltestelle = nextStop;
                }
            }

            return new Netzplan { Haltestellen = haltestellen };
        }
コード例 #2
0
        public void TestEinzelstrecke()
        {
            var target = new VerbindungsErzeugung(new FahrplanProviderMock());
            this.results = new List<Verbindung>();

            target.OnVerbindung += MerkeVerbindungInListe;

            Strecke s = new Strecke();
            s.Linienname = "U1";
            s.Zielhaltestellenname = "H2";

            Pfad pfad = new Pfad();
            pfad.Starthaltestellenname = "H1";
            pfad.Strecken = new Strecke[1];
            pfad.Strecken[0] = s;

            target.Verbindugen_zu_Pfad_bilden(pfad, Time(9, 0));

            Assert.AreEqual(1, this.results.Count);
            var res = this.results[0];
            Assert.AreEqual("H1", res.Pfad.Starthaltestellenname);
            Assert.AreEqual(1, res.Pfad.Strecken.Length);
            Assert.AreEqual("H2", res.Pfad.Strecken[0].Zielhaltestellenname);
            Assert.AreEqual(1, res.Fahrtzeiten.Length);
            Assert.AreEqual(Time(9, 0), res.Fahrtzeiten[0].Abfahrtszeit);
            Assert.AreEqual(Time(9, 2), res.Fahrtzeiten[0].Ankunftszeit);
        }
コード例 #3
0
 private Strecke[] GetStreckenArray()
 {
     var index = this.strecken.Count;
       var streckenArray = new Strecke[index];
       foreach (var strecke in this.strecken)
       {
       streckenArray[--index] = strecke;
       }
       return streckenArray;
 }
コード例 #4
0
        private void Strecke_Hinzufügen(Haltestelle halteStelle, string linienname, Haltestelle ziel)
        {
            var strecke = new Strecke();
            strecke.Linienname = linienname;
            strecke.Zielhaltestellenname = ziel.Name;

            var aktuelleStrecken = halteStelle.Strecken.ToList();
            aktuelleStrecken.Add(strecke);
            halteStelle.Strecken = aktuelleStrecken.ToArray();
        }
コード例 #5
0
        public void TestNullEvent()
        {
            var target = new VerbindungsErzeugung(new FahrplanProviderMock());
            this.results = new List<Verbindung>();

            Strecke s = new Strecke();
            s.Linienname = "U1";
            s.Zielhaltestellenname = "H2";
            Pfad p = new Pfad();
            p.Starthaltestellenname = "H1";
            p.Strecken = new Strecke[1];
            p.Strecken[0] = s;

            target.Verbindugen_zu_Pfad_bilden(p, Time(8, 0));
        }
コード例 #6
0
        public void TestZweiStreckenMehrereVerbindungen()
        {
            var target = new VerbindungsErzeugung(new FahrplanProviderMock());
            this.results = new List<Verbindung>();

            target.OnVerbindung += MerkeVerbindungInListe;

            Pfad pfad = new Pfad();
            pfad.Starthaltestellenname = "H1";
            pfad.Strecken = new Strecke[2];

            Strecke s = new Strecke();
            s.Linienname = "U1";
            s.Zielhaltestellenname = "H2";
            pfad.Strecken[0] = s;

            s = new Strecke();
            s.Linienname = "U3";
            s.Zielhaltestellenname = "H3";
            pfad.Strecken[1] = s;

            target.Verbindugen_zu_Pfad_bilden(pfad, Time(8, 40));

            Assert.AreEqual(3, this.results.Count);
            Assert.AreEqual(Time(8, 48), this.results[0].Fahrtzeiten[1].Ankunftszeit);
            Assert.AreEqual(Time(8, 58), this.results[1].Fahrtzeiten[1].Ankunftszeit);
            Assert.AreEqual(Time(9, 08), this.results[2].Fahrtzeiten[1].Ankunftszeit);
        }
コード例 #7
0
        public void TestUmsteigezeitZuSpät()
        {
            var target = new VerbindungsErzeugung(new FahrplanProviderMock());
            this.results = new List<Verbindung>();

            target.OnVerbindung += MerkeVerbindungInListe;

            Pfad pfad = new Pfad();
            pfad.Starthaltestellenname = "H1";
            pfad.Strecken = new Strecke[2];

            Strecke s = new Strecke();
            s.Linienname = "U2";
            s.Zielhaltestellenname = "H2";
            pfad.Strecken[0] = s;

            s = new Strecke();
            s.Linienname = "U1";
            s.Zielhaltestellenname = "H3";
            pfad.Strecken[1] = s;

            target.Verbindugen_zu_Pfad_bilden(pfad, Time(9, 07));

            Assert.AreEqual(0, this.results.Count);
        }
コード例 #8
0
 internal void AddStrecke(Strecke strecke)
 {
     this.strecken = this.strecken.Push(strecke);
 }