def test_Getter_composes_correctly(): visited = [] def visit(item): visited.append(item) return item my_lens = b.EachTraversal() & b.Getter(visit) & b.EachTraversal() my_lens.to_list_of(([1, 2, 3], [4, 5, 6], [7, 8, 9])) assert visited == [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
def test_lens_and(): my_lens = b.EachTraversal() & b.GetitemLens(1) assert my_lens.set([(0, 1), (2, 3)], 4) == [(0, 4), (2, 4)]
def test_LensLike_no_focus_raises(): with pytest.raises(ValueError): b.EachTraversal().view([])
def test_TupleLens_only_works_with_lenses(): with pytest.raises(TypeError): b.TupleLens(b.EachTraversal())
def test_FilteringPrism_set(): l = b.EachTraversal() & b.FilteringPrism(lambda a: a > 0) assert l.set([1, -1, 1], 3) == [3, -1, 3]
def test_FilteringPrism_to_list_of(): l = b.EachTraversal() & b.FilteringPrism(lambda a: a > 0) assert l.to_list_of([1, -1, 1]) == [1, 1]
def test_EachTraversal_set_empty(): assert b.EachTraversal().set([], 4) == []
def test_EachTraversal_to_list_of_empty(): assert b.EachTraversal().to_list_of([]) == []
def test_EachTraversal_over_on_set(): assert b.EachTraversal().over({1, 2, 3}, lambda a: a + 1) == {2, 3, 4}
def test_EachTraversal_set_on_set(): assert b.EachTraversal().set({1, 2, 3}, 4) == {4}
def test_EachTraversal_to_list_of_on_set(): assert sorted(b.EachTraversal().to_list_of({1, 2, 3})) == [1, 2, 3]
def test_EachTraversal_set(): assert b.EachTraversal().set([1, 2, 3], 4) == [4, 4, 4]
def test_EachTraversal_to_list_of(): assert b.EachTraversal().to_list_of([1, 2, 3]) == [1, 2, 3]