Exemple #1
0
def test_tap_activation():
    a = Ring(16)
    t = a.create_tap()
    t.deactivate()
    assert t.name in a.inactive_taps
    assert t.name not in a.active_taps
    a.append(np.arange(15))
    a.append([99])
    t.activate()
    assert t.name in a.active_taps
    assert t.name not in a.inactive_taps
    s = t.get_samples(1)
    assert s[0] == 99
Exemple #2
0
def test():
    a = Ring(4)
    a.append([1, 2])
    assert np.all(a.raw == [1, 2, 0, 0])
    a.append([3, 4])
    assert np.all(a.raw == [1, 2, 3, 4])
    a.append([5])
    assert np.all(a.raw == [5, 2, 3, 4])
    a.append([6, 7])
    a.append([8, 9])
    assert np.all(a.raw == [9, 6, 7, 8])
    a.append([10, 11])
    assert np.all(a.raw == [9, 10, 11, 8])

    # test getitem
    a = Ring(4)
    a.append([0, 1, 2, 3])
    assert a[0] == 3
    assert a[-1] == 2
    a.append([4])
    assert (np.all(a.raw == [4, 1, 2, 3]))
    assert (a[0] == 4)
    assert (a[-1] == 3)
    assert (np.all(a.recent(0) == []))
    assert (np.all(a.recent(1) == [4]))
    a.append([5])
    assert (np.all(a.recent(2) == [4, 5]))
    # test wrap around
    assert (np.all(a.recent(3) == [3, 4, 5]))

    # test RingPosition
    a = Ring(8)
    p = a.create_tap()

    assert p.valid_buffer_length == 1
    a.append(np.arange(4))
    assert p.valid_buffer_length == 5
    p.advance(1)
    assert p.valid_buffer_length == 4
    assert p.index == 0

    assert np.all(p.get_samples(4) == [0, 1, 2, 3])
    p.advance(2)
    assert np.all(p.get_samples(2) == [2, 3])
    a.append([4, 5, 6, 7, 8])

    p.advance(4)

    assert np.all(p.get_samples(2) == [6, 7])
    # test wraping
    assert np.all(p.get_samples(3) == [6, 7, 8])
    p.advance(2)
    assert (p.valid)
    assert (a.raw[p.index] == 8)

    # Ensure that we throw when breaking a ring pointer
    a = Ring(8)
    a.append(np.arange(8))
    p = a.create_tap()
    assert (p.get_samples(1)[0] == 7)
    # pointing to the last item in the sample
    a.append(np.arange(7))
    try:
        a.append([99])
    except RingPointerWarning as e:
        pass
    assert p.valid is False

    a = Ring(8)
    p = a.create_tap()
    try:
        p.advance(2)
    except RingPointerWarning as e:
        pass
    assert p.valid is False
    return a, p

    # test rewinding pointer
    a = Ring(5)
    a.append(np.arange(2))
    assert a.pointer == 2
    a.rewind(1)
    assert a.p == 1
    a.rewind(3)
    assert a.p == 3