Ejemplo n.º 1
0
 def test_switch_item(self):
     # Here we create 2 separate fits with ships; each ship affects module
     # with different strength. When we pass module from one fit to another,
     # its internal attribute storage should be cleared. If it wasn't
     # cleared, we wouldn't be able to get refreshed value of attribute
     # Setup
     src_attr_id = self.allocate_attr_id('src1', 'src2')
     self.mkattr(src='src1', attr_id=src_attr_id)
     self.mkattr(src='src2', attr_id=src_attr_id)
     tgt_attr_id = self.allocate_attr_id('src1', 'src2')
     self.mkattr(src='src1', attr_id=tgt_attr_id)
     self.mkattr(src='src2', attr_id=tgt_attr_id)
     modifier = self.mkmod(
         affectee_filter=ModAffecteeFilter.domain,
         affectee_domain=ModDomain.ship,
         affectee_attr_id=tgt_attr_id,
         operator=ModOperator.post_percent,
         affector_attr_id=src_attr_id)
     effect_id = self.allocate_effect_id('src1', 'src2')
     effect_src1 = self.mkeffect(
         src='src1',
         effect_id=effect_id,
         category_id=EffectCategoryId.passive,
         modifiers=[modifier])
     effect_src2 = self.mkeffect(
         src='src2',
         effect_id=effect_id,
         category_id=EffectCategoryId.passive,
         modifiers=[modifier])
     ship_type_id = self.allocate_type_id('src1', 'src2')
     ship1 = Ship(self.mktype(
         src='src1',
         type_id=ship_type_id,
         attrs={src_attr_id: 10},
         effects=[effect_src1]).id)
     ship2 = Ship(self.mktype(
         src='src2',
         type_id=ship_type_id,
         attrs={src_attr_id: 20},
         effects=[effect_src2]).id)
     item_type_id = self.allocate_type_id('src1', 'src2')
     self.mktype(src='src1', type_id=item_type_id, attrs={tgt_attr_id: 50})
     self.mktype(src='src2', type_id=item_type_id, attrs={tgt_attr_id: 50})
     item = Rig(item_type_id)
     fit1 = Fit(SolarSystem('src1'))
     fit1.ship = ship1
     fit2 = Fit(SolarSystem('src2'))
     fit2.ship = ship2
     fit1.rigs.add(item)
     self.assertAlmostEqual(item.attrs.get(tgt_attr_id), 55)
     # Action
     fit1.rigs.remove(item)
     fit2.rigs.add(item)
     # Verification
     self.assertAlmostEqual(item.attrs.get(tgt_attr_id), 60)
     # Cleanup
     self.assert_solsys_buffers_empty(fit1.solar_system)
     self.assert_solsys_buffers_empty(fit2.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 2
0
 def test_item_to_none(self):
     fit = Fit()
     item = Ship(self.mktype().id)
     fit.ship = item
     # Action
     fit.ship = None
     # Verification
     self.assertIsNone(fit.ship)
     # Cleanup
     self.assert_item_buffers_empty(item)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 3
0
 def test_item_to_none(self):
     fit = Fit()
     item = Ship(self.mktype().id)
     fit.ship = item
     # Action
     fit.ship = None
     # Verification
     self.assertIsNone(fit.ship)
     # Cleanup
     self.assert_item_buffers_empty(item)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 4
0
 def test_item_to_item(self):
     fit = Fit()
     ship_type = self.mktype()
     item1 = Ship(ship_type.id)
     item2 = Ship(ship_type.id)
     fit.ship = item1
     # Action
     fit.ship = item2
     # Verification
     self.assertIs(fit.ship, item2)
     # Cleanup
     self.assert_item_buffers_empty(item1)
     self.assert_item_buffers_empty(item2)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 5
0
 def test_item_to_item(self):
     fit = Fit()
     ship_type = self.mktype()
     item1 = Ship(ship_type.id)
     item2 = Ship(ship_type.id)
     fit.ship = item1
     # Action
     fit.ship = item2
     # Verification
     self.assertIs(fit.ship, item2)
     # Cleanup
     self.assert_item_buffers_empty(item1)
     self.assert_item_buffers_empty(item2)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 6
0
 def test_uniform(self):
     fit = Fit()
     item = Ship(
         self.mktype(
             attrs={
                 AttrId.hp: 1,
                 AttrId.em_dmg_resonance: 0.8,
                 AttrId.therm_dmg_resonance: 0.8,
                 AttrId.kin_dmg_resonance: 0.8,
                 AttrId.expl_dmg_resonance: 0.8,
                 AttrId.armor_hp: 10,
                 AttrId.armor_em_dmg_resonance: 0.4,
                 AttrId.armor_therm_dmg_resonance: 0.4,
                 AttrId.armor_kin_dmg_resonance: 0.4,
                 AttrId.armor_expl_dmg_resonance: 0.4,
                 AttrId.shield_capacity: 100,
                 AttrId.shield_em_dmg_resonance: 0.2,
                 AttrId.shield_therm_dmg_resonance: 0.2,
                 AttrId.shield_kin_dmg_resonance: 0.2,
                 AttrId.shield_expl_dmg_resonance: 0.2
             }).id)
     fit.ship = item
     # Verification
     results = item.get_ehp(DmgProfile(1, 1, 1, 1))
     self.assertAlmostEqual(results.hull, 1.25)
     self.assertAlmostEqual(results.armor, 25)
     self.assertAlmostEqual(results.shield, 500)
     self.assertAlmostEqual(results.total, 526.25)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 7
0
 def test_item_to_item_type_failure(self):
     fit = Fit()
     item1 = Ship(self.mktype().id)
     item2 = Stance(self.mktype().id)
     fit.ship = item1
     # Action
     with self.assertRaises(TypeError):
         fit.ship = item2
     # Verification
     self.assertIs(fit.ship, item1)
     fit.stance = item2
     # Cleanup
     self.assert_item_buffers_empty(item1)
     self.assert_item_buffers_empty(item2)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 8
0
 def test_none_to_item_value_failure(self):
     fit = Fit()
     fit_other = Fit()
     item = Ship(self.mktype().id)
     fit_other.ship = item
     # Action
     with self.assertRaises(ValueError):
         fit.ship = item
     # Verification
     self.assertIsNone(fit.ship)
     self.assertIs(fit_other.ship, item)
     # Cleanup
     self.assert_item_buffers_empty(item)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_solsys_buffers_empty(fit_other.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 9
0
 def test_item_attr_hp_all_absent(self):
     fit = Fit()
     item = Ship(self.mktype(attrs={
         AttrId.em_dmg_resonance: 0.9,
         AttrId.therm_dmg_resonance: 0.8,
         AttrId.kin_dmg_resonance: 0.7,
         AttrId.expl_dmg_resonance: 0.6,
         AttrId.armor_em_dmg_resonance: 0.4,
         AttrId.armor_therm_dmg_resonance: 0.6,
         AttrId.armor_kin_dmg_resonance: 0.8,
         AttrId.armor_expl_dmg_resonance: 0.9,
         AttrId.shield_em_dmg_resonance: 1.0,
         AttrId.shield_therm_dmg_resonance: 0.8,
         AttrId.shield_kin_dmg_resonance: 0.6,
         AttrId.shield_expl_dmg_resonance: 0.5}).id)
     fit.ship = item
     # Verification
     results = item.get_ehp(DmgProfile(25, 6, 8.333, 1))
     self.assertAlmostEqual(results.hull, 0)
     self.assertAlmostEqual(results.armor, 0)
     self.assertAlmostEqual(results.shield, 0)
     self.assertAlmostEqual(results.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 10
0
 def test_item_attr_hp_all_absent(self):
     fit = Fit()
     item = Ship(
         self.mktype(
             attrs={
                 AttrId.em_dmg_resonance: 0.8,
                 AttrId.therm_dmg_resonance: 0.8,
                 AttrId.kin_dmg_resonance: 0.8,
                 AttrId.expl_dmg_resonance: 0.8,
                 AttrId.armor_em_dmg_resonance: 0.4,
                 AttrId.armor_therm_dmg_resonance: 0.4,
                 AttrId.armor_kin_dmg_resonance: 0.4,
                 AttrId.armor_expl_dmg_resonance: 0.4,
                 AttrId.shield_em_dmg_resonance: 0.2,
                 AttrId.shield_therm_dmg_resonance: 0.2,
                 AttrId.shield_kin_dmg_resonance: 0.2,
                 AttrId.shield_expl_dmg_resonance: 0.2
             }).id)
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.worst_case_ehp.hull, 0)
     self.assertAlmostEqual(item.worst_case_ehp.armor, 0)
     self.assertAlmostEqual(item.worst_case_ehp.shield, 0)
     self.assertAlmostEqual(item.worst_case_ehp.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 11
0
 def test_item_to_item_type_failure(self):
     fit = Fit()
     item1 = Ship(self.mktype().id)
     item2 = Stance(self.mktype().id)
     fit.ship = item1
     # Action
     with self.assertRaises(TypeError):
         fit.ship = item2
     # Verification
     self.assertIs(fit.ship, item1)
     fit.stance = item2
     # Cleanup
     self.assert_item_buffers_empty(item1)
     self.assert_item_buffers_empty(item2)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 12
0
 def test_worst_em(self):
     fit = Fit()
     item = Ship(
         self.mktype(
             attrs={
                 AttrId.hp: 1,
                 AttrId.em_dmg_resonance: 0.8,
                 AttrId.therm_dmg_resonance: 0.7,
                 AttrId.kin_dmg_resonance: 0.7,
                 AttrId.expl_dmg_resonance: 0.7,
                 AttrId.armor_hp: 10,
                 AttrId.armor_em_dmg_resonance: 0.4,
                 AttrId.armor_therm_dmg_resonance: 0.3,
                 AttrId.armor_kin_dmg_resonance: 0.3,
                 AttrId.armor_expl_dmg_resonance: 0.3,
                 AttrId.shield_capacity: 100,
                 AttrId.shield_em_dmg_resonance: 0.2,
                 AttrId.shield_therm_dmg_resonance: 0.1,
                 AttrId.shield_kin_dmg_resonance: 0.1,
                 AttrId.shield_expl_dmg_resonance: 0.1
             }).id)
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.worst_case_ehp.hull, 1.25)
     self.assertAlmostEqual(item.worst_case_ehp.armor, 25)
     self.assertAlmostEqual(item.worst_case_ehp.shield, 500)
     self.assertAlmostEqual(item.worst_case_ehp.total, 526.25)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 13
0
 def test_uniform(self):
     fit = Fit()
     item = Ship(self.mktype(attrs={
         AttrId.hp: 1,
         AttrId.em_dmg_resonance: 0.8,
         AttrId.therm_dmg_resonance: 0.8,
         AttrId.kin_dmg_resonance: 0.8,
         AttrId.expl_dmg_resonance: 0.8,
         AttrId.armor_hp: 10,
         AttrId.armor_em_dmg_resonance: 0.4,
         AttrId.armor_therm_dmg_resonance: 0.4,
         AttrId.armor_kin_dmg_resonance: 0.4,
         AttrId.armor_expl_dmg_resonance: 0.4,
         AttrId.shield_capacity: 100,
         AttrId.shield_em_dmg_resonance: 0.2,
         AttrId.shield_therm_dmg_resonance: 0.2,
         AttrId.shield_kin_dmg_resonance: 0.2,
         AttrId.shield_expl_dmg_resonance: 0.2}).id)
     fit.ship = item
     # Verification
     results = item.get_ehp(DmgProfile(1, 1, 1, 1))
     self.assertAlmostEqual(results.hull, 1.25)
     self.assertAlmostEqual(results.armor, 25)
     self.assertAlmostEqual(results.shield, 500)
     self.assertAlmostEqual(results.total, 526.25)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 14
0
 def test_generic(self):
     fit = Fit()
     item = Ship(self.mktype(attrs={
         AttrId.em_dmg_resonance: 0.01,
         AttrId.therm_dmg_resonance: 0.02,
         AttrId.kin_dmg_resonance: 0.03,
         AttrId.expl_dmg_resonance: 0.04,
         AttrId.armor_em_dmg_resonance: 0.05,
         AttrId.armor_therm_dmg_resonance: 0.06,
         AttrId.armor_kin_dmg_resonance: 0.07,
         AttrId.armor_expl_dmg_resonance: 0.08,
         AttrId.shield_em_dmg_resonance: 0.09,
         AttrId.shield_therm_dmg_resonance: 0.1,
         AttrId.shield_kin_dmg_resonance: 0.11,
         AttrId.shield_expl_dmg_resonance: 0.12}).id)
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.resists.hull.em, 0.99)
     self.assertAlmostEqual(item.resists.hull.thermal, 0.98)
     self.assertAlmostEqual(item.resists.hull.kinetic, 0.97)
     self.assertAlmostEqual(item.resists.hull.explosive, 0.96)
     self.assertAlmostEqual(item.resists.armor.em, 0.95)
     self.assertAlmostEqual(item.resists.armor.thermal, 0.94)
     self.assertAlmostEqual(item.resists.armor.kinetic, 0.93)
     self.assertAlmostEqual(item.resists.armor.explosive, 0.92)
     self.assertAlmostEqual(item.resists.shield.em, 0.91)
     self.assertAlmostEqual(item.resists.shield.thermal, 0.9)
     self.assertAlmostEqual(item.resists.shield.kinetic, 0.89)
     self.assertAlmostEqual(item.resists.shield.explosive, 0.88)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 15
0
 def test_worst_em(self):
     fit = Fit()
     item = Ship(self.mktype(attrs={
         AttrId.hp: 1,
         AttrId.em_dmg_resonance: 0.8,
         AttrId.therm_dmg_resonance: 0.7,
         AttrId.kin_dmg_resonance: 0.7,
         AttrId.expl_dmg_resonance: 0.7,
         AttrId.armor_hp: 10,
         AttrId.armor_em_dmg_resonance: 0.4,
         AttrId.armor_therm_dmg_resonance: 0.3,
         AttrId.armor_kin_dmg_resonance: 0.3,
         AttrId.armor_expl_dmg_resonance: 0.3,
         AttrId.shield_capacity: 100,
         AttrId.shield_em_dmg_resonance: 0.2,
         AttrId.shield_therm_dmg_resonance: 0.1,
         AttrId.shield_kin_dmg_resonance: 0.1,
         AttrId.shield_expl_dmg_resonance: 0.1}).id)
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.worst_case_ehp.hull, 1.25)
     self.assertAlmostEqual(item.worst_case_ehp.armor, 25)
     self.assertAlmostEqual(item.worst_case_ehp.shield, 500)
     self.assertAlmostEqual(item.worst_case_ehp.total, 526.25)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 16
