From 4b5ce0cf406b1c91ef7a7bfa0e04567a47173a8c Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 18 May 2018 11:10:24 +0100 Subject: [PATCH 1/5] add failing unit test. --- .../Presenters/TextPresenter_Tests.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs b/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs new file mode 100644 index 0000000000..f40ba3cee0 --- /dev/null +++ b/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs @@ -0,0 +1,27 @@ +using Avalonia.Controls.Presenters; +using Xunit; + +namespace Avalonia.Controls.UnitTests.Presenters +{ + public class TextPresenter_Tests + { + [Fact] + public void TextPresenter_can_contain_null_with_password_char_set() + { + var target = new TextPresenter + { + PasswordChar = '*' + }; + + Assert.NotNull(target.FormattedText); + } + + [Fact] + public void TextPresenter_can_contain_null_without_password_char_set() + { + var target = new TextPresenter(); + + Assert.NotNull(target.FormattedText); + } + } +} From 18c963aac9e5505ce2fec6a748902c88b1fa7cd6 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 18 May 2018 11:21:57 +0100 Subject: [PATCH 2/5] Add test for password char on TextPresenter. --- .../Presenters/TextPresenter_Tests.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs b/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs index f40ba3cee0..d7276fed5b 100644 --- a/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs +++ b/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs @@ -23,5 +23,18 @@ namespace Avalonia.Controls.UnitTests.Presenters Assert.NotNull(target.FormattedText); } + + [Fact] + public void Text_presenter_replaces_formatted_text_with_password_char() + { + var target = new TextPresenter + { + PasswordChar = '*', + Text = "Test" + }; + + Assert.NotNull(target.FormattedText); + Assert.Equal("****", target.FormattedText.Text); + } } } From 92ad156d83af9051d2214878c468116bdf7f616e Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 18 May 2018 11:22:20 +0100 Subject: [PATCH 3/5] Add test that default value of TextBlock.Text property is empty string. --- tests/Avalonia.Controls.UnitTests/TextBlockTests.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/Avalonia.Controls.UnitTests/TextBlockTests.cs b/tests/Avalonia.Controls.UnitTests/TextBlockTests.cs index b8886456dd..9a1140fc05 100644 --- a/tests/Avalonia.Controls.UnitTests/TextBlockTests.cs +++ b/tests/Avalonia.Controls.UnitTests/TextBlockTests.cs @@ -15,5 +15,15 @@ namespace Avalonia.Controls.UnitTests BindingMode.OneWay, TextBlock.TextProperty.GetMetadata(typeof(TextBlock)).DefaultBindingMode); } + + [Fact] + public void Default_Text_Value_Should_Be_EmptyString() + { + var textBlock = new TextBlock(); + + Assert.Equal( + "", + textBlock.Text); + } } } From f97d2932401c12880bad105805651b96a1735881 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 18 May 2018 11:22:53 +0100 Subject: [PATCH 4/5] fix textblock and texstpresenter issues related to password char. --- src/Avalonia.Controls/Presenters/TextPresenter.cs | 4 ++-- src/Avalonia.Controls/TextBlock.cs | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/Presenters/TextPresenter.cs b/src/Avalonia.Controls/Presenters/TextPresenter.cs index c241466aea..bda660be51 100644 --- a/src/Avalonia.Controls/Presenters/TextPresenter.cs +++ b/src/Avalonia.Controls/Presenters/TextPresenter.cs @@ -223,11 +223,11 @@ namespace Avalonia.Controls.Presenters if (PasswordChar != default(char)) { - result = base.CreateFormattedText(constraint, new string(PasswordChar, Text.Length)); + result = base.CreateFormattedText(constraint, new string(PasswordChar, text?.Length ?? 0)); } else { - result = base.CreateFormattedText(constraint, Text); + result = base.CreateFormattedText(constraint, text); } var selectionStart = SelectionStart; diff --git a/src/Avalonia.Controls/TextBlock.cs b/src/Avalonia.Controls/TextBlock.cs index 1fee309360..e7cf666589 100644 --- a/src/Avalonia.Controls/TextBlock.cs +++ b/src/Avalonia.Controls/TextBlock.cs @@ -111,6 +111,8 @@ namespace Avalonia.Controls /// public TextBlock() { + _text = string.Empty; + Observable.Merge( this.GetObservable(TextProperty).Select(_ => Unit.Default), this.GetObservable(TextAlignmentProperty).Select(_ => Unit.Default), From 8266621d6520cf490ad377ac05e5482f50882b98 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Fri, 18 May 2018 15:13:46 +0100 Subject: [PATCH 5/5] fix nits. --- .../Presenters/TextPresenter_Tests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs b/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs index d7276fed5b..23dae8f341 100644 --- a/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs +++ b/tests/Avalonia.Controls.UnitTests/Presenters/TextPresenter_Tests.cs @@ -6,7 +6,7 @@ namespace Avalonia.Controls.UnitTests.Presenters public class TextPresenter_Tests { [Fact] - public void TextPresenter_can_contain_null_with_password_char_set() + public void TextPresenter_Can_Contain_Null_With_Password_Char_Set() { var target = new TextPresenter { @@ -17,7 +17,7 @@ namespace Avalonia.Controls.UnitTests.Presenters } [Fact] - public void TextPresenter_can_contain_null_without_password_char_set() + public void TextPresenter_Can_Contain_Null_WithOut_Password_Char_Set() { var target = new TextPresenter(); @@ -25,7 +25,7 @@ namespace Avalonia.Controls.UnitTests.Presenters } [Fact] - public void Text_presenter_replaces_formatted_text_with_password_char() + public void Text_Presenter_Replaces_Formatted_Text_With_Password_Char() { var target = new TextPresenter {