import pytest
import numpy as np

from usbdaq import RingBuffer


def test_init():
    buff = RingBuffer(1000, 2)

    assert buff.size == 1000
    assert buff.channel_count == 2


def test_hasvalue():
    buff = RingBuffer(1000, 2)

    assert buff.has_value(0, 0) == False
    assert buff.has_value(-1, 0) == False

    buff.append(10, 0)

    assert buff.write_index(0) == 1
    assert buff.write_index(1) == 0
    assert buff.has_value(0, 0) == True
    assert buff.has_value(0, 1) == False

    buff.append(10, 1)
    assert buff.write_index(1) == 1
    assert buff.has_value(0, 1) == True

    for i in range(1100):
        buff.append(i, 0)
        buff.append(i, 1)
    assert buff.write_index(0) == buff.write_index(1)
    assert buff.has_value(0, 0) == True
    assert buff.has_value(0, 1) == True
    assert buff.has_value(buff.write_index(0), 0) == True
    assert buff.has_value(buff.write_index(1), 1) == True


def test_validrange():
    pass


def test_write():
    buff = RingBuffer(1000, 2)

    samplecount = 1000


def test_get():
    pass


def test_read():
    pass