예제 #1
0
def test_repeat(manifest_type, preserve_id):
    data = DummyManifest(manifest_type, begin_id=0, end_id=10)

    expected = data + data

    eager_result = data.repeat(times=2, preserve_id=preserve_id)
    if preserve_id or manifest_type == FeatureSet:
        assert list(eager_result) == list(expected)
    else:
        items = list(eager_result)
        ref_items = list(expected)
        assert len(items) == len(ref_items)
        for i, refi in zip(items, ref_items):
            assert i.id.endswith("_repeat0") or i.id.endswith("_repeat1")
            i_modi = fastcopy(i, id=refi.id)
            assert i_modi == refi

    with as_lazy(data) as lazy_data:
        lazy_result = lazy_data.repeat(times=2, preserve_id=preserve_id)
        if preserve_id or manifest_type == FeatureSet:
            assert list(lazy_result) == list(expected)
        else:
            items = list(lazy_result)
            ref_items = list(expected)
            assert len(items) == len(ref_items)
            for i, refi in zip(items, ref_items):
                assert i.id.endswith("_repeat0") or i.id.endswith("_repeat1")
                i_modi = fastcopy(i, id=refi.id)
                assert i_modi == refi
예제 #2
0
def test_repeat(manifest_type):
    data = DummyManifest(manifest_type, begin_id=0, end_id=10)

    expected = data + data

    eager_result = data.repeat(times=2)
    assert list(eager_result) == list(expected)

    with as_lazy(data) as lazy_data:
        lazy_result = lazy_data.repeat(times=2)
        assert list(lazy_result) == list(expected)
예제 #3
0
def test_repeat_infinite(manifest_type):
    data = DummyManifest(manifest_type, begin_id=0, end_id=10)

    # hard to test infinite iterables, iterate it 10x more times than the original size
    eager_result = data.repeat()
    for idx, item in enumerate(eager_result):
        if idx == 105:
            break
    assert idx == 105

    with as_lazy(data) as lazy_data:
        lazy_result = lazy_data.repeat()
        for idx, item in enumerate(lazy_result):
            if idx == 105:
                break
        assert idx == 105
예제 #4
0
def test_composable_operations():
    expected_durations = [0, 2, 4, 6, 8, 0, 2, 4, 6, 8]

    data = DummyManifest(CutSet, begin_id=0, end_id=10)
    for idx, cut in enumerate(data):
        cut.duration = idx

    def less_than_5s(item):
        return item.duration < 5

    def double_duration(item):
        return fastcopy(item, duration=item.duration * 2)

    eager_result = data.repeat(2).filter(less_than_5s).map(double_duration)
    assert [c.duration for c in eager_result] == expected_durations

    with as_lazy(data) as lazy_data:
        lazy_result = lazy_data.repeat(2).filter(less_than_5s).map(
            double_duration)
        assert [item.duration
                for item in lazy_result] == list(expected_durations)