#nullable enable
using System.Text;
using Xunit.Abstractions;

namespace Terminal.Gui.ViewTests;

[Trait("Category","Output")]
public class NeedsDisplayTests ()
{
    [Fact]
    public void NeedsDisplay_False_If_Width_Height_Zero ()
    {
        View view = new () { Width = 0, Height = 0};
        view.BeginInit();
        view.EndInit();
        Assert.False (view.NeedsDisplay);
        Assert.False (view.SubViewNeedsDisplay);
    }


    [Fact]
    public void NeedsDisplay_True_Initially_If_Width_Height_Not_Zero ()
    {
        View superView = new () { Width = 1, Height = 1};
        View view1 = new () { Width = 1, Height = 1 };
        View view2 = new () { Width = 1, Height = 1 };

        superView.Add(view1, view2);
        superView.BeginInit ();
        superView.EndInit ();

        Assert.True (superView.NeedsDisplay);
        Assert.True (superView.SubViewNeedsDisplay);
        Assert.True (view1.NeedsDisplay);
        Assert.True (view2.NeedsDisplay);

        superView.Draw ();

        Assert.False (superView.NeedsDisplay);
        Assert.False (superView.SubViewNeedsDisplay);
        Assert.False (view1.NeedsDisplay);
        Assert.False (view2.NeedsDisplay);

        superView.SetNeedsDisplay();

        Assert.True (superView.NeedsDisplay);
        Assert.True (superView.SubViewNeedsDisplay);
        Assert.True (view1.NeedsDisplay);
        Assert.True (view2.NeedsDisplay);
    }
}
