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]
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)
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})}
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
def test_MarkovChain_iter(): mc = chain.MarkovChain(order=1, states={('a', ): chain.ProbablityMap('a')}) assert isinstance(iter(mc), chain.MarkovChainIterator)
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}
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'