"""
Unit Tests for Data Validator and Integrity Checks
"""
import pytest
from python.data.data_validator import DataValidator

def test_valid_candle():
    candle = [1700000000, 24500.0, 24550.0, 24480.0, 24520.0, 15000, 200000]
    valid, msg = DataValidator.validate_candle(candle)
    assert valid is True
    assert msg == "OK"

def test_invalid_high_low():
    # High < Low
    candle = [1700000000, 24500.0, 24400.0, 24550.0, 24520.0, 15000]
    valid, msg = DataValidator.validate_candle(candle)
    assert valid is False
    assert "High (24400.0) is less than Low (24550.0)" in msg

def test_negative_price():
    candle = [1700000000, -24500.0, 24550.0, 24480.0, 24520.0, 15000]
    valid, msg = DataValidator.validate_candle(candle)
    assert valid is False
    assert "Non-positive price detected" in msg

def test_negative_volume():
    candle = [1700000000, 24500.0, 24550.0, 24480.0, 24520.0, -500]
    valid, msg = DataValidator.validate_candle(candle)
    assert valid is False
    assert "Negative volume detected" in msg

def test_non_monotonic_timestamps():
    series = [
        [1700000300, 24500.0, 24550.0, 24480.0, 24520.0, 15000],
        [1700000100, 24520.0, 24560.0, 24510.0, 24540.0, 12000],
    ]
    valid, msg = DataValidator.validate_series(series)
    assert valid is False
    assert "Non-monotonic timestamp" in msg