0
 def test_item_attr_hp_all_absent(self):
     fit = Fit()
     item = Ship(
         self.mktype(
             attrs={
                 AttrId.em_dmg_resonance: 0.9,
                 AttrId.therm_dmg_resonance: 0.8,
                 AttrId.kin_dmg_resonance: 0.7,
                 AttrId.expl_dmg_resonance: 0.6,
                 AttrId.armor_em_dmg_resonance: 0.4,
                 AttrId.armor_therm_dmg_resonance: 0.6,
                 AttrId.armor_kin_dmg_resonance: 0.8,
                 AttrId.armor_expl_dmg_resonance: 0.9,
                 AttrId.shield_em_dmg_resonance: 1.0,
                 AttrId.shield_therm_dmg_resonance: 0.8,
                 AttrId.shield_kin_dmg_resonance: 0.6,
                 AttrId.shield_expl_dmg_resonance: 0.5
             }).id)
     fit.ship = item
     # Verification
     results = item.get_ehp(DmgProfile(25, 6, 8.333, 1))
     self.assertAlmostEqual(results.hull, 0)
     self.assertAlmostEqual(results.armor, 0)
     self.assertAlmostEqual(results.shield, 0)
     self.assertAlmostEqual(results.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 17
0
 def test_non_uniform(self):
     fit = Fit()
     item = Ship(self.mktype(attrs={
         AttrId.hp: 10,
         AttrId.em_dmg_resonance: 0.9,
         AttrId.therm_dmg_resonance: 0.8,
         AttrId.kin_dmg_resonance: 0.7,
         AttrId.expl_dmg_resonance: 0.6,
         AttrId.armor_hp: 50,
         AttrId.armor_em_dmg_resonance: 0.4,
         AttrId.armor_therm_dmg_resonance: 0.6,
         AttrId.armor_kin_dmg_resonance: 0.8,
         AttrId.armor_expl_dmg_resonance: 0.9,
         AttrId.shield_capacity: 600,
         AttrId.shield_em_dmg_resonance: 1.0,
         AttrId.shield_therm_dmg_resonance: 0.8,
         AttrId.shield_kin_dmg_resonance: 0.6,
         AttrId.shield_expl_dmg_resonance: 0.5}).id)
     fit.ship = item
     # Verification
     results = item.get_ehp(DmgProfile(25, 6, 8.333, 1))
     self.assertAlmostEqual(results.hull, 11.957, places=3)
     self.assertAlmostEqual(results.armor, 95.276, places=3)
     self.assertAlmostEqual(results.shield, 685.551, places=3)
     self.assertAlmostEqual(results.total, 792.783, places=3)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 18
0
 def test_none_to_item_value_failure(self):
     fit = Fit()
     fit_other = Fit()
     item = Ship(self.mktype().id)
     fit_other.ship = item
     # Action
     with self.assertRaises(ValueError):
         fit.ship = item
     # Verification
     self.assertIsNone(fit.ship)
     self.assertIs(fit_other.ship, item)
     # Cleanup
     self.assert_item_buffers_empty(item)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_solsys_buffers_empty(fit_other.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 19
0
 def test_non_uniform(self):
     fit = Fit()
     item = Ship(
         self.mktype(
             attrs={
                 AttrId.hp: 10,
                 AttrId.em_dmg_resonance: 0.9,
                 AttrId.therm_dmg_resonance: 0.8,
                 AttrId.kin_dmg_resonance: 0.7,
                 AttrId.expl_dmg_resonance: 0.6,
                 AttrId.armor_hp: 50,
                 AttrId.armor_em_dmg_resonance: 0.4,
                 AttrId.armor_therm_dmg_resonance: 0.6,
                 AttrId.armor_kin_dmg_resonance: 0.8,
                 AttrId.armor_expl_dmg_resonance: 0.9,
                 AttrId.shield_capacity: 600,
                 AttrId.shield_em_dmg_resonance: 1.0,
                 AttrId.shield_therm_dmg_resonance: 0.8,
                 AttrId.shield_kin_dmg_resonance: 0.6,
                 AttrId.shield_expl_dmg_resonance: 0.5
             }).id)
     fit.ship = item
     # Verification
     results = item.get_ehp(DmgProfile(25, 6, 8.333, 1))
     self.assertAlmostEqual(results.hull, 11.957, places=3)
     self.assertAlmostEqual(results.armor, 95.276, places=3)
     self.assertAlmostEqual(results.shield, 685.551, places=3)
     self.assertAlmostEqual(results.total, 792.783, places=3)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 20
0
 def test_switch_fit(self):
     # Here we check if attributes are updated if fit gets new source
     # instance
     # Setup
     src_attr_id = self.allocate_attr_id('src1', 'src2')
     self.mkattr(src='src1', attr_id=src_attr_id)
     self.mkattr(src='src2', attr_id=src_attr_id)
     tgt_attr_id = self.allocate_attr_id('src1', 'src2')
     max_attr_id = self.allocate_attr_id('src1', 'src2')
     self.mkattr(src='src1', attr_id=tgt_attr_id, max_attr_id=max_attr_id)
     self.mkattr(src='src2', attr_id=tgt_attr_id, max_attr_id=max_attr_id)
     self.mkattr(src='src1', attr_id=max_attr_id, default_value=54.5)
     self.mkattr(src='src2', attr_id=max_attr_id, default_value=88)
     modifier = self.mkmod(
         affectee_filter=ModAffecteeFilter.domain,
         affectee_domain=ModDomain.ship,
         affectee_attr_id=tgt_attr_id,
         operator=ModOperator.post_percent,
         affector_attr_id=src_attr_id)
     effect_id = self.allocate_effect_id('src1', 'src2')
     effect_src1 = self.mkeffect(
         src='src1',
         effect_id=effect_id,
         category_id=EffectCategoryId.passive,
         modifiers=[modifier])
     effect_src2 = self.mkeffect(
         src='src2',
         effect_id=effect_id,
         category_id=EffectCategoryId.passive,
         modifiers=[modifier])
     ship_type_id = self.allocate_type_id('src1', 'src2')
     self.mktype(
         src='src1',
         type_id=ship_type_id,
         attrs={src_attr_id: 10},
         effects=[effect_src1])
     self.mktype(
         src='src2',
         type_id=ship_type_id,
         attrs={src_attr_id: 20},
         effects=[effect_src2])
     item_type_id = self.allocate_type_id('src1', 'src2')
     self.mktype(src='src1', type_id=item_type_id, attrs={tgt_attr_id: 50})
     self.mktype(src='src2', type_id=item_type_id, attrs={tgt_attr_id: 75})
     fit = Fit()
     ship = Ship(ship_type_id)
     item = Rig(item_type_id)
     fit.ship = ship
     fit.rigs.add(item)
     # 50 * 1.1, but capped at 54.5
     self.assertAlmostEqual(item.attrs.get(tgt_attr_id), 54.5)
     # Action
     fit.solar_system.source = 'src2'
     # Verification
     # 75 * 1.2, but capped at 88
     self.assertAlmostEqual(item.attrs.get(tgt_attr_id), 88)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 21
0
 def test_none_to_none(self):
     fit = Fit()
     # Action
     fit.ship = None
     # Verification
     self.assertIsNone(fit.ship)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 22
0
 def test_none_to_none(self):
     fit = Fit()
     # Action
     fit.ship = None
     # Verification
     self.assertIsNone(fit.ship)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 23
0
 def test_switch_fit(self):
     # Here we check if attributes are updated if fit gets new source
     # instance
     # Setup
     src_attr_id = self.allocate_attr_id('src1', 'src2')
     self.mkattr(src='src1', attr_id=src_attr_id)
     self.mkattr(src='src2', attr_id=src_attr_id)
     tgt_attr_id = self.allocate_attr_id('src1', 'src2')
     max_attr_id = self.allocate_attr_id('src1', 'src2')
     self.mkattr(src='src1', attr_id=tgt_attr_id, max_attr_id=max_attr_id)
     self.mkattr(src='src2', attr_id=tgt_attr_id, max_attr_id=max_attr_id)
     self.mkattr(src='src1', attr_id=max_attr_id, default_value=54.5)
     self.mkattr(src='src2', attr_id=max_attr_id, default_value=88)
     modifier = self.mkmod(affectee_filter=ModAffecteeFilter.domain,
                           affectee_domain=ModDomain.ship,
                           affectee_attr_id=tgt_attr_id,
                           operator=ModOperator.post_percent,
                           affector_attr_id=src_attr_id)
     effect_id = self.allocate_effect_id('src1', 'src2')
     effect_src1 = self.mkeffect(src='src1',
                                 effect_id=effect_id,
                                 category_id=EffectCategoryId.passive,
                                 modifiers=[modifier])
     effect_src2 = self.mkeffect(src='src2',
                                 effect_id=effect_id,
                                 category_id=EffectCategoryId.passive,
                                 modifiers=[modifier])
     ship_type_id = self.allocate_type_id('src1', 'src2')
     self.mktype(src='src1',
                 type_id=ship_type_id,
                 attrs={src_attr_id: 10},
                 effects=[effect_src1])
     self.mktype(src='src2',
                 type_id=ship_type_id,
                 attrs={src_attr_id: 20},
                 effects=[effect_src2])
     item_type_id = self.allocate_type_id('src1', 'src2')
     self.mktype(src='src1', type_id=item_type_id, attrs={tgt_attr_id: 50})
     self.mktype(src='src2', type_id=item_type_id, attrs={tgt_attr_id: 75})
     fit = Fit()
     ship = Ship(ship_type_id)
     item = Rig(item_type_id)
     fit.ship = ship
     fit.rigs.add(item)
     # 50 * 1.1, but capped at 54.5
     self.assertAlmostEqual(item.attrs.get(tgt_attr_id), 54.5)
     # Action
     fit.solar_system.source = 'src2'
     # Verification
     # 75 * 1.2, but capped at 88
     self.assertAlmostEqual(item.attrs.get(tgt_attr_id), 88)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 24
0
 def test_item_to_item_value_failure(self):
     fit = Fit()
     fit_other = Fit()
     ship_type = self.mktype()
     item1 = Ship(ship_type.id)
     item2 = Ship(ship_type.id)
     fit.ship = item1
     fit_other.ship = item2
     # Action
     with self.assertRaises(ValueError):
         fit.ship = item2
     # Verification
     self.assertIs(fit.ship, item1)
     self.assertIs(fit_other.ship, item2)
     # Cleanup
     self.assert_item_buffers_empty(item1)
     self.assert_item_buffers_empty(item2)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_solsys_buffers_empty(fit_other.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 25
0
 def test_item_to_item_value_failure(self):
     fit = Fit()
     fit_other = Fit()
     ship_type = self.mktype()
     item1 = Ship(ship_type.id)
     item2 = Ship(ship_type.id)
     fit.ship = item1
     fit_other.ship = item2
     # Action
     with self.assertRaises(ValueError):
         fit.ship = item2
     # Verification
     self.assertIs(fit.ship, item1)
     self.assertIs(fit_other.ship, item2)
     # Cleanup
     self.assert_item_buffers_empty(item1)
     self.assert_item_buffers_empty(item2)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_solsys_buffers_empty(fit_other.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 26
0
 def test_item_not_loaded(self):
     fit = Fit()
     item = Ship(self.allocate_type_id())
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.worst_case_ehp.hull, 0)
     self.assertAlmostEqual(item.worst_case_ehp.armor, 0)
     self.assertAlmostEqual(item.worst_case_ehp.shield, 0)
     self.assertAlmostEqual(item.worst_case_ehp.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 27
0
 def test_item_not_loaded(self):
     fit = Fit()
     item = Ship(self.allocate_type_id())
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.hp.hull, 0)
     self.assertAlmostEqual(item.hp.armor, 0)
     self.assertAlmostEqual(item.hp.shield, 0)
     self.assertAlmostEqual(item.hp.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 28
0
 def test_item_attr_all_absent(self):
     fit = Fit()
     item = Ship(self.mktype().id)
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.hp.hull, 0)
     self.assertAlmostEqual(item.hp.armor, 0)
     self.assertAlmostEqual(item.hp.shield, 0)
     self.assertAlmostEqual(item.hp.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 29
0
 def test_item_attr_all_absent(self):
     fit = Fit()
     item = Ship(self.mktype().id)
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.hp.hull, 0)
     self.assertAlmostEqual(item.hp.armor, 0)
     self.assertAlmostEqual(item.hp.shield, 0)
     self.assertAlmostEqual(item.hp.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 30
0
 def test_item_not_loaded(self):
     fit = Fit()
     item = Ship(self.allocate_type_id())
     fit.ship = item
     # Verification
     results = item.get_ehp(DmgProfile(1, 1, 1, 1))
     self.assertAlmostEqual(results.hull, 0)
     self.assertAlmostEqual(results.armor, 0)
     self.assertAlmostEqual(results.shield, 0)
     self.assertAlmostEqual(results.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 31
0
 def test_item_not_loaded(self):
     fit = Fit()
     item = Ship(self.allocate_type_id())
     fit.ship = item
     # Verification
     results = item.get_ehp(DmgProfile(1, 1, 1, 1))
     self.assertAlmostEqual(results.hull, 0)
     self.assertAlmostEqual(results.armor, 0)
     self.assertAlmostEqual(results.shield, 0)
     self.assertAlmostEqual(results.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 32
0
 def test_none_to_item_type_failure(self):
     fit = Fit()
     item = Stance(self.mktype().id)
     # Action
     with self.assertRaises(TypeError):
         fit.ship = item
     # Verification
     self.assertIsNone(fit.ship)
     # Check that item which failed to be added can be assigned to other
     # field
     fit.stance = item
     # Cleanup
     self.assert_item_buffers_empty(item)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 33
0
 def test_none_to_item_type_failure(self):
     fit = Fit()
     item = Stance(self.mktype().id)
     # Action
     with self.assertRaises(TypeError):
         fit.ship = item
     # Verification
     self.assertIsNone(fit.ship)
     # Check that item which failed to be added can be assigned to other
     # field
     fit.stance = item
     # Cleanup
     self.assert_item_buffers_empty(item)
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 34
0
 def test_generic(self):
     fit = Fit()
     item = Ship(self.mktype(attrs={
         AttrId.hp: 8,
         AttrId.armor_hp: 10,
         AttrId.shield_capacity: 12}).id)
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.hp.hull, 8)
     self.assertAlmostEqual(item.hp.armor, 10)
     self.assertAlmostEqual(item.hp.shield, 12)
     self.assertAlmostEqual(item.hp.total, 30)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 35
0
 def test_generic(self):
     fit = Fit()
     item = Ship(
         self.mktype(attrs={
             AttrId.hp: 8,
             AttrId.armor_hp: 10,
             AttrId.shield_capacity: 12
         }).id)
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.hp.hull, 8)
     self.assertAlmostEqual(item.hp.armor, 10)
     self.assertAlmostEqual(item.hp.shield, 12)
     self.assertAlmostEqual(item.hp.total, 30)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 36
0
 def test_item_not_loaded(self):
     fit = Fit()
     item = Ship(self.allocate_type_id())
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.resists.hull.em, 0)
     self.assertAlmostEqual(item.resists.hull.thermal, 0)
     self.assertAlmostEqual(item.resists.hull.kinetic, 0)
     self.assertAlmostEqual(item.resists.hull.explosive, 0)
     self.assertAlmostEqual(item.resists.armor.em, 0)
     self.assertAlmostEqual(item.resists.armor.thermal, 0)
     self.assertAlmostEqual(item.resists.armor.kinetic, 0)
     self.assertAlmostEqual(item.resists.armor.explosive, 0)
     self.assertAlmostEqual(item.resists.shield.em, 0)
     self.assertAlmostEqual(item.resists.shield.thermal, 0)
     self.assertAlmostEqual(item.resists.shield.kinetic, 0)
     self.assertAlmostEqual(item.resists.shield.explosive, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)
Ejemplo n.º 37
0
 def test_item_attr_hp_all_absent(self):
     fit = Fit()
     item = Ship(self.mktype(attrs={
         AttrId.em_dmg_resonance: 0.8,
         AttrId.therm_dmg_resonance: 0.8,
         AttrId.kin_dmg_resonance: 0.8,
         AttrId.expl_dmg_resonance: 0.8,
         AttrId.armor_em_dmg_resonance: 0.4,
         AttrId.armor_therm_dmg_resonance: 0.4,
         AttrId.armor_kin_dmg_resonance: 0.4,
         AttrId.armor_expl_dmg_resonance: 0.4,
         AttrId.shield_em_dmg_resonance: 0.2,
         AttrId.shield_therm_dmg_resonance: 0.2,
         AttrId.shield_kin_dmg_resonance: 0.2,
         AttrId.shield_expl_dmg_resonance: 0.2}).id)
     fit.ship = item
     # Verification
     self.assertAlmostEqual(item.worst_case_ehp.hull, 0)
     self.assertAlmostEqual(item.worst_case_ehp.armor, 0)
     self.assertAlmostEqual(item.worst_case_ehp.shield, 0)
     self.assertAlmostEqual(item.worst_case_ehp.total, 0)
     # Cleanup
     self.assert_solsys_buffers_empty(fit.solar_system)
     self.assert_log_entries(0)