Example #1
0
def test_MarkovChain_eq():
    states = [{
        ('a', 'b'): c
    } for c in (chain.ProbablityMap('aab'), chain.ProbablityMap('abb'))]
    chains = [chain.MarkovChain(order=2, states=states[i]) for i in (0, 1)]
    assert chain.MarkovChain(order=2) == chain.MarkovChain(order=2)
    assert chains[0] == chains[1]
Example #2
0
def test_ProbablityMap_overridden():
    prob_map = chain.ProbablityMap('aab')
    assert isinstance(prob_map + prob_map, chain.ProbablityMap)
    assert isinstance(prob_map - prob_map, chain.ProbablityMap)
    assert isinstance(prob_map | prob_map, chain.ProbablityMap)
    assert isinstance(prob_map & prob_map, chain.ProbablityMap)
    assert isinstance(+prob_map, chain.ProbablityMap)
    assert isinstance(-prob_map, chain.ProbablityMap)
Example #3
0
def test_MarkovChain_setitem_converts_mapping():
    mc = chain.MarkovChain(order=2)

    mc[('a', 'b')] = {'a': 4}

    assert mc.data == {('a', 'b'): chain.ProbablityMap({'a': 4})}
Example #4
0
def test_MarkovChain_iterate_chain():
    mc = chain.MarkovChain(order=1, states={('a', ): chain.ProbablityMap('a')})
    r = consistent_random().random
    mci = mc.iterate_chain(randomizer=r)
    assert mci._randomizer is r
Example #5
0
def test_MarkovChain_iter():
    mc = chain.MarkovChain(order=1, states={('a', ): chain.ProbablityMap('a')})
    assert isinstance(iter(mc), chain.MarkovChainIterator)
Example #6
0
def test_MarkovChain_init_with_states():
    prob_map = chain.ProbablityMap('aab')
    my_chain = chain.MarkovChain(order=1, states={('a', ): prob_map})
    assert my_chain.data == {('a', ): prob_map}
Example #7
0
def test_ProbablityMap_weighted_random():
    prob_map = chain.ProbablityMap('aab')
    weighter = consistent_random().random
    assert prob_map.weighted_choice(randomizer=weighter)() == 'a'
    assert prob_map.weighted_choice(randomizer=lambda: 0)() == 'b'