private void ElastizitätsErgebnisseVisualisieren(object sender, RoutedEventArgs e) { if (!berechnet) { if (modell == null) { _ = MessageBox.Show("Modelldaten für Elastizitätsberechnung sind noch nicht spezifiziert", "Elastizitätsberechnung"); return; } analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); berechnet = true; } if (modell.SpatialDimension == 2) { var tragwerk = new Elastizitätsberechnung.Ergebnisse.StatikErgebnisseVisualisieren(modell); tragwerk.Show(); } else if (modell.SpatialDimension == 3) { var tragwerk = new Elastizitätsberechnung.Ergebnisse.StatikErgebnisse3DVisualisieren(modell); tragwerk.Show(); } else { _ = MessageBox.Show(sb.ToString(), "falsche Raumdimension, muss 2 oder 3 sein"); } }
static void Main(string[] args) { int wahl = 0; double celsius, fahrenheit; Console.WriteLine("Auswahl Konvertierungstyp"); Console.WriteLine("1. Celsius --> Fahrenheit"); Console.WriteLine("2. Fahrenheit --> Celsius"); string input = Console.ReadLine(); if (int.TryParse(input, out wahl)) { switch (wahl) { case 1: Console.WriteLine("Celsius wert: "); celsius = double.Parse(Console.ReadLine()); Console.WriteLine("{0:F1}", (Berechnung.CnachF(celsius))); break; case 2: Console.WriteLine("Fahrenheit wert: "); fahrenheit = double.Parse(Console.ReadLine()); Console.WriteLine("{0:F1}", (Berechnung.FnachC(fahrenheit))); break; } } else { Console.WriteLine("Syntax Error"); } Console.ReadKey(); }
/// <summary> /// Methode zum Anzeigen des übergebenen <see cref="Auftrag"/> in den Controls /// </summary> /// <param name="auftrag"></param> /// <seealso cref="EasyAuftragContext"/> private void FillControls(Auftrag auftrag) { try { tbAuftragNr.Text = auftrag.AuftragNummer; using (var db = new EasyAuftragContext(_connection)) { int[] kundenIDs = (from k in db.Kunden select k.KundeID).ToArray(); var cbKundeEintraege = (from k in db.Kunden select new { ID = k.KundeID, kName = k.Name }).ToList(); cbKunde.DataSource = cbKundeEintraege; cbKunde.DisplayMember = "kName"; cbKunde.ValueMember = "ID"; cbKunde.SelectedIndex = Array.IndexOf(kundenIDs, auftrag.KundeID); } dtpEingang.Value = auftrag.Eingang; dtpErteilt.Value = auftrag.Erteilt; cbErledigt.Checked = auftrag.Erledigt; cbAbgerechnet.Checked = auftrag.Abgerechnet; tbGesamt.Text = Math.Round(Berechnung.AuftragZeitGesamt(_minlist) / 60, 2).ToString(); } catch (Exception ex) { ErrorHandler.ErrorHandle(ex); } }
/// <summary> /// Methode zum Laden und Aktualisieren der Tätigkeiten im <see cref="DataGridView"/> /// </summary> /// <seealso cref="EasyAuftragContext"/> private void DataGridNeu() { try { using (var db = new EasyAuftragContext(_connection)) { //Laden aller zugehörigen Tätigkeiten _tatlist = (from t in db.Taetigkeiten where t.AuftragID == AuftragInfo.AuftragID select t).ToList(); _bind.DataSource = _tatlist; foreach (var tat in _tatlist) { _minlist.Add(tat.Minuten); } foreach (var tat in AuftragInfo.Taetigkeiten) { _bind.Add(tat); } dgvAuftrag.DataSource = _bind; dgvAuftrag.Columns["TaetigkeitID"].Visible = false; dgvAuftrag.Columns["AuftragID"].Visible = false; tbGesamt.Text = Math.Round(Berechnung.AuftragZeitGesamt(_minlist) / 60, 2).ToString(); } } catch (Exception ex) { ErrorHandler.ErrorHandle(ex); } }
private void StatikErgebnisseVisualisieren(object sender, RoutedEventArgs e) { if (!berechnet) { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); berechnet = true; } _ = new Tragwerksberechnung.Ergebnisse.StatikErgebnisseVisualisieren(modell); }
// Konstruktor public FliesenBerechnungBedarfsermittlung(Fliese fliese, MainWindow mainwindow) { InitializeComponent(); this.fliese = fliese; this.berechnung = new Berechnung(); this.mainwindow = mainwindow; flieseBeschreibungTextBlock.Text += " Name:\t\t\t" + fliese.name + "\n"; flieseBeschreibungTextBlock.Text += " Artikelnummer:\t\t" + fliese.artikelnummer + "\n"; flieseBeschreibungTextBlock.Text += " Beschreibung:\t\t" + fliese.beschreibung + "\n"; flieseBeschreibungTextBlock.Text += " Preis:\t\t\t" + fliese.preis + " / Paket" + "\n"; }
/// <summary> /// Methode zum Anlegen einer neuen Tätigkeit /// </summary> /// <remarks> /// Öffnet <see cref="TaetigkeitView"/> und legt eine neue Taetigkeit an, falls erstere <see cref="DialogResult.OK"/> zurückgibt. /// </remarks> private void NeueTaetigkeit() { TaetigkeitView taetigkeitV = new TaetigkeitView("Neue Tätigkeit", _connection); if (taetigkeitV.ShowDialog() == DialogResult.OK) { AuftragInfo.Taetigkeiten.Add(taetigkeitV.TaetigkeitInfo); _bind.Add(taetigkeitV.TaetigkeitInfo); _minlist.Add(taetigkeitV.TaetigkeitInfo.Minuten); tbGesamt.Text = Math.Round(Berechnung.AuftragZeitGesamt(_minlist) / 60, 2).ToString(); } this.BringToFront(); this.Activate(); }
private void StatikErgebnisseAnzeigen(object sender, EventArgs e) { if (!berechnet) { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); berechnet = true; } var ergebnisse = new Tragwerksberechnung.Ergebnisse.StatikErgebnisseAnzeigen(modell); ergebnisse.Show(); }
private void TragwerksdatenBerechnen(object sender, EventArgs e) { if (tragwerksDaten) { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); berechnet = true; _ = MessageBox.Show("Systemgleichungen erfolgreich gelöst", "statische Tragwerksberechnung"); } else { _ = MessageBox.Show("Tragwerksdaten müssen zuerst eingelesen werden", "statische Tragwerksberechnung"); } }
public void AuftragZeitGesamtTest() { // Taetigkeitsliste mit drei Einträgen für Auftrag 345 erstellen List <Taetigkeit> testTaetigkeiten = new List <Taetigkeit>(); testTaetigkeiten.Add(new Taetigkeit() { AuftragID = 345, MitarbeiterID = 1, TaetigkeitID = 1, Datum = new DateTime(2019, 7, 18), Name = "Installation 1", StartZeit = new TimeSpan(4, 21, 0), EndZeit = new TimeSpan(13, 46, 0) } ); testTaetigkeiten.Add(new Taetigkeit() { AuftragID = 345, MitarbeiterID = 2, TaetigkeitID = 2, Datum = new DateTime(2018, 4, 27), Name = "Installation 2", StartZeit = new TimeSpan(12, 6, 0), EndZeit = new TimeSpan(15, 12, 0) } ); testTaetigkeiten.Add(new Taetigkeit() { AuftragID = 345, MitarbeiterID = 1, TaetigkeitID = 3, Datum = new DateTime(2017, 10, 30), Name = "Installation 3", StartZeit = new TimeSpan(16, 14, 0), EndZeit = new TimeSpan(22, 38, 0) } ); // Berechnung der Gesamtzeit für den Auftrag prüfen if (Berechnung.AuftragZeitGesamt(testTaetigkeiten) != 1135) { Assert.Fail(); } }
/// <summary> /// Zeigt den Stundensoll, die geleisteten Stunden /// und die Liste der Tätigkeiten aus dem <see cref="Core.Model.StundenDoc"/> in den Controls an. /// </summary> public void FillControls() { try { Config conf = new Config(); conf.LeseXML(); tbSoll.Text = (Convert.ToDouble(StuDoc.Mitarbeiter.AuslastungStelle) / 100 * conf.StundenSoll).ToString(); tbGeleistet.Text = Berechnung.ArbeitsZeit(StuDoc).ToString(); dgvStunden.DataSource = StuDoc.Tatlist; dgvStunden.Columns["TaetigkeitID"].Visible = false; dgvStunden.Columns["MitarbeiterID"].Visible = false; } catch (Exception ex) { ErrorHandler.ErrorHandle(ex); } }
private void ElastizitätsberechnungErgebnisse(object sender, EventArgs e) { if (!berechnet) { if (modell == null) { _ = MessageBox.Show("Modelldaten für Elastizitätsberechnung sind noch nicht spezifiziert", "Elastizitätsberechnung"); return; } analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); berechnet = true; } var ergebnisse = new Elastizitätsberechnung.Ergebnisse.StatikErgebnisseAnzeigen(modell); ergebnisse.Show(); }
private void DynamischeBerechnung(object sender, EventArgs e) { if (zeitintegrationDaten) { if (!berechnet) { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); berechnet = true; } analysis.TimeIntegration2NdOrder(); zeitintegrationBerechnet = true; } else { _ = MessageBox.Show("Daten für Zeitintegration sind noch nicht spezifiziert", "Tragwerksberechnung"); } }
private void WärmeberechnungErgebnisseVisualisieren(object sender, RoutedEventArgs e) { if (wärmeDaten) { if (!berechnet) { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); berechnet = true; } var wärmeModell = new Wärmeberechnung.Ergebnisse.StationäreErgebnisseVisualisieren(modell); wärmeModell.Show(); } else { _ = MessageBox.Show("Modelldaten für Wärmeberechnung sind noch nicht spezifiziert", "Wärmeberechnung"); } }
private void InstationäreBerechnung(object sender, RoutedEventArgs e) { if (zeitintegrationDaten) { if (!berechnet) { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); berechnet = true; } analysis.TimeIntegration1StOrder(); zeitintegrationBerechnet = true; _ = MessageBox.Show("Zeitintegration erfolgreich durchgeführt", "instationäre Wärmeberechnung"); } else { _ = MessageBox.Show("Daten für Zeitintegration sind noch nicht spezifiziert", "Wärmeberechnung"); } }
private void EigenlösungTragwerkBerechnen(object sender, RoutedEventArgs e) { if (modell != null) { if (!berechnet) { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); } // default = 2 Eigenstates, falls nicht anders spezifiziert if (modell.Eigenstate == null) { modell.Eigenstate = new Eigenzustand("default", 2); } analysis.Eigenstates(); _ = MessageBox.Show("Eigenfrequenzen erfolgreich ermittelt", "Tragwerksberechnung"); } else { _ = MessageBox.Show("Modelldaten sind noch nicht spezifiziert", "Tragwerksberechnung"); } }
private void EigenlösungTragwerkVisualisieren(object sender, RoutedEventArgs e) { if (modell != null) { if (!berechnet) { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); // default = 2 Eigenstates, falls nicht anders spezifiziert if (modell.Eigenstate == null) { modell.Eigenstate = new Eigenzustand("default", 2); } } analysis.Eigenstates(); var visual = new Tragwerksberechnung.Ergebnisse.EigenlösungVisualisieren(modell); visual.Show(); } else { _ = MessageBox.Show("Modelldaten sind noch nicht spezifiziert", "Tragwerksberechnung"); } }
private void ElastizitätsdatenBerechnen(object sender, EventArgs e) { if (modell == null) { _ = MessageBox.Show("Modelldaten für Elastizitätsberechnung sind noch nicht spezifiziert", "Elastizitätsberechnung"); return; } try { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); berechnet = true; _ = MessageBox.Show("Systemgleichungen erfolgreich gelöst", "Elastizitätsberechnung"); } catch (BerechnungAusnahme) { throw new BerechnungAusnahme("Abbruch: Fehler bei Lösung der Systemgleichungen"); } }
private void EigenlösungWärmeAnzeigen(object sender, RoutedEventArgs e) { if (modell != null) { if (!berechnet) { analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); // default = 2 Eigenstates, falls nicht anders spezifiziert if (modell.Eigenstate == null) { modell.Eigenstate = new Eigenzustand("default", 2); } } analysis.Eigenstates(); var eigen = new Eigenlösung.Eigenlösung(modell); eigen.Show(); } else { _ = MessageBox.Show("Modelldaten sind noch nicht spezifiziert", "Wärmeberechnung"); } }
public void RunTest() { var testdataPaths = Directory.EnumerateFiles(Path.GetDirectoryName(typeof(Test).GetTypeInfo().Assembly.Location)) .Where(path => Path.GetFileName(path).StartsWith("testdata-") && Path.GetExtension(path) == ".csv"); int files = 0; int tests = 0; foreach (string path in testdataPaths) { foreach (var line in ReadCsvTable(path)) { var e = new Eingabeparameter { STKL = int.Parse(line["STKL"], _culture), af = int.Parse(line["AF"], _culture), f = double.Parse(line["F"], _culture), ZKF = decimal.Parse(line["ZKF"], _culture), AJAHR = int.Parse(line["AJAHR"], _culture), ALTER1 = int.Parse(line["ALTER1"], _culture), RE4 = decimal.Parse(line["RE4"], _culture), VBEZ = decimal.Parse(line["VBEZ"], _culture), LZZ = int.Parse(line["LZZ"], _culture), KRV = int.Parse(line["KRV"], _culture), KVZ = decimal.Parse(line["KVZ"], _culture), PKPV = decimal.Parse(line["PKPV"], _culture), PKV = int.Parse(line["PKV"], _culture), PVS = int.Parse(line["PVS"], _culture), PVZ = int.Parse(line["PVZ"], _culture), R = int.Parse(line["R"], _culture), LZZFREIB = decimal.Parse(line["LZZFREIB"], _culture), LZZHINZU = decimal.Parse(line["LZZHINZU"], _culture), VJAHR = int.Parse(line["VJAHR"], _culture), VBEZM = decimal.Parse(line["VBEZM"], _culture), VBEZS = decimal.Parse(line["VBEZS"], _culture), ZMVB = int.Parse(line["ZMVB"], _culture), JRE4 = decimal.Parse(line["JRE4"], _culture), JVBEZ = decimal.Parse(line["JVBEZ"], _culture), JFREIB = decimal.Parse(line["JFREIB"], _culture), JHINZU = decimal.Parse(line["JHINZU"], _culture), JRE4ENT = decimal.Parse(line["JRE4ENT"], _culture), SONSTB = decimal.Parse(line["SONSTB"], _culture), STERBE = decimal.Parse(line["STERBE"], _culture), VBS = decimal.Parse(line["VBS"], _culture), SONSTENT = decimal.Parse(line["SONSTENT"], _culture), VKAPA = decimal.Parse(line["VKAPA"], _culture), VMT = decimal.Parse(line["VMT"], _culture), ENTSCH = decimal.Parse(line["ENTSCH"], _culture) }; var berechnung = new Berechnung(e); berechnung.Lohnsteuer(); var a = berechnung.Ausgabeparameter; Assert.Equal(decimal.Parse(line["LSTLZZ"], _culture), a.LSTLZZ); // Optionale Tests je nach Existenz des Feldes in der CSV OptionalTest(line, "SOLZLZZ", a.SOLZLZZ); OptionalTest(line, "BK", a.BK); OptionalTest(line, "STS", a.STS); OptionalTest(line, "SOLZS", a.SOLZS); OptionalTest(line, "BKS", a.BKS); OptionalTest(line, "STV", a.STV); OptionalTest(line, "SOLZV", a.SOLZV); OptionalTest(line, "BKV", a.BKV); OptionalTest(line, "VKVLZZ", a.VKVLZZ); OptionalTest(line, "VKVSONST", a.VKVSONST); tests++; } files++; } Assert.NotEqual(0, tests); Console.WriteLine($"{tests} Berechnungstests aus {files} Testdateien durchgeführt"); }
public void VerformteGeometrie() { if (!StartFenster.berechnet) { var analysis = new Berechnung(modell); analysis.ComputeSystemMatrix(); analysis.ComputeSystemVector(); analysis.SolveEquations(); StartFenster.berechnet = true; } //int überhöhung = 1; //const int rotationÜberhöhung = 1; var pathGeometry = new PathGeometry(); IEnumerable <AbstraktElement> Elements() { foreach (var item in modell.Elemente) { if (item.Value is AbstraktElement element) { yield return(element); } } } foreach (var element in Elements()) { //element.ElementState = element.ComputeElementState(); var pathFigure = new PathFigure(); switch (element) { case Element2D3 _: { if (modell.Knoten.TryGetValue(element.NodeIds[0], out knoten)) { } var start = TransformVerformtenKnoten(knoten, auflösung, maxY); pathFigure.StartPoint = start; for (var i = 1; i < element.NodeIds.Length; i++) { if (modell.Knoten.TryGetValue(element.NodeIds[i], out knoten)) { } var end = TransformVerformtenKnoten(knoten, auflösung, maxY); pathFigure.Segments.Add(new LineSegment(end, true)); } break; } } if (element.NodeIds.Length > 2) { pathFigure.IsClosed = true; } pathGeometry.Figures.Add(pathFigure); } // alle Elemente werden der GeometryGroup tragwerk hinzugefügt var tragwerk = new GeometryGroup(); tragwerk.Children.Add(pathGeometry); Shape path = new Path() { Stroke = Red, StrokeThickness = 1, Data = tragwerk }; // setz oben/links Position zum Zeichnen auf dem Canvas SetLeft(path, RandLinks); SetTop(path, randOben); // zeichne Shape visualErgebnisse.Children.Add(path); Verformungen.Add(path); }
private async void PieSeries_Loaded(object sender, RoutedEventArgs e) { var loader = new Windows.ApplicationModel.Resources.ResourceLoader(); MonatYearDaten datum = new MonatYearDaten(); Berechnung berechnug = new Berechnung(); var listBalance = new ObservableCollection <ListBalance>(); var balance = new ObservableCollection <Balance>(); //rechnet fur Piechart Prozent, Price und name balance = await berechnug.HomePageDatenSourceLoadedAsync(PieChartDaten, datum.Monat, datum.Year); if (balance.Count == 0) { var listView = new ListView(); ListViewItem listItem = GetNotDaten(); listView.IsItemClickEnabled = false; listView.Items.Add(listItem); dashboardChart1.Children.Add(listView); } else { //zeigt auf verschiedene Sprachen Cost und Incomen if (PieChartDaten == CategoryCostIncomen.Cost) { TxtCostsIncomen.Text = loader.GetString("TxtCostsHome"); pieSeries.ItemsSource = balance; } else { TxtCostsIncomen.Text = loader.GetString("TxtIncomesHome"); pieSeries.ItemsSource = balance; } } List <Brush> colorBrush = new List <Brush>(); //Pie diagramm with customs color foreach (var item in balance) { //1 => Red if (item.Name == loader.GetString("Fixed")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 229, 20, 0))); } //2 => Braun else if (item.Name == loader.GetString("Foods")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 160, 80, 0))); } ////3 => Green else if (item.Name == loader.GetString("Salary")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 51, 153, 51))); } //4 => DarkKhaki #BDB76B 189, 183, 107 else if (item.Name == loader.GetString("Auto")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 189, 183, 107))); } //5 => HellGreen else if (item.Name == loader.GetString("OtherIncomes")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 162, 193, 57))); } //6 => DarkRed else if (item.Name == loader.GetString("Education")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 216, 0, 115))); } //7 => LightSeaGreen #20B2AA 32, 178, 170 else if (item.Name == loader.GetString("Apps")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 32, 178, 170))); } //8 => Violet else if (item.Name == loader.GetString("Vacation")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 162, 0, 255))); } //9 => Yellow else if (item.Name == loader.GetString("Entertainment")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 254, 190, 23))); } //10 => Grey else if (item.Name == loader.GetString("House")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 208, 179, 136))); } //11 => SandyBrown #F4A460 244, 164, 96 else if (item.Name == loader.GetString("Transport")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 244, 164, 96))); } //12 => Goldenrod #DAA520 218, 165, 32 else if (item.Name == loader.GetString("Private")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 218, 165, 32))); } //13 => Tomato #FF6347 255, 99, 71 else if (item.Name == loader.GetString("OtherCosts")) { colorBrush.Add(new SolidColorBrush(Color.FromArgb(255, 255, 99, 71))); } } pieSeries.ColorModel.CustomBrushes = colorBrush; }
public void ArbeitsZeitTest() { // Tätigkeitsliste erstellen und jeweils zwei Einträge für Mitarbeiter 1 und Mitarbeiter 2 erstellen List <Taetigkeit> testTaetigkeiten = new List <Taetigkeit>(); testTaetigkeiten.Add(new Taetigkeit() { AuftragID = 1, MitarbeiterID = 1, TaetigkeitID = 1, Datum = new DateTime(2017, 12, 4), Name = "Installation 1 M1", StartZeit = new TimeSpan(21, 13, 0), EndZeit = new TimeSpan(23, 54, 0) } ); testTaetigkeiten.Add(new Taetigkeit() { AuftragID = 2, MitarbeiterID = 1, TaetigkeitID = 2, Datum = new DateTime(2019, 9, 9), Name = "Installation 2 M1", StartZeit = new TimeSpan(13, 46, 0), EndZeit = new TimeSpan(19, 32, 0) } ); testTaetigkeiten.Add(new Taetigkeit() { AuftragID = 3, MitarbeiterID = 2, TaetigkeitID = 3, Datum = new DateTime(2018, 5, 17), Name = "Installation 1 M2", StartZeit = new TimeSpan(5, 29, 0), EndZeit = new TimeSpan(11, 28, 0) } ); testTaetigkeiten.Add(new Taetigkeit() { AuftragID = 2, MitarbeiterID = 2, TaetigkeitID = 4, Datum = new DateTime(2019, 1, 4), Name = "Installation 2 M2", StartZeit = new TimeSpan(17, 7, 0), EndZeit = new TimeSpan(22, 56, 0) } ); // Neues StundenDoc für Mitarbeiter 1 erstellen StundenDoc stundenDocM1 = new StundenDoc { Mitarbeiter = new Mitarbeiter { MitarbeiterID = 1 } }; // Tätigkeistliste nach Mitarbeiter 1, Anfangs- und Enddatum filtern stundenDocM1.Tatlist = (from t in testTaetigkeiten where t.MitarbeiterID == stundenDocM1.Mitarbeiter.MitarbeiterID && t.Datum >= new DateTime(2017, 12, 4) && t.Datum <= new DateTime(2018, 10, 20) select t).ToList(); // Neues StundenDoc für Mitarbeiter 2 erstellen StundenDoc stundenDocM2 = new StundenDoc { Mitarbeiter = new Mitarbeiter { MitarbeiterID = 2 } }; // Tätigkeistliste nach Mitarbeiter 2, Anfangs- und Enddatum filtern stundenDocM2.Tatlist = (from t in testTaetigkeiten where t.MitarbeiterID == stundenDocM2.Mitarbeiter.MitarbeiterID && t.Datum >= new DateTime(2018, 5, 17) && t.Datum <= new DateTime(2019, 1, 4) select t).ToList(); // Berechnung der Arbeitszeit überprüfen if (Berechnung.ArbeitsZeit(stundenDocM1) != 2.68) { Assert.Fail(); } if (Berechnung.ArbeitsZeit(stundenDocM2) != 11.8) { Assert.Fail(); } }