using System.Linq;
using Xunit;
using ytLive.Models;
using ytLive.ViewModels;
namespace ytLive.Tests;
/// The scoreboard is a LAYER, not a special widget: it must appear as a source type, carry
/// the full-width strip geometry, be resolvable on the output path like a chat box, and hook the
/// session lifecycle so its numbers are session-scoped.
public class ScoreboardLayerTests
{
[Fact]
public void The_scoreboard_is_a_real_source_with_strip_geometry_and_a_resolver()
{
Assert.Contains("Scoreboard", System.Enum.GetNames());
// Geometry: full width, a strip's height, bottom by default.
var sources = SourceAssert.Text("ViewModels", "MainViewModel.Sources.cs");
Assert.Contains("SourceType.Scoreboard ? 1920", sources);
Assert.Contains("SourceType.Scoreboard ? 56", sources);
Assert.Contains("SourceType.Scoreboard ? 1024", sources);
// The output resolver knows how to produce its frame (same shape as the chat box/alert box).
var resolver = SourceAssert.Text("ViewModels", "MainViewModel.cs");
Assert.Contains("Source { Type: SourceType.Scoreboard } => _scoreboardPresenter?.Frame", resolver);
// Session lifecycle: every start clears the tallies.
var ops = SourceAssert.Text("ViewModels", "MainViewModel.Streaming.Operations.cs");
Assert.Contains("StartScoreboardSession();", ops);
}
}