""" 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()