Fehlende Klassen hinzugefügt und getestet. Mengengerüst damit bis auf 'Verbindungsstrecken/Wechsel (ausschließlich manuelle Eingabe) fertiggestellt

This commit is contained in:
Simon Schmutzler
2022-03-21 14:43:23 +01:00
parent 64267c69e2
commit 3f76a2cf2f
+212 -76
View File
@@ -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):