from datetime import datetime,timezone
from app.engine import Candle,features,generate,resample

def series(up=True,n=240):
    return [Candle(i*60,100+i*.1 if up else 130-i*.1,100.2+i*.1 if up else 130.2-i*.1,99.8+i*.1 if up else 129.8-i*.1,100+i*.1 if up else 130-i*.1,1000+i) for i in range(n)]

def test_features_are_deterministic():
    assert features(series()) == features(series())
    assert features(series())["ema20"] > features(series())["ema200"]

def test_long_short_and_no_trade_are_supported():
    assert generate(1,"UP","1h",series()).direction == "LONG"
    assert generate(1,"DOWN","1h",series(False)).direction == "SHORT"
    flat=[Candle(i*60,100,100.01,99.99,100,1000) for i in range(240)]
    assert generate(1,"FLAT","1h",flat).direction == "NO_TRADE"

def test_resampling_is_utc_bucketed():
    rows=resample(series(n=30),900)
    assert len(rows)==2 and rows[0].timestamp==0 and rows[1].timestamp==900
