using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using PolyTrader.Core.Persistence;
using PolyTraderSharp.Models;
namespace PolyTrader.Tests.Fakes
{
/// In-Memory-Stub des Entscheidungsjournals – Tests können Journal-Einträge asserten.
public sealed class FakeDecisionJournal : IDecisionJournal
{
public List Written { get; } = new();
public void Write(DecisionRecord record) => Written.Add(record);
public List Query(Expression> predicate, int limit = 1000)
=> Written.Where(predicate.Compile()).Take(limit).ToList();
}
/// In-Memory-Stub des Order-Lifecycle-Logs.
public sealed class FakeOrderEventLog : IOrderEventLog
{
public List Written { get; } = new();
public void Write(OrderEventRecord record) => Written.Add(record);
public List Query(Expression> predicate, int limit = 1000)
=> Written.Where(predicate.Compile()).Take(limit).ToList();
}
}