File: test_itertools.py

package info (click to toggle)
dask.distributed 2024.12.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 12,588 kB
  • sloc: python: 96,954; javascript: 1,549; sh: 390; makefile: 220
file content (36 lines) | stat: -rw-r--r-- 1,076 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from __future__ import annotations

from distributed.itertools import ffill


def test_ffill():
    actual = "".join(ffill([1, 1.5, 2, 2, 2.5, 3], [1, 2, 3], "abc", "-"))
    assert actual == "aabbbc"

    # Test left and right edges
    actual = "".join(ffill([-1, 0, 1, 2.9, 3, 4, 5], [1, 2, 3], "abc", "-"))
    assert actual == "--abccc"

    # Test edge cases
    actual = "".join(ffill([1, 2, 3], [], "", "-"))
    assert actual == "---"

    actual = "".join(ffill([], [], "", "-"))
    assert actual == ""

    actual = "".join(ffill([], [1, 2, 3], "abc", "-"))
    assert actual == ""

    # xp is shorter than fp or vice versa
    actual = "".join(ffill([1, 2], [1], "ab", "-"))
    assert actual == "aa"
    actual = "".join(ffill([1, 2], [1, 2], "a", "-"))
    assert actual == "aa"

    # x can be any non-numerical sortable
    # y can be anything
    # Inputs don't need to be sequences
    yp = [object(), object()]
    left = object()
    actual = list(ffill(iter("abcde"), iter("bd"), iter(yp), left))
    assert actual == [left, yp[0], yp[0], yp[1], yp[1]]