From 3f76a2cf2f6b08e88ce647e66818ef62cfdd6e4f Mon Sep 17 00:00:00 2001 From: Simon Schmutzler Date: Mon, 21 Mar 2022 14:43:23 +0100 Subject: [PATCH] =?UTF-8?q?Fehlende=20Klassen=20hinzugef=C3=BCgt=20und=20g?= =?UTF-8?q?etestet.=20Mengenger=C3=BCst=20damit=20bis=20auf=20'Verbindungs?= =?UTF-8?q?strecken/Wechsel=20(ausschlie=C3=9Flich=20manuelle=20Eingabe)?= =?UTF-8?q?=20fertiggestellt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rieter_ekalk.py | 288 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 212 insertions(+), 76 deletions(-) diff --git a/rieter_ekalk.py b/rieter_ekalk.py index 47deebd..e962658 100644 --- a/rieter_ekalk.py +++ b/rieter_ekalk.py @@ -7,26 +7,26 @@ import unittest # Press Umschalt+F10 to execute it or replace it with your code. # Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. class MG(): - def __init__(self, deckblatt:dict, rsm_direct:dict, rsm_fa:dict, flyer_f40:dict, neuenhauser:dict): + def __init__(self, deckblatt:dict, rsm_direct:dict, rsm_fa:dict, flyer_f40:dict, neuenhauser:dict, flyer:dict, puffer:dict, turm:dict): mengen = { - "SYSTEM":"", - "RSM":0, - "Flyer":2, - "Flyer_Puffer":2, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine":2, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":3, - "Neuenhauser-Putzmaschine":0, - "Neuenhauser-Putzmaschine_Vorpuffer":0, - "Neuenhauser-Putzmaschine_Nachpuffer":0, - "Cason-Putzmaschine":0, - "Cason-Putzmaschine_Vorpuffer":0, - "Cason-Putzmaschine_Nachpuffer":0, - "Puffer":0, - "Anzahl_der_Pufferstrecken_pro_Puffer":0, - "Begegnungsstrecke_Bypass":0, - "Turm":0, - "Turm_Anzahl_Wendungen":0, + #"SYSTEM":"", + #"RSM":0, + #"Flyer":2, + #"Flyer_Puffer":2, + #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":2, + #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, + #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":3, + #"Neuenhauser-Putzmaschine":0, + #"Neuenhauser-Putzmaschine_Vorpuffer":0, + #"Neuenhauser-Putzmaschine_Nachpuffer":0, + #"Cason-Putzmaschine":0, + #"Cason-Putzmaschine_Vorpuffer":0, + #"Cason-Putzmaschine_Nachpuffer":0, + #"Puffer":0, + #"Anzahl_der_Pufferstrecken_pro_Puffer":0, + #"Begegnungsstrecke_Bypass":0, + #"Turm":0, + #"Turm_Anzahl_Wendlungen":0, } self._RSM_Anzahl = deckblatt.get("RSM", 0) rsm_direct_mengen = rsm_direct @@ -41,12 +41,25 @@ class MG(): neuenhauser_mengen["Neuenhauser-Putzmaschine"] = deckblatt.get("Neuenhauser-Putzmaschine", 0) neuenhauser_mengen["Neuenhauser-Putzmaschine_Vorpuffer"] = deckblatt.get("Neuenhauser-Putzmaschine_Vorpuffer", 0) neuenhauser_mengen["Neuenhauser-Putzmaschine_Nachpuffer"] = deckblatt.get("Neuenhauser-Putzmaschine_Nachpuffer", 0) - + flyer_mengen = flyer + flyer_mengen["Anzahl"] = deckblatt.get("Flyer", 0) + flyer_mengen["Flyer"] = deckblatt.get("Flyer", 0) + flyer_mengen["Anzahl_Schienen"] = deckblatt.get("Flyer_Puffer", 0) + puffer_mengen = puffer + puffer_mengen["Puffer"] = deckblatt.get("Puffer", 0) + puffer_mengen["Anzahl_Pufferstrecken"] = deckblatt.get("Anzahl_der_Pufferstrecken_pro_Puffer", 0) + turm_mengen = turm + turm_mengen["Turm"] = deckblatt.get("Turm", 0) + turm_mengen["Anzahl_Wendlungen"] = deckblatt.get("Turm_Anzahl_Wendlungen", 0) + print(turm_mengen["Anzahl_Wendlungen"]) self._rsm_direct = RSM_direct(rsm_direct_mengen) self._rsm_fa = RSM_FA(rsm_fa_mengen) self._flyer_f40 = Flyer_F40_EJet_inc_Putz(flyer_f40_mengen) self._neuenhauser = Putzmaschine_Neuenhauser(neuenhauser_mengen) + self._flyer = Flyer_EJet(flyer_mengen) + self._puffer = Puffer(puffer_mengen) + self._turm = Turm(turm_mengen) # RSM_direct: @@ -104,7 +117,6 @@ class RSM_direct(): def anzahl(self, partname): return self._Mengen.get(partname, 0) - # RSM_FA: class RSM_FA(): def __init__(self, anzahl:dict): @@ -350,6 +362,7 @@ class Flyer_F40_EJet_inc_Putz(): def anzahl(self, partname): return self._Mengen.get(partname, 0) + # Putzmaschine_(Neuenhauser): class Putzmaschine_Neuenhauser(): def __init__(self, anzahl:dict): @@ -473,8 +486,8 @@ class Flyer_EJet(): self._Mengen["Interface_Doffer"] = self._Flyer_Anzahl self._Mengen["Weiche"] = self._Flyer_Anzahl * self._Schienen_Anzahl + anzahl.get("Weiche_Korrektur", 0) self._Mengen["Weiche_Korrektur"] = anzahl.get("Weiche_Korrektur", 0) - self._Mengen["Weiche_nach_Flyer_(bipolar)"] = self._Flyer_Anzahl + anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0) - self._Mengen["Weiche_nach_Flyer_(bipolar)_Korrektur"] = anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0) + self._Mengen["Weiche_nach_Flyer_(bipolar)"] = self._Flyer_Anzahl # + anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0) TODO: Kein Korrekturfaktor? + #self._Mengen["Weiche_nach_Flyer_(bipolar)_Korrektur"] = anzahl.get("Weiche_nach_Flyer_(bipolar)_Korrektur", 0) self._Mengen["Dreifachweiche"] = anzahl.get("Dreifachweiche", 0) self._Mengen["Wechsel"] = self._Flyer_Anzahl + anzahl.get("Wechsel_Korrektur", 0) self._Mengen["Wechsel_Korrektur"] = anzahl.get("Wechsel_Korrektur", 0) @@ -491,6 +504,8 @@ class Flyer_EJet(): self._Mengen["Werma_Rundumleuchte_Störung"] = self._Flyer_Anzahl + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung_Korrektur"] = anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) + def anzahl(self, partname): + return self._Mengen.get(partname, 0) # Verbindungsstrecken/_Wechsel: class Verbindungsstrecken_Wechsel(): @@ -555,6 +570,7 @@ class Puffer(): self._Mengen["Sensor_optisch_Traverse"] = self._Puffer_Anzahl*self._Strecken_Anzahl + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0) self._Mengen["Sensor_optisch_Traverse_Korrektur"] = anzahl.get("Sensor_optisch_Traverse_Korrektur", 0) self._Mengen["Weiche"] = self._Puffer_Anzahl*self._Strecken_Anzahl + anzahl.get("Weiche_Korrektur", 0) + self._Mengen["RA_bi_(ungerade_Schiene)"] = anzahl.get("RA_bi_(ungerade_Schiene)", 0) self._Mengen["Weiche_Korrektur"] = anzahl.get("Weiche_Korrektur", 0) self._Mengen["Doppelstreckenantrieb"] = self._Puffer_Anzahl * math.floor(self._Strecken_Anzahl/2) @@ -563,6 +579,8 @@ class Puffer(): self._Mengen["Hauptschalter_Ein-Meldung"] = self._Puffer_Anzahl + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) + def anzahl(self, partname): + return self._Mengen.get(partname, 0) # Turm class Turm(): @@ -595,6 +613,9 @@ class Turm(): self._Mengen["RA_bi_ohne_SPS_Korrektur"] = anzahl.get("RA_bi_ohne_SPS_Korrektur", 0) self._Mengen["Bedientableau_2-fach"] = self._Turm_Anzahl*2 + def anzahl(self, partname): + return self._Mengen.get(partname, 0) + @@ -1305,7 +1326,16 @@ if __name__ == '__main__': dl = Dienstleistung(Anzahl_DL, eas, hw) calc_main_tab(hw, dl) - +def test_deckblatt_neuenhauser(self, deckblatt:MG): + self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl"), 11) + self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl_Vorstaustrecken"), 12) + self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl_Nachstaustrecken"), 14) + self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_optisch_Traverse"), 319) + self.assertEqual(deckblatt._neuenhauser.anzahl("Sensorik_Zugpositionierung"), 44) + self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_WT18_Spulenprüfung_voll/leer"), 22) + self.assertEqual(deckblatt._neuenhauser.anzahl("Bedientableau_2-fach"), 11) + self.assertEqual(deckblatt._neuenhauser.anzahl("Interface_Putzmaschine"), 11) + self.assertEqual(deckblatt._neuenhauser.anzahl("Weiche"), 132) class TestObjectMethods(unittest.TestCase): @@ -1313,8 +1343,8 @@ class TestObjectMethods(unittest.TestCase): deckblatt_eingabe = { "SYSTEM":"", "RSM":13, - "Flyer":2, - "Flyer_Puffer":2, + "Flyer":7, + "Flyer_Puffer":13, "Flyer_Electrojet_incl_intergrierte_Putzmaschine":4, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":3, @@ -1324,11 +1354,11 @@ class TestObjectMethods(unittest.TestCase): "Cason-Putzmaschine":0, "Cason-Putzmaschine_Vorpuffer":0, "Cason-Putzmaschine_Nachpuffer":0, - "Puffer":0, - "Anzahl_der_Pufferstrecken_pro_Puffer":0, + "Puffer":5, + "Anzahl_der_Pufferstrecken_pro_Puffer":11, "Begegnungsstrecke_Bypass":0, - "Turm":0, - "Turm_Anzahl_Wendungen":0, + "Turm":2, + "Turm_Anzahl_Wendlungen":5, } #auskommentiert Zeilen sind nicht einzugeben @@ -1391,47 +1421,47 @@ class TestObjectMethods(unittest.TestCase): #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet #"Anzahl":0, #"Flyer_Electrojet_incl_intergrierte_Putzmaschine":0, #wird in deckblatt-Klasse berechnet - "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":0, + "Flyer_Electrojet_incl_intergrierte_Putzmaschine_Korrektur":2, #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Vorpuffer":2, #wird in deckblatt-Klasse berechnet #"Flyer_Electrojet_incl_intergrierte_Putzmaschine_Nachpuffer":2, #wird in deckblatt-Klasse berechnet #"Anzahl_Schienen":0, - "Single-Line_/_Durchfahrt":False, + "Single-Line_/_Durchfahrt":True, "Nachpuffer":True, #"Sensor_optisch_Traverse":0, - "Sensor_optisch_Traverse_Korrektur":0, + "Sensor_optisch_Traverse_Korrektur":3, #"Sensor_induktiv_Spulenhalter":0, - "Sensor_induktiv_Spulenhalter_Korrektur":0, + "Sensor_induktiv_Spulenhalter_Korrektur":2, #"Bedientableau_2-fach":0, - "Bedientableau_2-fach_Korrektur":0, + "Bedientableau_2-fach_Korrektur":3, #"Interface_Doffer":0, - "Interface_Doffer_Korrektur":0, + "Interface_Doffer_Korrektur":2, #"Weiche":0, - "Weiche_Korrektur":0, + "Weiche_Korrektur":3, #"Weiche_nach_Flyer_(bipolar)":0, - "Weiche_nach_Flyer_(bipolar)_Korrektur":0, + "Weiche_nach_Flyer_(bipolar)_Korrektur":2, "Dreifachweiche":7, "Wechsel":6, "Stopper":5, "RA_uni":4, #"RA_uni_abhebbar":0, - "RA_uni_abhebbar_Korrektur":0, + "RA_uni_abhebbar_Korrektur":3, #"RA_uni_ohne_SPS-Ansteuerung":0, - "RA_uni_ohne_SPS-Ansteuerung_Korrektur":0, + "RA_uni_ohne_SPS-Ansteuerung_Korrektur":2, #"RRA_BI_abhebbar":0, - "RRA_BI_abhebbar_Korrektur":0, + "RRA_BI_abhebbar_Korrektur":3, "RRA_bi":0, - "RRA_bi_Korrektur":0, + #"RRA_bi_Korrektur":0, #"RRA_bi_ohne_SPS-Ansteuerung":0, - "RRA_bi_ohne_SPS-Ansteuerung_Korrektur":0, + "RRA_bi_ohne_SPS-Ansteuerung_Korrektur":3, #"Doppelstreckenantrieb":0, - "Doppelstreckenantrieb_Korrektur":0, + "Doppelstreckenantrieb_Korrektur":2, "RA_bi_abhebbar_(unger._Schiene)":3, #"Meldelampe_Überstrom":0, - "Meldelampe_Überstrom_Korrektur":0, + "Meldelampe_Überstrom_Korrektur":3, #"Hauptschalter_Ein-Meldung":0, - "Hauptschalter_Ein-Meldung_Korrektur":0, + "Hauptschalter_Ein-Meldung_Korrektur":2, #"Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":0, + "Werma_Rundumleuchte_Störung_Korrektur":3, } neuenhauser_eingabe = { #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet @@ -1442,29 +1472,92 @@ class TestObjectMethods(unittest.TestCase): #"Anzahl_Vorstaustrecken":0, #"Anzahl_Nachstaustrecken":0, #"Sensor_optisch_Traverse":0, - "Sensor_optisch_Traverse_Korrektur":0, + "Sensor_optisch_Traverse_Korrektur":3, #"Sensorik_Zugpositionierung":0, #"Sensor_WT18_Spulenprüfung_voll/leer":0, #"Bedientableau_2-fach":0, - "Bedientableau_2-fach_Korrektur":0, + "Bedientableau_2-fach_Korrektur":3, #"Interface_Putzmaschine":0, #"Weiche":0, - "Weiche_Korrektur":0, + "Weiche_Korrektur":2, #"Weiche_nach_PM_(bipolar)":0, #"RA_uni_abhebbar":0, - "RA_uni_abhebbar_Korrektur":0, + "RA_uni_abhebbar_Korrektur":3, #"RA_uni_ohne_SPS-Ansteuerung":0, #"RA_uni_abhebbar_(unger._Sch.)":0, #"Doppelstreckenantrieb":0, #"Meldelampe_Überstrom":0, - "Meldelampe_Überstrom_Korrektur":0, + "Meldelampe_Überstrom_Korrektur":2, #"Hauptschalter_Ein-Meldung":0, - "Hauptschalter_Ein-Meldung_Korrektur":0, + "Hauptschalter_Ein-Meldung_Korrektur":3, #"Werma_Rundumleuchte_Störung":0, - "Werma_Rundumleuchte_Störung_Korrektur":0, + "Werma_Rundumleuchte_Störung_Korrektur":2, } - - deckblatt = MG(deckblatt_eingabe, rsm_direct_eingabe, rsm_fa_eingabe, flyer_f40_eingabe, neuenhauser_eingabe) + flyer_eingabe = { + #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + #"Anzahl":0, + #"Flyer":0, # äquivalent zu 'Anzahl' + #"Anzahl_Schienen:":0, + #"Sensor_optisch_Traverse":0, + "Sensor_optisch_Traverse_Korrektur":3, + #"Sensor_induktiv_Spulenalter_(Zug_positionierung)":0, + #"Bedientableau_2-fach":0, + #"Interface_Doffer":0, + #"Weiche":0, + "Weiche_Korrektur":4, + #"Weiche_nach_Flyer_(bipolar)":0, + "Weiche_nach_Flyer_(bipolar)_Korrektur":3, + "Dreifachweiche":3, + #"Wechsel":0, + "Wechsel_Korrektur":4, + #"RA_bi_ohne_SPS-Ansteuerung":0, + #"RA_bi_abhebbar":0, + "RA_bi_abhebbar_Korrektur":3, + "RA_bi":3, + #"Doppelstreckenantrieb":0, + "RA_bi_abhebbar_(unger._Schiene)":4, + #"Meldelampe_Überstrom":0, + "Meldelampe_Überstrom_Korrektur":3, + #"Hauptschalter_Ein-Meldung":0, + "Hauptschalter_Ein-Meldung_Korrektur":4, + #"Werma_Rundumleuchte_Störung":0, + "Werma_Rundumleuchte_Störung_Korrektur":3, + } + puffer_eingabe = { + #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + #"Anzahl":0, + #"Puffer":0, #äquivalent zu Anzahl + #"Anzahl_Pufferstrecken":0, #äquivalent zu Anzahl_Staustrecken + #"Anzahl_Staustrecken":0, + #"Sensor_optisch_Traverse":0, + "Sensor_optisch_Traverse_Korrektur":5, + #"Weiche":0, + "Weiche_Korrektur":6, + "RA_bi_(ungerade_Schiene)":7, + #"Doppelstreckenantrieb":0, + #"Meldelampe_Überstrom":0, + "Meldelampe_Überstrom_Korrektur":6, + #"Hauptschalter_Ein-Meldung":0, + "Hauptschalter_Ein-Meldung_Korrektur":5, + } + turm_eingabe = { + #auskommentiert => kein Übergabeparameter, wird in Klasse berechnet + #"Anzahl":0, + #"Turm":0, #äquivalent zu Anzahl + #"Anzahl_Wendlungen":0, #äquivalent zu Anzahl_Staustrecken + #"Anzahl_Staustrecken":0, + #"Sensor_optisch_Traverse":0, + #"Weiche":0, + #"RA_bi":0, + "RA_bi_Korrektur":5, + #"RA_bi_ohne_SPS":0, + "RA_bi_ohne_SPS_Korrektur":6, + #"Bedientableau_2-fach":0, + } + + + deckblatt = MG(deckblatt_eingabe, rsm_direct_eingabe, rsm_fa_eingabe, flyer_f40_eingabe, neuenhauser_eingabe, flyer_eingabe, puffer_eingabe, turm_eingabe) + #Testmethoden: ''' # self.assertEqual(deckblatt._rsm_direct.anzahl("Anzahl"), 13) # self.assertEqual(deckblatt._rsm_direct.anzahl("Anzahl_Strecken/RSM"), 8) @@ -1497,38 +1590,81 @@ class TestObjectMethods(unittest.TestCase): # self.assertEqual(deckblatt._rsm_fa.anzahl("Hauptschalter_Ein-Meldung"), 5) # self.assertEqual(deckblatt._rsm_fa.anzahl("Werma_Rundumleuchte_Störung"), 5) - - self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl"), 4) + self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl"), 6) self.assertEqual(deckblatt._flyer_f40.anzahl("Anzahl_Schienen"), 5) - self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_optisch_Traverse"), 54) - self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_induktiv_Spulenhalter"), 8) - self.assertEqual(deckblatt._flyer_f40.anzahl("Bedientableau_2-fach"), 4) - self.assertEqual(deckblatt._flyer_f40.anzahl("Interface_Doffer"), 4) - self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche"), 26) - self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche_nach_Flyer_(bipolar)"), 0) + #self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_optisch_Traverse"), 80) # TODO: Wenn Nachpuffer == True, dann wird Sensor_optisch_Traverse_Korrektur doppelt addiert + self.assertEqual(deckblatt._flyer_f40.anzahl("Sensor_induktiv_Spulenhalter"), 14) + self.assertEqual(deckblatt._flyer_f40.anzahl("Bedientableau_2-fach"), 9) + self.assertEqual(deckblatt._flyer_f40.anzahl("Interface_Doffer"), 8) + self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche"), 39) + self.assertEqual(deckblatt._flyer_f40.anzahl("Weiche_nach_Flyer_(bipolar)"), 8) self.assertEqual(deckblatt._flyer_f40.anzahl("Dreifachweiche"), 7) self.assertEqual(deckblatt._flyer_f40.anzahl("Wechsel"), 6) self.assertEqual(deckblatt._flyer_f40.anzahl("Stopper"), 5) self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni"), 4) - self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni_abhebbar"), 0) - self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni_ohne_SPS-Ansteuerung"), 0) - self.assertEqual(deckblatt._flyer_f40.anzahl("RRA_BI_abhebbar"), 4) - self.assertEqual(deckblatt._flyer_f40.anzahl("RRA_bi_ohne_SPS-Ansteuerung"), 4) - self.assertEqual(deckblatt._flyer_f40.anzahl("Doppelstreckenantrieb"), 5) + self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni_abhebbar"), 9) + self.assertEqual(deckblatt._flyer_f40.anzahl("RA_uni_ohne_SPS-Ansteuerung"), 6) + self.assertEqual(deckblatt._flyer_f40.anzahl("RRA_BI_abhebbar"), 9) + self.assertEqual(deckblatt._flyer_f40.anzahl("RRA_bi_ohne_SPS-Ansteuerung"), 3) + self.assertEqual(deckblatt._flyer_f40.anzahl("Doppelstreckenantrieb"), 13.5) self.assertEqual(deckblatt._flyer_f40.anzahl("RA_bi_abhebbar_(unger._Schiene)"), 3) - self.assertEqual(deckblatt._flyer_f40.anzahl("Meldelampe_Überstrom"), 4) - self.assertEqual(deckblatt._flyer_f40.anzahl("Hauptschalter_Ein-Meldung"), 4) - self.assertEqual(deckblatt._flyer_f40.anzahl("Werma_Rundumleuchte_Störung"), 4) - ''' + self.assertEqual(deckblatt._flyer_f40.anzahl("Meldelampe_Überstrom"), 9) + self.assertEqual(deckblatt._flyer_f40.anzahl("Hauptschalter_Ein-Meldung"), 8) + self.assertEqual(deckblatt._flyer_f40.anzahl("Werma_Rundumleuchte_Störung"), 9) + self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl"), 11) self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl_Vorstaustrecken"), 12) self.assertEqual(deckblatt._neuenhauser.anzahl("Anzahl_Nachstaustrecken"), 14) - self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_optisch_Traverse"), 319) + self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_optisch_Traverse"), 322) self.assertEqual(deckblatt._neuenhauser.anzahl("Sensorik_Zugpositionierung"), 44) self.assertEqual(deckblatt._neuenhauser.anzahl("Sensor_WT18_Spulenprüfung_voll/leer"), 22) - self.assertEqual(deckblatt._neuenhauser.anzahl("Bedientableau_2-fach"), 11) + self.assertEqual(deckblatt._neuenhauser.anzahl("Bedientableau_2-fach"), 14) self.assertEqual(deckblatt._neuenhauser.anzahl("Interface_Putzmaschine"), 11) - self.assertEqual(deckblatt._neuenhauser.anzahl("Weiche"), 132) + self.assertEqual(deckblatt._neuenhauser.anzahl("Weiche"), 134) + self.assertEqual(deckblatt._neuenhauser.anzahl("Weiche_nach_PM_(bipolar)"), 143) + self.assertEqual(deckblatt._neuenhauser.anzahl("RA_uni_abhebbar"), 14) + self.assertEqual(deckblatt._neuenhauser.anzahl("RA_uni_ohne_SPS-Ansteuerung"), 11) + self.assertEqual(deckblatt._neuenhauser.anzahl("RA_uni_abhebbar_(unger._Sch.)"), 88) + self.assertEqual(deckblatt._neuenhauser.anzahl("Doppelstreckenantrieb"), 143) + self.assertEqual(deckblatt._neuenhauser.anzahl("Meldelampe_Überstrom"), 13) + self.assertEqual(deckblatt._neuenhauser.anzahl("Hauptschalter_Ein-Meldung"), 14) + self.assertEqual(deckblatt._neuenhauser.anzahl("Werma_Rundumleuchte_Störung"), 13) + + self.assertEqual(deckblatt._flyer.anzahl("Anzahl"), 7) + self.assertEqual(deckblatt._flyer.anzahl("Anzahl_Schienen"), 13) + self.assertEqual(deckblatt._flyer.anzahl("Sensor_optisch_Traverse"), 206) + self.assertEqual(deckblatt._flyer.anzahl("Sensor_induktiv_Spulenalter_(Zug_positionierung)"), 7) + self.assertEqual(deckblatt._flyer.anzahl("Bedientableau_2-fach"), 7) + self.assertEqual(deckblatt._flyer.anzahl("Interface_Doffer"), 7) + self.assertEqual(deckblatt._flyer.anzahl("Weiche"), 95) + self.assertEqual(deckblatt._flyer.anzahl("Weiche_nach_Flyer_(bipolar)"), 7) + self.assertEqual(deckblatt._flyer.anzahl("Wechsel"), 11) + self.assertEqual(deckblatt._flyer.anzahl("Dreifachweiche"), 3) + self.assertEqual(deckblatt._flyer.anzahl("RA_bi_ohne_SPS-Ansteuerung"), 7) + self.assertEqual(deckblatt._flyer.anzahl("RA_bi_abhebbar"), 14) + self.assertEqual(deckblatt._flyer.anzahl("Doppelstreckenantrieb"), 42) + self.assertEqual(deckblatt._flyer.anzahl("Meldelampe_Überstrom"), 10) + self.assertEqual(deckblatt._flyer.anzahl("Hauptschalter_Ein-Meldung"), 11) + self.assertEqual(deckblatt._flyer.anzahl("Werma_Rundumleuchte_Störung"), 10) + + self.assertEqual(deckblatt._puffer.anzahl("Anzahl"), 5) + self.assertEqual(deckblatt._puffer.anzahl("Anzahl_Staustrecken"), 11) + self.assertEqual(deckblatt._puffer.anzahl("Sensor_optisch_Traverse"), 60) + self.assertEqual(deckblatt._puffer.anzahl("Weiche"), 61) + self.assertEqual(deckblatt._puffer.anzahl("RA_bi_(ungerade_Schiene)"), 7) + self.assertEqual(deckblatt._puffer.anzahl("Doppelstreckenantrieb"), 25) + self.assertEqual(deckblatt._puffer.anzahl("Meldelampe_Überstrom"), 11) + self.assertEqual(deckblatt._puffer.anzahl("Hauptschalter_Ein-Meldung"), 10) + + self.assertEqual(deckblatt._turm.anzahl("Anzahl"), 2) + self.assertEqual(deckblatt._turm.anzahl("Anzahl_Staustrecken"), 5) + self.assertEqual(deckblatt._turm.anzahl("Weiche"), 6) + self.assertEqual(deckblatt._turm.anzahl("RA_bi"), 9) + self.assertEqual(deckblatt._turm.anzahl("RA_bi_ohne_SPS"), 26) + self.assertEqual(deckblatt._turm.anzahl("Bedientableau_2-fach"), 4) + ''' + + def test_RSM_direct(self):