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 }; }
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); }
private Strecke[] GetStreckenArray() { var index = this.strecken.Count; var streckenArray = new Strecke[index]; foreach (var strecke in this.strecken) { streckenArray[--index] = strecke; } return streckenArray; }
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(); }
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)); }
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); }
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); }
internal void AddStrecke(Strecke strecke) { this.strecken = this.strecken.Push(strecke); }