Files
Terminal.Gui/Tests/IntegrationTests/FluentTests/TextFieldFluentTests.cs

51 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO.Abstractions;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TerminalGuiFluentTesting;
using TerminalGuiFluentTestingXunit;
using Xunit.Abstractions;
namespace IntegrationTests.FluentTests;
public class TextFieldFluentTests
{
private readonly TextWriter _out;
public TextFieldFluentTests (ITestOutputHelper outputHelper)
{
_out = new TestOutputWriter (outputHelper);
}
[Theory]
[ClassData (typeof (TestDrivers))]
public void TextField_Cursor_AtEnd_WhenTyping (TestDriver d)
{
// Simulates typing abcd into a TextField with width 3 (wide enough to render 2 characters only)
using var c = With.A<Window> (100, 20, d, _out)
.Add (new TextField () { Width = 3 })
.Focus<TextField> ()
.WaitIteration ()
.AssertCursorPosition (new Point (1, 1)) // Initial cursor position (because Window has border)
.EnqueueKeyEvent (Key.A)
.WaitIteration ()
.ScreenShot ("After typing first letter", _out)
.AssertCursorPosition (new Point (2, 1)) // Cursor moves along as letter is pressed
.EnqueueKeyEvent (Key.B)
.WaitIteration ()
.AssertCursorPosition (new Point (3, 1)) // Cursor moves along as letter is pressed
.EnqueueKeyEvent (Key.C)
.WaitIteration ()
.ScreenShot ("After typing all letters",_out)
.AssertCursorPosition (new Point (3, 1)) // Cursor stays where it is because we are at end of TextField
.EnqueueKeyEvent (Key.D)
.WaitIteration ()
.ScreenShot ("Typing one more letter", _out)
.AssertCursorPosition (new Point (3, 1)) // Cursor still stays at end of TextField
.WriteOutLogs (_out)
.Stop ();
}
}