--- /dev/null
+#!/usr/bin/python3
+
+import os
+import yaml
+
+import pprint
+
+test_dir = "."
+yaml_name = "../adventure.yaml"
+
+def loc_coverage(locations, text):
+ for locname, loc in locations:
+ if loc["description"]["long"] == None or loc["description"]["long"] == '':
+ loc["description"]["long"] = True
+ if loc["description"]["long"] != True:
+ if text.find(loc["description"]["long"]) != -1:
+ loc["description"]["long"] = True
+ if loc["description"]["short"] == None or loc["description"]["short"] == '':
+ loc["description"]["short"] = True
+ if loc["description"]["short"] != True:
+ if text.find(loc["description"]["short"]) != -1:
+ loc["description"]["short"] = True
+
+def arb_coverage(arb_msgs, text):
+ for i, msg in enumerate(arb_msgs):
+ (msg_name, msg_text) = msg
+ if msg_text == None or msg_text == '':
+ arb_msgs[i] = (msg_name, True)
+ elif msg_text != True:
+ if text.find(msg_text) != -1:
+ arb_msgs[i] = (msg_name, True)
+
+def obj_coverage(objects, text):
+ for i, objouter in enumerate(objects):
+ (obj_name, obj) = objouter
+ if obj["descriptions"]:
+ for j, desc in enumerate(obj["descriptions"]):
+ if desc == None or desc == '':
+ obj["descriptions"][j] = True
+ objects[i] = (obj_name, obj)
+ elif desc != True:
+ if text.find(desc) != -1:
+ obj["descriptions"][j] = True
+ objects[i] = (obj_name, obj)
+
+if __name__ == "__main__":
+ with open(yaml_name, "r") as f:
+ db = yaml.load(f)
+
+ locations = db["locations"]
+ arb_msgs = db["arbitrary_messages"]
+ objects = db["objects"]
+
+ text = ""
+ for filename in os.listdir(test_dir):
+ if filename.endswith(".chk"):
+ with open(filename, "r") as chk:
+ text = chk.read()
+ loc_coverage(locations, text)
+ arb_coverage(arb_msgs, text)
+ obj_coverage(objects, text)
+
+ for locouter in locations:
+ locname = locouter[0]
+ loc = locouter[1]
+ if loc["description"]["long"] != True:
+ print("%s long description not covered!" % locname)
+ if loc["description"]["short"] != True:
+ print("location: %s short description not covered!" % locname)
+
+ for name, msg in arb_msgs:
+ if msg != True:
+ print("arbitrary message: %s not covered!" % name)
+
+ for (obj_name, obj) in objects:
+ if obj["descriptions"]:
+ for j, desc in enumerate(obj["descriptions"]):
+ if desc != True:
+ print("object: %s desctiption #%d not covered!" % (obj_name, j))