def test_cycler_merge_pseudo_real_clash(hw, children): p3x3 = hw.pseudo3x3 cyc = reduce(operator.add, (cycler(getattr(p3x3, k), range(5)) for k in children)) with pytest.raises(ValueError): merge_cycler(cyc)
def test_cycler_parent_and_parts_fail(hw, children): p3x3 = hw.pseudo3x3 cyc = reduce(operator.add, (cycler(getattr(p3x3, k), range(5)) for k in children)) cyc += cycler(p3x3, range(5)) with pytest.raises(ValueError): merge_cycler(cyc)
def test_cycler_merge_mixed(hw, children): p3x3 = hw.pseudo3x3 cyc = reduce(operator.add, (cycler(getattr(p3x3, k), range(5)) for k in children)) mcyc = merge_cycler(cyc) assert mcyc.keys == cyc.keys assert mcyc.by_key() == cyc.by_key()
def test_cycler_merge_pseudo(hw, traj): p3x3 = hw.pseudo3x3 sig = hw.sig keys = traj.keys() tlen = len(next(iter(traj.values()))) expected_merge = [{k: traj[k][j] for k in keys} for j in range(tlen)] cyc = reduce(operator.add, (cycler(getattr(p3x3, k), v) for k, v in traj.items())) mcyc = merge_cycler(cyc + cycler(sig, range(tlen))) assert mcyc.keys == {p3x3, sig} assert mcyc.by_key()[p3x3] == expected_merge assert mcyc.by_key()[sig] == list(range(tlen))