Files
PolyTraderSharp/tests/PolyTrader.Tests/TradeRowColoringTests.cs
T
RichardandClaude Opus 4.8 0725a81dbd UI Slice 3: CopyTrading - Zeilenfaerbung, Filter, Offene-Trades-Tab, Master-Grid-Fix
- Geschlossene Trades: Zeilenfaerbung nach PnL-% (TradeRowColoring, pur+getestet: <0 rot,
  0-10% hellgruen, >10% gruen) via DataBindingComplete. Filter-Panel (Designer): Markt (Text),
  Master-Trader (Combo, dynamisch), Ergebnis (Alle/Gewinner/Verlierer), Von/Bis (optionale
  DateTimePicker mit Checkbox), Zuruecksetzen. Summary zeigt gefiltert/gesamt.
- Neuer Tab 'Offene Trades' (OpenTradesView, designerfaehig): alle offenen Positionen aus dem
  Laufzeit-State mit Entry/Aktuell/Wert/Buchgewinn/-% und Status (offen/Exit laeuft), Zeilenfaerbung
  nach Buchgewinn-%, Summenzeile. In CopyTradingMainForm zwischen Master-Trader und Geschlossene eingehaengt.
- Master-Trader-Grid: AutoSizeColumnsMode=Fill + FillWeights -> Spaltenbreiten teilen sich immer die
  Breite (Fix der 'verbuggten' Breiten); RowHeader war bereits aus.

Tests: +8 (TradeRowColoring-Schwellen). Build 0 Fehler, 396 Tests gruen, --smoke-ui gruen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 20:49:41 +02:00

30 lines
991 B
C#

using PolyTrader.Modules.CopyTrading.Logic;
using Xunit;
namespace PolyTrader.Tests
{
/// <summary>Sicherheitsnetz für die PnL-Zeilenfärbung (Slice 3): Schwellen -10/0/10.</summary>
public class TradeRowColoringTests
{
[Theory]
[InlineData(-0.01, "loss")]
[InlineData(-25.0, "loss")]
[InlineData(0.0, "small")] // Break-even = hellgrün (kein Verlust)
[InlineData(5.0, "small")]
[InlineData(10.0, "small")] // genau 10 % noch hellgrün
[InlineData(10.01, "big")]
[InlineData(80.0, "big")]
public void Color_matches_threshold(double pct, string expected)
{
var c = TradeRowColoring.ForPnlPercent((decimal)pct);
var want = expected switch
{
"loss" => TradeRowColoring.Loss,
"big" => TradeRowColoring.BigWin,
_ => TradeRowColoring.SmallWin
};
Assert.Equal(want, c);
}
}
}