class CalcTest(unittest.TestCase): def setUp(self): self.myCalc = Calc() def test_add(self): self.assertEqual(4, self.myCalc.add(2, 2)) def test_sub(self): self.assertEqual(3, self.myCalc.sub(6, 3))
def test__calc_size(self): """ Überprüft die Berechnung der Größen-Eigenschaft. """ for age in range(Config.AGE_ADULT - 1, Config.AGE_ADULT + 1): results_expected = tuple( range(Config.SIZE_DEFAULT["Adult"] - 1, Config.SIZE_DEFAULT["Adult"] + 2)) if age < Config.AGE_ADULT: results_expected = tuple( range(Config.SIZE_DEFAULT["Kid"] - 1, Config.SIZE_DEFAULT["Kid"] + 2)) for large in ( False, True, ): for small in ( False, True, ): self.assertIn( Calc.calc_size(age, is_giant=large, is_small=small), results_expected)
def test__calc_initiative_monster(self): """ Überprüft die Berechnung der Initiative bei Monstren (Power, Finesse & Resistance). """ for fin in range(1, ATTRIBUTE_MAX + 1): for res in range(1, ATTRIBUTE_MAX + 1): self.assertEqual(Calc.calc_initiative(fin, res), fin + res)
def test__calc_health(self): """ Überprüft die Berechnung der Gesundheit. """ for val_1 in range(1, ATTRIBUTE_MAX + 1): for val_2 in range(3, 7): self.assertEqual(Calc.calc_health(val_1, val_2), val_1 + val_2)
def test__calc_willpower(self): """ Überprüft die Berechnung der Willenskraft. """ for val_1 in range( 1, ATTRIBUTE_MAX + 1 ): for val_2 in range( 1, ATTRIBUTE_MAX + 1 ): self.assertEqual( Calc.calc_willpower( val_1, val_2 ), val_1 + val_2 )
def test__calc_health(self): """ Überprüft die Berechnung der Gesundheit. """ for val_1 in range( 1, ATTRIBUTE_MAX + 1 ): for val_2 in range( 3, 7 ): self.assertEqual( Calc.calc_health( val_1, val_2 ), val_1 + val_2 )
def test__calc_initiative_monster(self): """ Überprüft die Berechnung der Initiative bei Monstren (Power, Finesse & Resistance). """ for fin in range( 1, ATTRIBUTE_MAX + 1 ): for res in range( 1, ATTRIBUTE_MAX + 1 ): self.assertEqual( Calc.calc_initiative( fin, res ), fin + res )
def test__calc_willpower(self): """ Überprüft die Berechnung der Willenskraft. """ for val_1 in range(1, ATTRIBUTE_MAX + 1): for val_2 in range(1, ATTRIBUTE_MAX + 1): self.assertEqual(Calc.calc_willpower(val_1, val_2), val_1 + val_2)
def test__calc_rank_spirit(self): """ Überprüft die Berechnung des Ranges von Geistern. """ for val_1 in range( 1, ATTRIBUTE_MAX + 1 ): for val_2 in range( 1, ATTRIBUTE_MAX + 1 ): for val_3 in range( 1, ATTRIBUTE_MAX + 1 ): self.assertIn( Calc.calc_rank_spirit( val_1, val_2, val_3 ), ( 1, 2, 3, 4, 5, ) )
def test__calc_speed_monster(self): """ Überprüft die Berechnung der Geschwindigkeit bei Monstren (Power, Finesse & Resistance). """ for val_1 in range( 1, ATTRIBUTE_MAX + 1 ): for val_2 in range( 1, ATTRIBUTE_MAX + 1 ): for val_3 in range( ATTRIBUTE_MAX + 1 ): self.assertEqual( Calc.calc_speed( val_1, val_2, val_3, monster=True ), val_1 + val_2 + val_3 )
def test__calc_speed_humanoid(self): """ Überprüft die Berechnung der Geschwindigkeit bei Humanoiden (normale Attribute). """ for val_1 in range( 1, ATTRIBUTE_MAX + 1 ): for val_2 in range( 1, ATTRIBUTE_MAX + 1 ): for val_3 in range( 4 ): self.assertEqual( Calc.calc_speed( val_1, val_2, val_3 ), val_1 + val_2 + val_3 + Config.SPEED_BASE_VALUE_HUMAN )
def test__calc_initiative_humanoid(self): """ Überprüft die Berechnung der Initiative bei Humanoiden (normale Attribute). """ for dex in range( 1, ATTRIBUTE_MAX + 1 ): for com in range( 1, ATTRIBUTE_MAX + 1 ): for fast in range( 4 ): self.assertEqual( Calc.calc_initiative( dex, com, fast ), dex + com + fast )
def __calcAgeBecoming(self): """ Zur Berechnung des Alters zum Zeitpunkt der Veränderung (Erwachen, Kuß, erste Verwandlung etc.) werden Geburtsdatum und Datum der Veränderung genutzt. """ age = Calc.years(self.dateBirth, self.dateBecoming) if self.__ageBecoming != age: self.__ageBecoming = age self.ageBecomingChanged.emit(age)
def test__calc_defense_monster(self): """ Überprüft die Berechnung der Defense. """ results_expected = tuple( range( 0, ATTRIBUTE_MAX + Config.SIZE_DEFAULT["Adult"] + 1 ) ) for val_1 in range( 1, ATTRIBUTE_MAX + 1 ): for val_2 in range( 1, ATTRIBUTE_MAX + 1 ): self.assertEqual( Calc.calc_defense( val_1, val_2, maximize=True ), max( val_1, val_2 ) )
def test__calc_initiative_humanoid(self): """ Überprüft die Berechnung der Initiative bei Humanoiden (normale Attribute). """ for dex in range(1, ATTRIBUTE_MAX + 1): for com in range(1, ATTRIBUTE_MAX + 1): for fast in range(4): self.assertEqual(Calc.calc_initiative(dex, com, fast), dex + com + fast)
def test__calc_speed_monster(self): """ Überprüft die Berechnung der Geschwindigkeit bei Monstren (Power, Finesse & Resistance). """ for val_1 in range(1, ATTRIBUTE_MAX + 1): for val_2 in range(1, ATTRIBUTE_MAX + 1): for val_3 in range(ATTRIBUTE_MAX + 1): self.assertEqual( Calc.calc_speed(val_1, val_2, val_3, monster=True), val_1 + val_2 + val_3)
def test__calc_speed_humanoid(self): """ Überprüft die Berechnung der Geschwindigkeit bei Humanoiden (normale Attribute). """ for val_1 in range(1, ATTRIBUTE_MAX + 1): for val_2 in range(1, ATTRIBUTE_MAX + 1): for val_3 in range(4): self.assertEqual( Calc.calc_speed(val_1, val_2, val_3), val_1 + val_2 + val_3 + Config.SPEED_BASE_VALUE_HUMAN)
def test__calc_defense_humanoid(self): """ Überprüft die Berechnung der Defense. """ results_expected = tuple( range( 0, ATTRIBUTE_MAX + Config.SIZE_DEFAULT["Adult"] + 1 ) ) for val_1 in range( 1, ATTRIBUTE_MAX + 1 ): for val_2 in range( 1, ATTRIBUTE_MAX + 1 ): for age in range( Config.AGE_ADULT - 1, Config.AGE_ADULT + 1 ): for val_3 in range( 1, 6 ): self.assertIn( Calc.calc_defense( val_1, val_2, age=age, size=val_3 ), results_expected )
def calcEssence(self): """ Berechnet die maximal zu verfügung stehende Essenz. """ rank = Calc.calc_rank_spirit( self.__character.companionPower, self.__character.companionFinesse, self.__character.companionResistance ) self.__character.companionFuel = self.__storage.fuelMax("Spirit", rank)
def test__calc_defense_monster(self): """ Überprüft die Berechnung der Defense. """ results_expected = tuple( range(0, ATTRIBUTE_MAX + Config.SIZE_DEFAULT["Adult"] + 1)) for val_1 in range(1, ATTRIBUTE_MAX + 1): for val_2 in range(1, ATTRIBUTE_MAX + 1): self.assertEqual( Calc.calc_defense(val_1, val_2, maximize=True), max(val_1, val_2))
def test__calc_size(self): """ Überprüft die Berechnung der Größen-Eigenschaft. """ for age in range( Config.AGE_ADULT - 1, Config.AGE_ADULT + 1 ): results_expected = tuple( range(Config.SIZE_DEFAULT["Adult"] - 1, Config.SIZE_DEFAULT["Adult"] + 2) ) if age < Config.AGE_ADULT: results_expected = tuple( range(Config.SIZE_DEFAULT["Kid"] - 1, Config.SIZE_DEFAULT["Kid"] + 2) ) for large in ( False, True, ): for small in ( False, True, ): self.assertIn( Calc.calc_size( age, is_giant=large, is_small=small ), results_expected )
def calcWillpower(self): """ Berechnung der Willenskraft. """ result = Calc.calc_willpower( self.__character.traits["Attribute"]["Mental"]["Resolve"].totalvalue, self.__character.traits["Attribute"]["Social"]["Composure"].totalvalue, ) if ( self.__willpower != result ): self.__willpower = result self.willpowerChanged.emit( result ) return self.__willpower
def test__calc_rank_spirit(self): """ Überprüft die Berechnung des Ranges von Geistern. """ for val_1 in range(1, ATTRIBUTE_MAX + 1): for val_2 in range(1, ATTRIBUTE_MAX + 1): for val_3 in range(1, ATTRIBUTE_MAX + 1): self.assertIn(Calc.calc_rank_spirit(val_1, val_2, val_3), ( 1, 2, 3, 4, 5, ))
def __calcAge(self): """ Zur Berechnung des Alters werden Geburtstag und Datum im Spiel herangezogen. """ age = Calc.years(self.dateBirth, self.dateGame) if self.__age != age: ageCtagoryChanged = False if Config.getAge(self.__age) != Config.getAge(age): ageCtagoryChanged = True self.__age = age self.ageChanged.emit(age) if ageCtagoryChanged: self.ageChanged[str].emit(Config.getAge(age))
def calcWillpower(self): """ Berechnung der Willenskraft. """ result = Calc.calc_willpower( self.__character.traits["Attribute"]["Mental"] ["Resolve"].totalvalue, self.__character.traits["Attribute"]["Social"] ["Composure"].totalvalue, ) if (self.__willpower != result): self.__willpower = result self.willpowerChanged.emit(result) return self.__willpower
def test__calc_defense_humanoid(self): """ Überprüft die Berechnung der Defense. """ results_expected = tuple( range(0, ATTRIBUTE_MAX + Config.SIZE_DEFAULT["Adult"] + 1)) for val_1 in range(1, ATTRIBUTE_MAX + 1): for val_2 in range(1, ATTRIBUTE_MAX + 1): for age in range(Config.AGE_ADULT - 1, Config.AGE_ADULT + 1): for val_3 in range(1, 6): self.assertIn( Calc.calc_defense(val_1, val_2, age=age, size=val_3), results_expected)
def calcInitiative(self): """ Berechnung der Initiative des Charakters. \todo Bislang nur von Dexterity, Composure und Fast Reflexes abhängig. Möglicherweise vorhandene Übernatürliche Eigenschaften werden nicht berücksichtigt. """ result = Calc.calc_initiative( self.__character.traits["Attribute"]["Physical"]["Dexterity"].totalvalue, self.__character.traits["Attribute"]["Social"]["Composure"].totalvalue, self.__character.traits["Merit"]["Physical"]["Fast Reflexes"].totalvalue, ) if ( self.__initiative != result ): self.__initiative = result self.initiativeChanged.emit( result ) return self.__initiative
def calc_size(self): """ Berechnung der Größe des Charakters. """ is_large = self.__character.traits["Merit"]["Physical"]["Giant"].totalvalue > 0 is_small = self.__character.traits["Flaw"]["Physical"]["Dwarf"].totalvalue > 0 if self.__character.age < Config.AGE_ADULT: is_large = self.__character.traits["Merit"]["Physical"]["GiantKid"].totalvalue > 0 is_small = self.__character.traits["Merit"]["Physical"]["Tiny"].totalvalue > 0 result = Calc.calc_size( self.__character.age, is_giant=is_large, is_small=is_small ) if ( self.__size != result ): self.__size = result self.sizeChanged.emit( result ) return self.__size
def calcHealth(self): """ Berechnung der Gesundheit. """ ## Bevor ich die Gesundheit ausrechnen kann, muß erst die Größe feststehen. size = self.calc_size() result = Calc.calc_health( self.__character.traits["Attribute"]["Physical"]["Stamina"].totalvalue, size, ) if ( self.__health != result ): self.__health = result self.healthChanged.emit( result ) return self.__health
def calcSpeed(self): """ Berechnung der Geschwindigkeit des Charakters. \todo Bislang nur von Strength und Dexterity abhängig. Möglicherweise vorhandene Übernatürliche Eigenschaften werden nicht berücksichtigt. """ result = Calc.calc_speed( self.__character.traits["Attribute"]["Physical"]["Strength"].totalvalue, self.__character.traits["Attribute"]["Physical"]["Dexterity"].totalvalue, self.__character.traits["Merit"]["Physical"]["Fleet of Foot"].totalvalue, ) if ( self.__speed != result ): self.__speed = result self.speedChanged.emit( result ) return self.__speed
def calcMaxTrait(self): """ Berechnet die maximalen Attribute. """ rank = Calc.calc_rank_spirit( self.__character.companionPower, self.__character.companionFinesse, self.__character.companionResistance ) maxValue = self.__storage.maxTrait("Spirit", rank) for widget in self.__influenceWidgets: widget[1].setMaximum(rank) self.ui.traitDots_power.maximum = maxValue self.ui.traitDots_finesse.maximum = maxValue self.ui.traitDots_resistance.maximum = maxValue
def calcHealth(self): """ Berechnung der Gesundheit. """ ## Bevor ich die Gesundheit ausrechnen kann, muß erst die Größe feststehen. size = self.calc_size() result = Calc.calc_health( self.__character.traits["Attribute"]["Physical"] ["Stamina"].totalvalue, size, ) if (self.__health != result): self.__health = result self.healthChanged.emit(result) return self.__health
def calcSpeed(self): """ Berechnung der Geschwindigkeit des Charakters. \todo Bislang nur von Strength und Dexterity abhängig. Möglicherweise vorhandene Übernatürliche Eigenschaften werden nicht berücksichtigt. """ result = Calc.calc_speed( self.__character.traits["Attribute"]["Physical"] ["Strength"].totalvalue, self.__character.traits["Attribute"]["Physical"] ["Dexterity"].totalvalue, self.__character.traits["Merit"]["Physical"] ["Fleet of Foot"].totalvalue, ) if (self.__speed != result): self.__speed = result self.speedChanged.emit(result) return self.__speed
def calcInitiative(self): """ Berechnung der Initiative des Charakters. \todo Bislang nur von Dexterity, Composure und Fast Reflexes abhängig. Möglicherweise vorhandene Übernatürliche Eigenschaften werden nicht berücksichtigt. """ result = Calc.calc_initiative( self.__character.traits["Attribute"]["Physical"] ["Dexterity"].totalvalue, self.__character.traits["Attribute"]["Social"] ["Composure"].totalvalue, self.__character.traits["Merit"]["Physical"] ["Fast Reflexes"].totalvalue, ) if (self.__initiative != result): self.__initiative = result self.initiativeChanged.emit(result) return self.__initiative
def calcDefense(self): """ Berechnung der Defense \note Bei Kindern wird pro Punkt Size unter 5 ein weiterer Punkt zur Defense hinzugezählt. \todo Bislang nicht von der Spezies abhängig: Tiere sollten stets das größere von Dex und Wits als Defense haben. """ result = Calc.calc_defense( self.__character.traits["Attribute"]["Mental"]["Wits"].totalvalue, self.__character.traits["Attribute"]["Physical"]["Dexterity"].totalvalue, age=self.__character.age, size=self.__size, ) if ( self.__defense != result ): self.__defense = result self.defenseChanged.emit( result ) return self.__defense
def calcDefense(self): """ Berechnung der Defense \note Bei Kindern wird pro Punkt Size unter 5 ein weiterer Punkt zur Defense hinzugezählt. \todo Bislang nicht von der Spezies abhängig: Tiere sollten stets das größere von Dex und Wits als Defense haben. """ result = Calc.calc_defense( self.__character.traits["Attribute"]["Mental"]["Wits"].totalvalue, self.__character.traits["Attribute"]["Physical"] ["Dexterity"].totalvalue, age=self.__character.age, size=self.__size, ) if (self.__defense != result): self.__defense = result self.defenseChanged.emit(result) return self.__defense
def calc_size(self): """ Berechnung der Größe des Charakters. """ is_large = self.__character.traits["Merit"]["Physical"][ "Giant"].totalvalue > 0 is_small = self.__character.traits["Flaw"]["Physical"][ "Dwarf"].totalvalue > 0 if self.__character.age < Config.AGE_ADULT: is_large = self.__character.traits["Merit"]["Physical"][ "GiantKid"].totalvalue > 0 is_small = self.__character.traits["Merit"]["Physical"][ "Tiny"].totalvalue > 0 result = Calc.calc_size(self.__character.age, is_giant=is_large, is_small=is_small) if (self.__size != result): self.__size = result self.sizeChanged.emit(result) return self.__size
def test__years_QDate(self): """ Überprüft, daß die Funktion der Berechnung der Jahre auch Ergebnisse im zu erwartenden Rahmen zurückgibt. """ DATE_STEP = 1 DATE_YEAR = { "min": -1, "max": 2, } ## Eine Liste mit Daten anlegen dates_all = [] ## Von ... year_min = DATE_YEAR["min"] ## ... bis year_max = DATE_YEAR["max"] ## Startdatum date_store = QDate(year_min, 1, 1) date_max = QDate(year_max, 1, 1) ## Die Listen tatsächlich anlegen while date_store < date_max: dates_all.append(date_store) date_store = date_store.addDays(DATE_STEP) ## Kopie erstellen dates_to_compare = dates_all[:] results_expected = tuple(range(year_max - year_min + 1)) for date_1 in dates_all: dates_to_compare.remove(date_1) for date_2 in dates_to_compare: self.assertIn(Calc.years(date_1, date_2), results_expected)
def test__years_QDate(self): """ Überprüft, daß die Funktion der Berechnung der Jahre auch Ergebnisse im zu erwartenden Rahmen zurückgibt. """ DATE_STEP = 1 DATE_YEAR = { "min": -1, "max": 2, } ## Eine Liste mit Daten anlegen dates_all = [] ## Von ... year_min = DATE_YEAR["min"] ## ... bis year_max = DATE_YEAR["max"] ## Startdatum date_store = QDate(year_min, 1, 1) date_max = QDate(year_max, 1, 1) ## Die Listen tatsächlich anlegen while date_store < date_max: dates_all.append( date_store ) date_store = date_store.addDays( DATE_STEP ) ## Kopie erstellen dates_to_compare = dates_all[:] results_expected = tuple( range( year_max - year_min + 1 ) ) for date_1 in dates_all: dates_to_compare.remove( date_1 ) for date_2 in dates_to_compare: self.assertIn( Calc.years(date_1, date_2), results_expected )
def setUp(self): self.myCalc = Calc()