import sys

dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
tests = [
    {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12},
    {'rope': 1, 'torch': 6, 'gold coin': "a", 'dagger': 1, 'arrow': 12},
    None,
]


def displayInventory(inventory):
    msg = "Inventory:\n"
    total = 0
    if not isinstance(inventory, dict):
        return False, "Invalid inventory type"
    for item, amount in inventory.items():
        msg += f"{amount} {item}\n"
        if not isinstance(amount, int):
            return False, f"Invalid amount for '{item}'"
        total += amount
    return True, f"{msg}Total number of items: {total}"


def addToInventory(inv, items):
    for item in items:
        inv.setdefault(item, 0)
        inv[item] += 1
    return inv


valid = True
for inventory in tests:
    print(f"Testing inventory addition with '{dragonLoot}': ")
    valid, msg = displayInventory(inventory)
    if valid:
        inventory = addToInventory(inventory, dragonLoot)
        valid, msg = displayInventory(inventory)
    print(msg)
if not valid:
    sys.exit(1)
