|
@@ -1235,6 +1235,106 @@ namespace Avalonia.Controls.UnitTests
|
|
|
Assert.Equal((minLines * target.LineHeight) + textPresenterMargin.Top + textPresenterMargin.Bottom, scrollViewer.MinHeight);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ [Theory]
|
|
|
+ [InlineData(null, 1)]
|
|
|
+ [InlineData("", 1)]
|
|
|
+ [InlineData("Hello", 1)]
|
|
|
+ [InlineData("Hello\r\nWorld", 2)]
|
|
|
+ public void LineCount_Is_Correct(string? text, int lineCount)
|
|
|
+ {
|
|
|
+ using (UnitTestApplication.Start(Services))
|
|
|
+ {
|
|
|
+ var target = new TextBox
|
|
|
+ {
|
|
|
+ Template = CreateTemplate(),
|
|
|
+ Text = text,
|
|
|
+ AcceptsReturn = true
|
|
|
+ };
|
|
|
+
|
|
|
+ var impl = CreateMockTopLevelImpl();
|
|
|
+ var topLevel = new TestTopLevel(impl.Object)
|
|
|
+ {
|
|
|
+ Template = CreateTopLevelTemplate()
|
|
|
+ };
|
|
|
+ topLevel.Content = target;
|
|
|
+ topLevel.ApplyTemplate();
|
|
|
+ topLevel.LayoutManager.ExecuteInitialLayoutPass();
|
|
|
+
|
|
|
+ target.ApplyTemplate();
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+
|
|
|
+ Assert.Equal(lineCount, target.GetLineCount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Unmeasured_TextBox_Has_Negative_LineCount()
|
|
|
+ {
|
|
|
+ var b = new TextBox();
|
|
|
+ Assert.Equal(-1, b.GetLineCount());
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void LineCount_Is_Correct_After_Text_Change()
|
|
|
+ {
|
|
|
+ using (UnitTestApplication.Start(Services))
|
|
|
+ {
|
|
|
+ var target = new TextBox
|
|
|
+ {
|
|
|
+ Template = CreateTemplate(),
|
|
|
+ Text = "Hello",
|
|
|
+ AcceptsReturn = true
|
|
|
+ };
|
|
|
+
|
|
|
+ var impl = CreateMockTopLevelImpl();
|
|
|
+ var topLevel = new TestTopLevel(impl.Object)
|
|
|
+ {
|
|
|
+ Template = CreateTopLevelTemplate()
|
|
|
+ };
|
|
|
+ topLevel.Content = target;
|
|
|
+ topLevel.ApplyTemplate();
|
|
|
+ topLevel.LayoutManager.ExecuteInitialLayoutPass();
|
|
|
+
|
|
|
+ target.ApplyTemplate();
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+
|
|
|
+ Assert.Equal(1, target.GetLineCount());
|
|
|
+
|
|
|
+ target.Text = "Hello\r\nWorld";
|
|
|
+
|
|
|
+ Assert.Equal(2, target.GetLineCount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ [Fact]
|
|
|
+ public void Visible_LineCount_DoesNot_Affect_LineCount()
|
|
|
+ {
|
|
|
+ using (UnitTestApplication.Start(Services))
|
|
|
+ {
|
|
|
+ var target = new TextBox
|
|
|
+ {
|
|
|
+ Template = CreateTemplate(),
|
|
|
+ Text = "Hello\r\nWorld\r\nHello\r\nAvalonia",
|
|
|
+ AcceptsReturn = true,
|
|
|
+ MaxLines = 2,
|
|
|
+ };
|
|
|
+
|
|
|
+ var impl = CreateMockTopLevelImpl();
|
|
|
+ var topLevel = new TestTopLevel(impl.Object)
|
|
|
+ {
|
|
|
+ Template = CreateTopLevelTemplate()
|
|
|
+ };
|
|
|
+ topLevel.Content = target;
|
|
|
+ topLevel.ApplyTemplate();
|
|
|
+ topLevel.LayoutManager.ExecuteInitialLayoutPass();
|
|
|
+
|
|
|
+ target.ApplyTemplate();
|
|
|
+ target.Measure(Size.Infinity);
|
|
|
+
|
|
|
+ Assert.Equal(4, target.GetLineCount());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
[Fact]
|
|
|
public void CanUndo_CanRedo_Is_False_When_Initialized()
|