From e176039b01def153b6b5222e145f0b2b8589ab3f Mon Sep 17 00:00:00 2001 From: Aaron Traas Date: Thu, 13 Jul 2017 11:50:51 -0400 Subject: [PATCH] Expand scope of coverage_dungeon.py - specials --- tests/coverage_dungeon.html.tpl | 10 +++ tests/coverage_dungeon.py | 30 ++++++- tests/specials.chk | 145 ++++++++++++++++++++++++++++++++ tests/specials.log | 18 ++++ 4 files changed, 199 insertions(+), 4 deletions(-) create mode 100644 tests/specials.chk create mode 100644 tests/specials.log diff --git a/tests/coverage_dungeon.html.tpl b/tests/coverage_dungeon.html.tpl index a72dab8..1b2a0c7 100644 --- a/tests/coverage_dungeon.html.tpl +++ b/tests/coverage_dungeon.html.tpl @@ -92,6 +92,15 @@ {} {}% + + + + + Specials: + {} + {} + {}% + @@ -162,6 +171,7 @@ Special ID Message + {} diff --git a/tests/coverage_dungeon.py b/tests/coverage_dungeon.py index d7f46c8..63649f6 100755 --- a/tests/coverage_dungeon.py +++ b/tests/coverage_dungeon.py @@ -11,7 +11,6 @@ import os import yaml import re -import pprint test_dir = "." yaml_name = "../adventure.yaml" @@ -87,7 +86,6 @@ def obj_coverage(objects, text): obj["descriptions"][j] = True objects[i] = (obj_name, obj) - def hint_coverage(hints, text): for name, hint in hints: if hint["question"] != True: @@ -96,7 +94,14 @@ def hint_coverage(hints, text): if hint["hint"] != True: if search(hint["hint"], text): hint["hint"] = True - continue + +def special_coverage(specials, text): + for name, special in specials: + if special["message"] == None: + special["message"] = True + if special["message"] != True: + if search(special["message"], text): + special["message"] = True def threshold_coverage(classes, text): for i, msg in enumerate(classes): @@ -120,6 +125,7 @@ if __name__ == "__main__": hintsraw = db["hints"] classes = db["classes"] turn_thresholds = db["turn_thresholds"] + specials = db["specials"] hints = [] for hint in hintsraw: @@ -136,6 +142,7 @@ if __name__ == "__main__": hint_coverage(hints, text) threshold_coverage(classes, text) threshold_coverage(turn_thresholds, text) + special_coverage(specials, text) location_html = "" location_total = len(locations) * 2 @@ -230,6 +237,18 @@ if __name__ == "__main__": turn_html += arb_msg_row.format(msg["threshold"], success) turn_percent = round((turn_covered / float(turn_total)) * 100, 1) + special_html = "" + special_total = len(specials) + special_covered = 0 + for name, special in specials: + if special["message"] != True: + success = "uncovered" + else: + success = "covered" + special_covered += 1 + special_html += arb_msg_row.format(name, success) + special_percent = round((special_covered / float(special_total)) * 100, 1) + # output some quick report stats print("\nadventure.yaml coverage rate:") print(" locations..........: {}% covered ({} of {})".format(location_percent, location_covered, location_total)) @@ -238,6 +257,7 @@ if __name__ == "__main__": print(" hints..............: {}% covered ({} of {})".format(hints_percent, hints_covered, hints_total)) print(" classes............: {}% covered ({} of {})".format(class_percent, class_covered, class_total)) print(" turn_thresholds....: {}% covered ({} of {})".format(turn_percent, turn_covered, turn_total)) + print(" specials...........: {}% covered ({} of {})".format(special_percent, special_covered, special_total)) # render HTML report with open(html_output_path, "w") as f: @@ -248,5 +268,7 @@ if __name__ == "__main__": hints_total, hints_covered, hints_percent, class_total, class_covered, class_percent, turn_total, turn_covered, turn_percent, - location_html, arb_msg_html, object_html, hints_html, class_html, turn_html + special_total, special_covered, special_percent, + location_html, arb_msg_html, object_html, hints_html, + class_html, turn_html, special_html )) diff --git a/tests/specials.chk b/tests/specials.chk new file mode 100644 index 0000000..610b2f3 --- /dev/null +++ b/tests/specials.chk @@ -0,0 +1,145 @@ + +Welcome to Adventure!! Would you like instructions? + +> n + +You are standing at the end of a road before a small brick building. +Around you is a forest. A small stream flows out of the building and +down a gully. + +> thank + +You're quite welcome. + +> shazam + +Good try, but that is an old worn-out magic word. + +> help + +I know of places, actions, and things. Most of my vocabulary +describes places and is used to move you there. To move, try words +like forest, building, downstream, enter, east, west, north, south, +up, or down. I know about a few special objects, like a black rod +hidden in the cave. These objects can be manipulated using some of +the action words that I know. Usually you will need to give both the +object and action words (in either order), but sometimes I can infer +the object from the verb alone. Some objects also imply verbs; in +particular, "inventory" implies "take inventory", which causes me to +give you a list of what you're carrying. Some objects have unexpected +effects; the effects are not always desirable! Usually people having +trouble moving just need to try a few more words. Usually people +trying unsuccessfully to manipulate an object are attempting something +beyond their (or my!) capabilities and should try a completely +different tack. One point often confusing to beginners is that, when +there are several ways to go in a certain direction (e.g., if there +are several holes in a wall), choosing that direction in effect +chooses one of the ways at random; often, though, by specifying the +place you want to reach you can guarantee choosing the right path. +Also, to speed the game you can sometimes move long distances with a +single word. For example, "building" usually gets you to the building +from anywhere above ground except when lost in the forest. Also, note +that cave passages and forest paths turn a lot, so leaving one place +heading north doesn't guarantee entering the next from the south. +However (another important point), except when you've used a "long +distance" word such as "building", there is always a way to go back +where you just came from unless I warn you to the contrary, even +though the direction that takes you back might not be the reverse of +what got you here. Good luck, and have fun! + +> no + +OK + +> tree + +The trees of the forest are large hardwood oak and maple, with an +occasional grove of pine or spruce. There is quite a bit of under- +growth, largely birch and ash saplings plus nondescript bushes of +various sorts. This time of year visibility is quite restricted by +all the leaves, but travel is quite easy if you detour around the +spruce and berry bushes. + +> dig + +Digging without a shovel is quite impractical. Even with a shovel +progress is unlikely. + +> lost + +I'm as confused as you are. + +> mist + +Mist is a white vapor, usually water, seen from time to time in +caverns. It can be found anywhere but is frequently a sign of a deep +pit leading down to water.' + +> fuck + +Watch it! + +> stop + +I don't know the word "stop". Use "quit" if you want to give up. + +> info + +For a summary of the most recent changes to the game, say "news". +If you want to end your adventure early, say "quit". To suspend your +adventure such that you can continue later, say "suspend" (or "pause" +or "save"). To see how well you're doing, say "score". To get full +credit for a treasure, you must have left it safely in the building, +though you get partial credit just for locating it. You lose points +for getting killed, or for quitting, though the former costs you more. +There are also points based on how much (if any) of the cave you've +managed to explore; in particular, there is a large bonus just for +getting in (to distinguish the beginners from the rest of the pack), +and there are other ways to determine whether you've been through some +of the more harrowing sections. If you think you've found all the +treasures, just keep exploring for a while. If nothing interesting +happens, you haven't found them all yet. If something interesting +*DOES* happen (incidentally, there *ARE* ways to hasten things along), +it means you're getting a bonus and have an opportunity to garner many +more points in the Master's section. I may occasionally offer hints +if you seem to be having trouble. If I do, I'll warn you in advance +how much it will affect your score to accept the hints. Finally, to +save time, you may specify "brief", which tells me never to repeat the +full description of a place unless you explicitly ask me to. + +> swim + +I don't know how. + +> wizard + +Wizards are not to be disturbed by such as you. + +> yes + +Guess again. + +> news + +Open Adventure is an author-approved open-source release of +Version 2.5 with, as yet, no gameplay changes. +Version 2.5 was essentially the same as Version II; the cave and the +hazards therein are unchanged, and top score is still 430 points. +There are a few more hints, especially for some of the more obscure +puzzles. There are a few minor bugfixes and cosmetic changes. You +can now save a game and resume it at once (formerly you had to wait a +while first), but it now costs you a few points each time you save the +game. Saved games are now stored in much smaller files than before. + +> version + +There is a puff of orange smoke; within it, fiery runes spell out: + + Open Adventure 1.2 - http://www.catb.org/esr/open-adventure/ + + +You scored 32 out of a possible 430, using 16 turns. + +You are obviously a rank amateur. Better luck next time. + +To achieve the next higher rating, you need 14 more points. diff --git a/tests/specials.log b/tests/specials.log new file mode 100644 index 0000000..7c0e1a4 --- /dev/null +++ b/tests/specials.log @@ -0,0 +1,18 @@ +## Test special words +n +thank +shazam +help +no +tree +dig +lost +mist +fuck +stop +info +swim +wizard +yes +news +version \ No newline at end of file -- 2.31.1