Files
gogo2/test_direction_filter.py
2025-10-24 23:04:29 +03:00

90 lines
2.7 KiB
Python

"""
Test the direction filtering logic without DuckDB
"""
import pandas as pd
from datetime import datetime, timedelta
def test_filter_by_time_range():
"""Test the _filter_by_time_range logic"""
print("=" * 80)
print("Testing Direction Filter Logic")
print("=" * 80)
# Create sample data
base_time = datetime(2024, 10, 24, 12, 0, 0)
timestamps = [base_time + timedelta(minutes=i) for i in range(100)]
df = pd.DataFrame({
'open': range(100),
'high': range(100),
'low': range(100),
'close': range(100),
'volume': range(100)
}, index=timestamps)
print(f"\nCreated test data with {len(df)} candles")
print(f"First timestamp: {df.index[0]}")
print(f"Last timestamp: {df.index[-1]}")
# Test 1: Direction 'before'
print("\n" + "-" * 80)
print("Test 1: Direction 'before' - Get 10 candles BEFORE minute 50")
end_time = timestamps[50]
print(f"End time: {end_time}")
# Simulate the filter logic
filtered = df[df.index < end_time]
result = filtered.tail(10)
print(f"Result: {len(result)} candles")
print(f"First: {result.index[0]} (should be minute 40)")
print(f"Last: {result.index[-1]} (should be minute 49)")
if result.index[-1] < end_time:
print("✅ PASS: Last candle is before end_time")
else:
print("❌ FAIL: Last candle is NOT before end_time")
# Test 2: Direction 'after'
print("\n" + "-" * 80)
print("Test 2: Direction 'after' - Get 10 candles AFTER minute 50")
start_time = timestamps[50]
print(f"Start time: {start_time}")
# Simulate the filter logic
filtered = df[df.index > start_time]
result = filtered.head(10)
print(f"Result: {len(result)} candles")
print(f"First: {result.index[0]} (should be minute 51)")
print(f"Last: {result.index[-1]} (should be minute 60)")
if result.index[0] > start_time:
print("✅ PASS: First candle is after start_time")
else:
print("❌ FAIL: First candle is NOT after start_time")
# Test 3: Direction 'latest' (default)
print("\n" + "-" * 80)
print("Test 3: Direction 'latest' - Get most recent 10 candles")
result = df.tail(10)
print(f"Result: {len(result)} candles")
print(f"First: {result.index[0]} (should be minute 90)")
print(f"Last: {result.index[-1]} (should be minute 99)")
if result.index[-1] == df.index[-1]:
print("✅ PASS: Got most recent candles")
else:
print("❌ FAIL: Did NOT get most recent candles")
print("\n" + "=" * 80)
print("All Tests Complete")
print("=" * 80)
if __name__ == "__main__":
test_filter_by_time_range()