/// <summary> /// Hauptmethode /// </summary> public static void Run() { Console.WriteLine("\n\n----- Datenhaltung -----\n"); Console.WriteLine("--- Laden der Datenbank"); // Test der Ausnahmen vor Laden der Datenbank object dummy; CompareAndPrint(Datenbank.IstGeladen, false); ProvokeException(() => dummy = Datenbank.PeriodenIDs); ProvokeException(() => dummy = Datenbank.VolumenProMitarbeiter); ProvokeException(() => dummy = Datenbank.Durchschnittsgrößen(1)); ProvokeException(() => dummy = Datenbank.Personalkosten(1)); ProvokeException(() => dummy = Datenbank.Mitarbeiter(1)); ProvokeException(() => dummy = Datenbank.Periode(1)); ProvokeException(() => dummy = Datenbank.VolumenNeugeschäft(1)); // Test der Plausibilitätsprüfungen ProvokeException(() => Datenbank.DatenbankAuslesen(null)); ProvokeException(() => Datenbank.DatenbankAuslesen(" ")); // Test, ob der Pfad auch wirklich genutzt wird ProvokeException(() => Datenbank.DatenbankAuslesen("AA:cf4rfnu")); // Datenbank laden Datenbank.DatenbankAuslesen(_LOCATION + _DBNAME); Console.WriteLine("--- Testen der Eigenschaften"); Console.WriteLine("IstGeladen"); CompareAndPrint(Datenbank.IstGeladen, true); IsNull(typeof(Datenbank).GetProperty("IstGeladen").GetSetMethod()); Console.WriteLine("PeriodenIDs"); CompareAndPrint(Enumerable.SequenceEqual(Datenbank.PeriodenIDs, new int[] { 1, 2, 3, 4, 5 }), true); IsNull(typeof(Datenbank).GetProperty("PeriodenIDs").GetSetMethod()); Datenbank.PeriodenIDs[2] = 222; CompareAndPrint(Datenbank.PeriodenIDs[2], 3); Console.WriteLine("VolumenProMitarbeiter"); VolumenProMitarbeiter volumenProMitarbeiter = Datenbank.VolumenProMitarbeiter; CompareAndPrint(volumenProMitarbeiter.Konsumkredite, 200); CompareAndPrint(volumenProMitarbeiter.Autokredite, 150); CompareAndPrint(volumenProMitarbeiter.Hypothekenkredite, 50); CompareAndPrint(volumenProMitarbeiter.Girokonten, 900); CompareAndPrint(volumenProMitarbeiter.Spareinlagen, 1200); CompareAndPrint(volumenProMitarbeiter.Termingelder, 1200); IsNull(typeof(Datenbank).GetProperty("VolumenProMitarbeiter").GetSetMethod()); Console.WriteLine("--- Testen der Methoden"); decimal f = 1000.0M; VorgabeZeile <Durchschnittsgrößen>[] vorgabeDurchschnittsgrößen = new VorgabeZeile <Durchschnittsgrößen>[] { new VorgabeZeile <Durchschnittsgrößen>(1, new Durchschnittsgrößen(29 * f, 38 * f, 80 * f, 6 * f, 9 * f, 18 * f)), new VorgabeZeile <Durchschnittsgrößen>(2, new Durchschnittsgrößen(29 * f, 38 * f, 85 * f, 6 * f, 9 * f, 18 * f)), new VorgabeZeile <Durchschnittsgrößen>(3, new Durchschnittsgrößen(30 * f, 40 * f, 90 * f, 6 * f, 10 * f, 20 * f)), new VorgabeZeile <Durchschnittsgrößen>(4, new Durchschnittsgrößen(30 * f, 40 * f, 95 * f, 6 * f, 10 * f, 20 * f)), new VorgabeZeile <Durchschnittsgrößen>(5, new Durchschnittsgrößen(30 * f, 40 * f, 100 * f, 6 * f, 10 * f, 20 * f)) }; TestDurchführen <Durchschnittsgrößen>(vorgabeDurchschnittsgrößen, Datenbank.Durchschnittsgrößen); VorgabeZeile <Mitarbeiter>[] vorgabeMitarbeiter = new VorgabeZeile <Mitarbeiter>[] { new VorgabeZeile <Mitarbeiter>(1, new Mitarbeiter(550, 500, 410, 0.095, 5)), new VorgabeZeile <Mitarbeiter>(2, new Mitarbeiter(560, 510, 400, 0.10, 5)), new VorgabeZeile <Mitarbeiter>(3, new Mitarbeiter(560, 505, 405, 0.09, 5)), new VorgabeZeile <Mitarbeiter>(4, new Mitarbeiter(550, 500, 410, 0.095, 5)), new VorgabeZeile <Mitarbeiter>(5, new Mitarbeiter(560, 510, 400, 0.10, 5)) }; TestDurchführen <Mitarbeiter>(vorgabeMitarbeiter, Datenbank.Mitarbeiter); VorgabeZeile <Periode>[] vorgabePeriode = new VorgabeZeile <Periode>[] { new VorgabeZeile <Periode>(1, new Periode(1, new DateTime(2014, 1, 1), new DateTime(2014, 12, 31))), new VorgabeZeile <Periode>(2, new Periode(2, new DateTime(2015, 1, 1), new DateTime(2015, 12, 31))), new VorgabeZeile <Periode>(3, new Periode(3, new DateTime(2016, 1, 1), new DateTime(2016, 12, 31))), new VorgabeZeile <Periode>(4, new Periode(4, new DateTime(2017, 1, 1), new DateTime(2017, 12, 31))), new VorgabeZeile <Periode>(5, new Periode(5, new DateTime(2018, 1, 1), new DateTime(2018, 12, 31))) }; TestDurchführen <Periode>(vorgabePeriode, Datenbank.Periode); VorgabeZeile <Personalkosten>[] vorgabePersonalkosten = new VorgabeZeile <Personalkosten>[] { new VorgabeZeile <Personalkosten>(1, new Personalkosten(34000.00M, 9100.00M, 17500.00M, 470.00M)), new VorgabeZeile <Personalkosten>(2, new Personalkosten(35000.00M, 9400.00M, 18000.00M, 480.00M)), new VorgabeZeile <Personalkosten>(3, new Personalkosten(36000.00M, 9700.00M, 18500.00M, 490.00M)), new VorgabeZeile <Personalkosten>(4, new Personalkosten(37000.00M, 10000.00M, 19000.00M, 500.00M)), new VorgabeZeile <Personalkosten>(5, new Personalkosten(38000.00M, 10300.00M, 19500.00M, 510.00M)) }; TestDurchführen <Personalkosten>(vorgabePersonalkosten, Datenbank.Personalkosten); f = 10000000.0M; VorgabeZeile <VolumenNeugeschäft>[] vorgabeVolumenNeugeschäft = new VorgabeZeile <VolumenNeugeschäft>[] { new VorgabeZeile <VolumenNeugeschäft>(1, new VolumenNeugeschäft(135 * f, 100 * f, 90 * f, 130 * f, 220 * f, 110 * f)), new VorgabeZeile <VolumenNeugeschäft>(2, new VolumenNeugeschäft(150 * f, 108 * f, 100 * f, 135 * f, 240 * f, 120 * f)), new VorgabeZeile <VolumenNeugeschäft>(3, new VolumenNeugeschäft(140 * f, 110 * f, 95 * f, 140 * f, 222 * f, 115 * f)), new VorgabeZeile <VolumenNeugeschäft>(4, new VolumenNeugeschäft(135 * f, 100 * f, 90 * f, 130 * f, 220 * f, 110 * f)), new VorgabeZeile <VolumenNeugeschäft>(5, new VolumenNeugeschäft(150 * f, 108 * f, 100 * f, 135 * f, 240 * f, 120 * f)) }; TestDurchführen <VolumenNeugeschäft>(vorgabeVolumenNeugeschäft, Datenbank.VolumenNeugeschäft); Console.WriteLine("\n\n--- ERGEBNIS ---\n"); if (_errors > 0) { ColorPrint("Fehler: " + _errors.ToString(), _bad_color); } else { ColorPrint("keine Fehler", _good_color); } Console.ReadKey(); }
/// <summary> /// Hauptmethode /// </summary> public static void Run() { #region Klasse BenötigteMitarbeiter Console.WriteLine("\n\n--- Klasse BenötigteMitarbeiter ---\n"); // vorgegebene Werte const int anzahlKonsumkredite = 10; const int anzahlAutokredite = 20; const int anzahlHypothekenkredite = 30; const int anzahlGirokonten = 40; const int anzahlSpareinlagen = 50; const int anzahlTermingelder = 60; const int backoffice = 70; const int frontoffice = 210; const int insgesamt = 280; const int nachFluktuation = 300; const int nachFluktuationUndTraining1 = 290; const int nachFluktuationUndTraining2 = 280; const int nachFluktuationUndTraining3 = 270; const int neueinstellungen1 = 0; const int entlassungen1 = 10; const int neueinstellungen2 = 0; const int entlassungen2 = 0; const int neueinstellungen3 = 10; const int entlassungen3 = 0; // Objekte anlegen BenötigteMitarbeiter benötigteMitarbeiter1 = new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1); BenötigteMitarbeiter benötigteMitarbeiter2 = new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining2); BenötigteMitarbeiter benötigteMitarbeiter3 = new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining3); // Test auf korrekte Werte der Eigenschaften CompareAndPrint(benötigteMitarbeiter1.Konsumkredite, anzahlKonsumkredite); CompareAndPrint(benötigteMitarbeiter1.Autokredite, anzahlAutokredite); CompareAndPrint(benötigteMitarbeiter1.Hypothekenkredite, anzahlHypothekenkredite); CompareAndPrint(benötigteMitarbeiter1.Girokonten, anzahlGirokonten); CompareAndPrint(benötigteMitarbeiter1.Spareinlagen, anzahlSpareinlagen); CompareAndPrint(benötigteMitarbeiter1.Termingelder, anzahlTermingelder); CompareAndPrint(benötigteMitarbeiter1.Backoffice, backoffice); CompareAndPrint(benötigteMitarbeiter1.Frontoffice, frontoffice); CompareAndPrint(benötigteMitarbeiter1.Insgesamt, insgesamt); CompareAndPrint(benötigteMitarbeiter1.VorhandeneMitarbeiterNachFluktuation, nachFluktuation); CompareAndPrint(benötigteMitarbeiter1.VorhandeneMitarbeiterNachFluktuationUndTraining, nachFluktuationUndTraining1); CompareAndPrint(benötigteMitarbeiter1.Neueinstellungen, neueinstellungen1); CompareAndPrint(benötigteMitarbeiter1.Entlassungen, entlassungen1); CompareAndPrint(benötigteMitarbeiter2.VorhandeneMitarbeiterNachFluktuationUndTraining, nachFluktuationUndTraining2); CompareAndPrint(benötigteMitarbeiter2.Neueinstellungen, neueinstellungen2); CompareAndPrint(benötigteMitarbeiter2.Entlassungen, entlassungen2); CompareAndPrint(benötigteMitarbeiter3.VorhandeneMitarbeiterNachFluktuationUndTraining, nachFluktuationUndTraining3); CompareAndPrint(benötigteMitarbeiter3.Neueinstellungen, neueinstellungen3); CompareAndPrint(benötigteMitarbeiter3.Entlassungen, entlassungen3); // Test auf Nicht-Änderbarkeit der Eigenschaften foreach (PropertyInfo pi in typeof(BenötigteMitarbeiter).GetProperties()) { Console.Write(pi.Name + " änderbar: "); CompareAndPrint(pi.CanWrite, false); } // Test der Konstruktor-Plausibilitätsprüfungen new BenötigteMitarbeiter(0, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1); ProvokeException(() => new BenötigteMitarbeiter(-1, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1)); new BenötigteMitarbeiter(anzahlKonsumkredite, 0, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1); ProvokeException(() => new BenötigteMitarbeiter(anzahlKonsumkredite, -1, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1)); new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, 0, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1); ProvokeException(() => new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, -1, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1)); new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, 0, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1); ProvokeException(() => new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, -1, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1)); new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, 0, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1); ProvokeException(() => new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, -1, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuationUndTraining1)); new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, 0, backoffice, nachFluktuation, nachFluktuationUndTraining1); ProvokeException(() => new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, -1, backoffice, nachFluktuation, nachFluktuationUndTraining1)); new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, 0, nachFluktuation, nachFluktuationUndTraining1); ProvokeException(() => new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, -1, nachFluktuation, nachFluktuationUndTraining1)); new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, 0, 0); ProvokeException(() => new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, -1, nachFluktuationUndTraining1)); new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, 0); ProvokeException(() => new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, -1)); ProvokeException(() => new BenötigteMitarbeiter(anzahlKonsumkredite, anzahlAutokredite, anzahlHypothekenkredite, anzahlGirokonten, anzahlSpareinlagen, anzahlTermingelder, backoffice, nachFluktuation, nachFluktuation + 1)); #endregion #region Klasse Personalaufwand Console.WriteLine("\n\n--- Klasse Personalaufwand ---\n"); // vorgegebene Werte Währung gehaltskosten = 30000M; Währung kostenEinstellungen = 10000M; Währung kostenEntlassungen = 12000M; Währung kostenTraining = 300M; Währung aufwandInsgesamt1 = 40300M; Währung aufwandInsgesamt2 = 42300M; // Objekte anlegen Personalaufwand personalaufwand1 = new Personalaufwand(gehaltskosten, kostenEinstellungen, 0.0M, kostenTraining); Personalaufwand personalaufwand2 = new Personalaufwand(gehaltskosten, 0.0M, kostenEntlassungen, kostenTraining); // Test auf korrekte Werte der Eigenschaften CompareAndPrint(personalaufwand1.Gehaltskosten, gehaltskosten); CompareAndPrint(personalaufwand1.KostenEinstellungen, kostenEinstellungen); CompareAndPrint(personalaufwand2.KostenEinstellungen, new Währung(0.0M)); CompareAndPrint(personalaufwand1.KostenEntlassungen, new Währung(0.0M)); CompareAndPrint(personalaufwand2.KostenEntlassungen, kostenEntlassungen); CompareAndPrint(personalaufwand1.KostenTraining, kostenTraining); CompareAndPrint(personalaufwand1.Insgesamt, aufwandInsgesamt1); CompareAndPrint(personalaufwand2.Insgesamt, aufwandInsgesamt2); // Test auf Nicht-Änderbarkeit der Eigenschaften foreach (PropertyInfo pi in typeof(Personalaufwand).GetProperties()) { Console.Write(pi.Name + " änderbar: "); CompareAndPrint(pi.CanWrite, false); } // Test der Konstruktor-Plausibilitätsprüfungen new Personalaufwand(0.0M, kostenEinstellungen, 0.0M, kostenTraining); ProvokeException(() => new Personalaufwand(-0.01M, kostenEinstellungen, 0.0M, kostenTraining)); new Personalaufwand(gehaltskosten, 0.0M, 0.0M, kostenTraining); ProvokeException(() => new Personalaufwand(gehaltskosten, -0.01M, 0.0M, kostenTraining)); new Personalaufwand(gehaltskosten, kostenEinstellungen, 0.0M, kostenTraining); ProvokeException(() => new Personalaufwand(gehaltskosten, kostenEinstellungen, -0.01M, kostenTraining)); new Personalaufwand(gehaltskosten, kostenEinstellungen, 0.0M, 0.0M); ProvokeException(() => new Personalaufwand(gehaltskosten, kostenEinstellungen, 0.0M, -0.01M)); ProvokeException(() => new Personalaufwand(gehaltskosten, kostenEinstellungen, kostenEntlassungen, kostenTraining)); #endregion #region Klasse Berechnungen Console.WriteLine("\n\n--- Klasse Berechnungen ---\n"); // sind Klasse und Methode statisch? CompareAndPrint(typeof(Berechnungen).IsAbstract && typeof(Berechnungen).IsSealed, true); CompareAndPrint(typeof(Berechnungen).GetMethod("Rechnen").IsStatic, true); // vorgegebene Werte VolumenNeugeschäft volumenNeugeschäftAP = new VolumenNeugeschäft(1500000000.0M, 1080000000.0M, 1000000000.0M, 1350000000.0M, 2400000000.0M, 1200000000.0M); VolumenNeugeschäft volumenNeugeschäftAPB = new VolumenNeugeschäft(1350000000.0M, 972000000.0M, 900000000.0M, 1215000000.0M, 2160000000.0M, 1080000000.0M); Durchschnittsgrößen durchschnittsgrößenAP = new Durchschnittsgrößen(30000.0M, 40000.0M, 100000.0M, 6000.0M, 10000.0M, 20000.0M); VolumenProMitarbeiter volumenProMitarbeiter = new VolumenProMitarbeiter(200, 150, 50, 900, 1200, 1200); int benötigteMitarbeiterBackOfficeAP = 400; int vorhandeneMitarbeiterVP = 1470; Prozent fluktuationAP = new Prozent(0.1); Prozent fluktuationAPB = new Prozent(0.0); int trainigstageProMitarbeiterAP = 5; int trainigstageProMitarbeiterAPB = 2; Personalkosten personalkostenAP = new Personalkosten(38000.0M, 10300.0M, 19500.0M, 510.0M); Berechnungen.Rechnen(volumenNeugeschäftAP, durchschnittsgrößenAP, volumenProMitarbeiter, benötigteMitarbeiterBackOfficeAP, vorhandeneMitarbeiterVP, fluktuationAP, trainigstageProMitarbeiterAP, personalkostenAP, out Anzahlen anzahlen, out BenötigteMitarbeiter benötigteMitarbeiter, out Personalaufwand personalaufwand); Berechnungen.Rechnen(volumenNeugeschäftAPB, durchschnittsgrößenAP, volumenProMitarbeiter, benötigteMitarbeiterBackOfficeAP, vorhandeneMitarbeiterVP, fluktuationAPB, trainigstageProMitarbeiterAPB, personalkostenAP, out Anzahlen anzahlenB, out BenötigteMitarbeiter benötigteMitarbeiterB, out Personalaufwand personalaufwandB); // Test auf korrekte Werte der Ergebnisse CompareAndPrint(anzahlen.Konsumkredite, 50000); CompareAndPrint(anzahlen.Autokredite, 27000); CompareAndPrint(anzahlen.Hypothekenkredite, 10000); CompareAndPrint(anzahlen.Girokonten, 225000); CompareAndPrint(anzahlen.Spareinlagen, 240000); CompareAndPrint(anzahlen.Termingelder, 60000); CompareAndPrint(benötigteMitarbeiter.Konsumkredite, 250); CompareAndPrint(benötigteMitarbeiter.Autokredite, 180); CompareAndPrint(benötigteMitarbeiter.Hypothekenkredite, 200); CompareAndPrint(benötigteMitarbeiter.Girokonten, 250); CompareAndPrint(benötigteMitarbeiter.Spareinlagen, 200); CompareAndPrint(benötigteMitarbeiter.Termingelder, 50); CompareAndPrint(benötigteMitarbeiter.Frontoffice, 1130); CompareAndPrint(benötigteMitarbeiter.Backoffice, 400); CompareAndPrint(benötigteMitarbeiter.Insgesamt, 1530); CompareAndPrint(benötigteMitarbeiter.VorhandeneMitarbeiterNachFluktuation, 1323); CompareAndPrint(benötigteMitarbeiter.VorhandeneMitarbeiterNachFluktuationUndTraining, 1293); CompareAndPrint(benötigteMitarbeiter.Neueinstellungen, 237); CompareAndPrint(benötigteMitarbeiter.Entlassungen, 0); CompareAndPrint(personalaufwand.Gehaltskosten, new Währung(58140000.0M)); CompareAndPrint(personalaufwand.KostenEinstellungen, new Währung(2441100.0M)); CompareAndPrint(personalaufwand.KostenEntlassungen, new Währung(0.0M)); CompareAndPrint(personalaufwand.KostenTraining, new Währung(3901500.0M)); CompareAndPrint(personalaufwand.Insgesamt, new Währung(64482600.0M)); CompareAndPrint(anzahlenB.Konsumkredite, 45000); CompareAndPrint(anzahlenB.Autokredite, 24300); CompareAndPrint(anzahlenB.Hypothekenkredite, 9000); CompareAndPrint(anzahlenB.Girokonten, 202500); CompareAndPrint(anzahlenB.Spareinlagen, 216000); CompareAndPrint(anzahlenB.Termingelder, 54000); CompareAndPrint(benötigteMitarbeiterB.Konsumkredite, 225); CompareAndPrint(benötigteMitarbeiterB.Autokredite, 162); CompareAndPrint(benötigteMitarbeiterB.Hypothekenkredite, 180); CompareAndPrint(benötigteMitarbeiterB.Girokonten, 225); CompareAndPrint(benötigteMitarbeiterB.Spareinlagen, 180); CompareAndPrint(benötigteMitarbeiterB.Termingelder, 45); CompareAndPrint(benötigteMitarbeiterB.Frontoffice, 1017); CompareAndPrint(benötigteMitarbeiterB.Backoffice, 400); CompareAndPrint(benötigteMitarbeiterB.Insgesamt, 1417); CompareAndPrint(benötigteMitarbeiterB.VorhandeneMitarbeiterNachFluktuation, 1470); CompareAndPrint(benötigteMitarbeiterB.VorhandeneMitarbeiterNachFluktuationUndTraining, 1457); CompareAndPrint(benötigteMitarbeiterB.Neueinstellungen, 0); CompareAndPrint(benötigteMitarbeiterB.Entlassungen, 40); CompareAndPrint(personalaufwandB.Gehaltskosten, new Währung(53846000.0M)); CompareAndPrint(personalaufwandB.KostenEinstellungen, new Währung(0.0M)); CompareAndPrint(personalaufwandB.KostenEntlassungen, new Währung(780000.0M)); CompareAndPrint(personalaufwandB.KostenTraining, new Währung(1445340.0M)); CompareAndPrint(personalaufwandB.Insgesamt, new Währung(56071340.0M)); // Test der Plausibilitätsprüfungen ProvokeException(() => Berechnungen.Rechnen(null, durchschnittsgrößenAP, volumenProMitarbeiter, benötigteMitarbeiterBackOfficeAP, vorhandeneMitarbeiterVP, fluktuationAP, trainigstageProMitarbeiterAP, personalkostenAP, out anzahlen, out benötigteMitarbeiter, out personalaufwand)); ProvokeException(() => Berechnungen.Rechnen(volumenNeugeschäftAP, null, volumenProMitarbeiter, benötigteMitarbeiterBackOfficeAP, vorhandeneMitarbeiterVP, fluktuationAP, trainigstageProMitarbeiterAP, personalkostenAP, out anzahlen, out benötigteMitarbeiter, out personalaufwand)); ProvokeException(() => Berechnungen.Rechnen(volumenNeugeschäftAP, durchschnittsgrößenAP, null, benötigteMitarbeiterBackOfficeAP, vorhandeneMitarbeiterVP, fluktuationAP, trainigstageProMitarbeiterAP, personalkostenAP, out anzahlen, out benötigteMitarbeiter, out personalaufwand)); ProvokeException(() => Berechnungen.Rechnen(volumenNeugeschäftAP, durchschnittsgrößenAP, volumenProMitarbeiter, -1, vorhandeneMitarbeiterVP, fluktuationAP, trainigstageProMitarbeiterAP, personalkostenAP, out anzahlen, out benötigteMitarbeiter, out personalaufwand)); ProvokeException(() => Berechnungen.Rechnen(volumenNeugeschäftAP, durchschnittsgrößenAP, volumenProMitarbeiter, benötigteMitarbeiterBackOfficeAP, -1, fluktuationAP, trainigstageProMitarbeiterAP, personalkostenAP, out anzahlen, out benötigteMitarbeiter, out personalaufwand)); ProvokeException(() => Berechnungen.Rechnen(volumenNeugeschäftAP, durchschnittsgrößenAP, volumenProMitarbeiter, benötigteMitarbeiterBackOfficeAP, vorhandeneMitarbeiterVP, new Prozent(-0.001), trainigstageProMitarbeiterAP, personalkostenAP, out anzahlen, out benötigteMitarbeiter, out personalaufwand)); ProvokeException(() => Berechnungen.Rechnen(volumenNeugeschäftAP, durchschnittsgrößenAP, volumenProMitarbeiter, benötigteMitarbeiterBackOfficeAP, vorhandeneMitarbeiterVP, new Prozent(1.001), trainigstageProMitarbeiterAP, personalkostenAP, out anzahlen, out benötigteMitarbeiter, out personalaufwand)); ProvokeException(() => Berechnungen.Rechnen(volumenNeugeschäftAP, durchschnittsgrößenAP, volumenProMitarbeiter, benötigteMitarbeiterBackOfficeAP, vorhandeneMitarbeiterVP, fluktuationAP, -1, personalkostenAP, out anzahlen, out benötigteMitarbeiter, out personalaufwand)); ProvokeException(() => Berechnungen.Rechnen(volumenNeugeschäftAP, durchschnittsgrößenAP, volumenProMitarbeiter, benötigteMitarbeiterBackOfficeAP, vorhandeneMitarbeiterVP, fluktuationAP, trainigstageProMitarbeiterAP, null, out anzahlen, out benötigteMitarbeiter, out personalaufwand)); #endregion Console.WriteLine("\n\n--- ERGEBNIS ---\n"); if (_errors > 0) { ColorPrint("Fehler: " + _errors.ToString(), _bad_color); } else { ColorPrint("keine Fehler", _good_color); } Console.ReadKey(); }