view tests/doctest.txt @ 40:00aee7b82657

notes
author Jeff Hammel <jhammel@mozilla.com>
date Thu, 11 Apr 2013 13:50:51 -0700
parents d1e9602145fa
children
line wrap: on
line source

Test WSGraph
============

The obligatory imports:

    >>> from wsgraph.model import MemoryCache

Make a graph:

    >>> graph = MemoryCache()

The graph starts off empty:

    >>> graph() == {'nodes': {}, 'edges': {}}
    True
    >>> graph.nodes()
    []
    >>> graph.edges()
    []
    >>> graph.node('A') is None
    True
    >>> graph['A'] is None
    True
    >>> graph.edge('A', 'B') is None
    True
    >>> graph[('A', 'B')] is None
    True
    >>> 'A' in graph
    False
    >>> ('A', 'B') in graph
    False

Let's add stuff to it:

    >>> nodeA = {'hello': "is it me you're looking for?"}
    >>> graph['A'] = nodeA
    >>> graph.edge('A', 'B', dict(foo='bar'))
    >>> 'A' in graph
    True
    >>> graph['A'] == nodeA
    True
    >>> ['A', 'B'] in graph
    True
    >>> graph[('A', 'C')] =  {'why': "this will add 'C' to the graph"}
    >>> 'C' in graph
    True
    >>> graph['C']
    {}
    >>> sorted(graph.nodes())
    ['A', 'B', 'C']

Once you set the value of a node or edge, modifying their data
structure will not affect the graph results:

    >>> values = {'a': 'b', 'c': 'easy as 1..2..3..'}
    >>> graph['C'] = values
    >>> graph.node('C') == values
    True
    >>> values['c'] = 'modifying the values'
    >>> values['d'] = 'adding a new key'
    >>> graph['C']['c']
    'easy as 1..2..3..'
    >>> 'd' in graph['C']
    False

Delete an edge:

    >>> graph = MemoryCache()
    >>> graph[('a', 'b')] = {'key': 'value'}
    >>> graph.edges()
    [('a', 'b')]
    >>> del graph[('a', 'b')]
    >>> graph.edges()
    []