Ejemplo n.º 1
0
def test_walk():
    spans = list(Duration('1h').walk(2 * 3600, limit=2, start_open=False))
    assert spans == [
        span(2 * 3600, 3 * 3600, start_open=False),
        span(3 * 3600, 4 * 3600, start_open=False)
    ]

    spans = list(Duration('1h').walk(2 * 3600, limit=2, start_open=True))
    assert spans == [
        span(1 * 3600, 2 * 3600, start_open=True),
        span(2 * 3600, 3 * 3600, start_open=True)
    ]

    spans = list(
        Duration('1h').walk(2 * 3600, limit=2, backward=True,
                            start_open=False))
    assert spans == [
        span(2 * 3600, 3 * 3600, start_open=False),
        span(1 * 3600, 2 * 3600, start_open=False)
    ]

    spans = list(
        Duration('1h').walk(2 * 3600, limit=2, backward=True, start_open=True))
    assert spans == [
        span(1 * 3600, 2 * 3600, start_open=True),
        span(0 * 3600, 1 * 3600, start_open=True)
    ]

    r = Duration('1h')
    for s in r.walk(2 * 3600, limit=10):
        assert s == span(2 * 3600, 3 * 3600)
        break
    for s in r.walk(2 * 3600, limit=10):
        assert s == span(2 * 3600, 3 * 3600)
        break
Ejemplo n.º 2
0
def test_offset_with_duration_non_uniform():
    duration = Duration('20h')
    raw_points = [(ts.start, float(i + 1))
                  for i, ts in enumerate(duration.walk(0, limit=3))]
    assert np.allclose(raw_points, [(0, 1), (20 * HOUR, 2), (DAY, 3)])
    points = Points(raw_points, uniform=False)

    f = points.offset(1, duration=duration)
    assert f.domain.start == 20 * HOUR
    assert f.domain.end == DAY + 20 * HOUR
    assert np.allclose(f.sample_points(), [(20 * HOUR, 1), (DAY, 2),
                                           (DAY + 20 * HOUR, 3)])
    assert f(19 * HOUR) is None
    assert f(22 * HOUR) == 1.5
    assert f(DAY + 10 * HOUR) == 2.5
    assert f(DAY + 20.5 * HOUR) is None
    assert f.x_next(19 * HOUR) == 20 * HOUR
    assert f.x_next(22 * HOUR) == DAY
    assert f.x_next(DAY + 10 * HOUR) == DAY + 20 * HOUR
    assert f.x_next(DAY + 20.5 * HOUR) is None
    assert f.x_previous(19 * HOUR) is None
    assert f.x_previous(22 * HOUR) == 20 * HOUR
    assert f.x_previous(DAY + 10 * HOUR) == DAY
    assert f.x_previous(DAY + 20.5 * HOUR) == DAY + 20 * HOUR