def test_armor_ratio(self): """Derive armor to monster ratio""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] expected = 0.23 # armor points / monster attack points (301 / 1286) actual = easy_data[constants.ARMOR_RATIO_COL] self.assertEqual(actual, expected)
def test_health_ratio(self): """Derive health to monster ratio""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] expected = .03 # health points / monster attack (36 / 1286) actual = easy_data[constants.HEALTH_RATIO_COL] self.assertEqual(actual, expected)
def test_armor_points(self): """Count armor points""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] expected = 301 actual = easy_data["armor points"] self.assertEqual(actual, expected)
def test_meaty(self): """Count meaty monsters""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] expected = 13 actual = easy_data["meaty monsters"] self.assertEqual(actual, expected)
def test_rockets(self): """Count rockets""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] expected = 8 # Launcher + rocket + box of rockets actual = easy_data["rockets"] self.assertEqual(actual, expected)
def test_hitscanner_percentage(self): """Derive hitscanner percentage""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] expected = 28 # round(5 / 18.0 * 100) actual = easy_data[constants.HITSCAN_COL] self.assertEqual(actual, expected)
def test_health_points_with_bonus(self): """Count health points including bonus items""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01", "--bonus"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] expected = 436 actual = easy_data["health points"] self.assertEqual(actual, expected)
def test_monster_hit_points(self): """Count monster hit points""" options = dmon.docopt(dmon.__doc__, argv=["test.wad"]) wad_stats = dmoncommon.extract_statistics(options) map1_data = wad_stats["data"]["MAP01"] map2_data = wad_stats["data"]["MAP02"] map3_data = wad_stats["data"]["MAP03"] self.assertEqual(map1_data["easy"]["monster hit points"], 11760) self.assertEqual(map1_data["medium"]["monster hit points"], 11760) self.assertEqual(map1_data["hard"]["monster hit points"], 11760) self.assertEqual(map2_data["easy"]["monster hit points"], 40) self.assertEqual(map2_data["medium"]["monster hit points"], 60) self.assertEqual(map2_data["hard"]["monster hit points"], 100)
def test_plasma(self): """Count plasma""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] hard_data = map_data["hard"] easy_expected = 800 # rifle + cell + 7 packs + BFG hard_expected = 200 # rifle + cell + pack + BFG easy_actual = easy_data["plasma cells"] hard_actual = hard_data["plasma cells"] self.assertEqual(easy_actual, easy_expected) self.assertEqual(hard_actual, hard_expected)
def test_rocket_ratio(self): """ Derive rocket damage to monster hit points ratio. = (rockets * damage) / monster hit points = (5 * 100) / 40 = 12.5 """ options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP02"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP02"] easy_data = map_data["easy"] expected = 12.5 actual = easy_data[constants.ROCKET_DMG_COL] self.assertEqual(actual, expected)
def test_shell_ratio(self): """ Derive shell damage to monster hit points ratio. = (shells * damage) / monster hit points = (32 * 75) / 40 = 60.0 """ options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP02"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP02"] easy_data = map_data["easy"] expected = 60 actual = easy_data[constants.SHELL_DMG_COL] self.assertEqual(actual, expected)
def test_bullet_ratio(self): """ Derive bullet damage to monster hit points ratio. = (bullets * damage) / monster hit points = (5145 * 20) / 11760 = 8.75 """ options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] expected = 8.8 actual = easy_data[constants.BULLET_DMG_COL] self.assertEqual(actual, expected)
def test_averages(self): """Derive averages""" args = ["test.wad", "--average", "MAP0[12]"] options = dmon.docopt(dmon.__doc__, argv=args) wad_stats = dmoncommon.extract_statistics(options) totals = wad_stats["totals"] expected_easy = 80 expected_medium = 72 expected_hard = 64 actual_easy = totals["easy"]["shells"] actual_medium = totals["medium"]["shells"] actual_hard = totals["hard"]["shells"] self.assertEqual(actual_easy, expected_easy) self.assertEqual(actual_medium, expected_medium) self.assertEqual(actual_hard, expected_hard)
def test_skill_variances(self): """Count items with varied skill flags""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP02"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP02"] easy_data = map_data["easy"] medium_data = map_data["medium"] hard_data = map_data["hard"] expected_easy = 32 expected_medium = 24 expected_hard = 16 actual_easy = easy_data["shells"] actual_medium = medium_data["shells"] actual_hard = hard_data["shells"] self.assertEqual(actual_easy, expected_easy) self.assertEqual(actual_medium, expected_medium) self.assertEqual(actual_hard, expected_hard)
def test_plasma_ratio(self): """ Derive plasma damage to monster hit points ratio. = (cells * damage) / monster hit points [EASY] = (800 * 25) / 11760 = 1.7 [HARD] = (200 * 25) / 11760 = 0.42 """ options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) map_data = wad_stats["data"]["MAP01"] easy_data = map_data["easy"] hard_data = map_data["hard"] easy_expected = 1.7 hard_expected = 0.4 easy_actual = easy_data[constants.PLASMA_DMG_COL] hard_actual = hard_data[constants.PLASMA_DMG_COL] self.assertEqual(easy_actual, easy_expected) self.assertEqual(hard_actual, hard_expected)
def test_average_ratios(self): """Derive average ratios""" #~ [test.wad] #~ SKILL HSCAN% HEALTH^ ARMOR^ BULLET^ SHELL^ #~ easy 35.0 1.8 15.1 10.3 4.0 #~ medium 38.1 1.7 14.3 10.0 3.4 #~ hard 43.5 1.6 13.1 9.6 2.8 args = ["test.wad", "--average", "MAP0[12]"] options = dmon.docopt(dmon.__doc__, argv=args) wad_stats = dmoncommon.extract_statistics(options) avg = wad_stats["data"]["AVERAGES"] expected_hitscan = 35.0 expected_health = 0.03 expected_armor = 0.23 expected_bullet = 8.82 expected_shell = 0.51 self.assertEqual(avg["easy"][constants.HITSCAN_COL], expected_hitscan) self.assertEqual(avg["easy"][constants.HEALTH_RATIO_COL], expected_health) self.assertEqual(avg["easy"][constants.ARMOR_RATIO_COL], expected_armor) self.assertEqual(avg["easy"][constants.BULLET_DMG_COL], expected_bullet) self.assertEqual(avg["easy"][constants.SHELL_DMG_COL], expected_shell)
def test_extraction_returns_stats(self): """Extraction returns statistics object""" options = dmon.docopt(dmon.__doc__, argv=["test.wad", "MAP01"]) wad_stats = dmoncommon.extract_statistics(options) self.assertIsNotNone(wad_stats, "extract_statistics gave back None") self.assertIsNotNone(wad_stats["map list"])