def test_load_save_data():
    """Test saving data and then loading it again.

    Also, KeyErrors are expected if required keys are missing.
    """
    def assert_required_keys(data, should_raise=False):
        with LoadSaveContext(data) as filename:
            if should_raise:
                raises(KeyError, 'load_data(filename)')
            else:
                load_data(filename)

    # Assure that missing keys raise a ``KeyError``.
    required_keys = frozenset(['nicknames', 'relations', 'directed'])
    for key in required_keys:
        keys = set(required_keys)
        keys.remove(key)
        assert_required_keys(dict.fromkeys(keys), True)
    assert_required_keys({'nicknames': None}, True)
    assert_required_keys(dict.fromkeys(required_keys), False)

    # Assure the exact data saved will be loaded afterwards.
    data = {
        'nicknames': 123,
        'relations': 456,
        'directed': True,
    }
    with LoadSaveContext(data) as filename:
        assert load_data(filename) == (123, 456, True)
Example #2
0
def main():
    args = parse_args()

    nicknames, relations, directed = load_data(args.input_filename)

    dot = generate_dot(nicknames, relations, args.output_filename_prefix,
                       args.format, program=args.program, directed=directed)

    write_file(dot)
 def assert_required_keys(data, should_raise=False):
     with LoadSaveContext(data) as filename:
         if should_raise:
             raises(KeyError, 'load_data(filename)')
         else:
             load_data(filename)