From 2c4a27e0b82b8e2c5f0d71e353cfa202be673315 Mon Sep 17 00:00:00 2001 From: Brandon Minnick <13558917+brminnick@users.noreply.github.com> Date: Mon, 27 Nov 2023 10:12:25 -0800 Subject: [PATCH] Implement NUnit2045 --- Directory.Build.props | 5 +- .../BindableObjectExtensionsTests.cs | 75 +++--- .../BindingHelpers.cs | 70 ++++-- .../DynamicResourceHandlerTests.cs | 14 +- .../ElementExtensionsTests.cs | 30 ++- .../FuncConverterTests.cs | 72 ++++-- .../GesturesExtensionsTests.cs | 220 ++++++++++++------ .../GridRowsColumns.cs | 56 +++-- .../ObjectExtensionsTests.cs | 21 +- .../StyleTests.cs | 100 +++++--- .../TextAlignmentExtensionsTests.cs | 14 +- .../TypedBindingExtensionsTests.cs | 158 ++++++++----- .../VisualElementExtensionsTests.cs | 56 +++-- 13 files changed, 592 insertions(+), 299 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index a12a86db..e540dfd0 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -28,8 +28,9 @@ CS1598: XML parser could not be loaded. The XML documentation file will not be generated. CS1658: Identifier expected; 'true' is a keyword CS1734: XML comment has a paramref tag, but there is no parameter by that name - NUnit2007: Warning NUnit2007 : The actual value should not be a constant - perhaps the actual value and the expected value have switched places --> - nullable,CS0419,CS1570,CS1571,CS1572,CS1573,CS1574,CS1580,CS1581,CS1584,CS1589,CS1590,CS1592,CS1598,CS1658,CS1734,NUnit2007 + NUnit2007: Warning NUnit2007 : The actual value should not be a constant - perhaps the actual value and the expected value have switched places + NUnit2045: Hosting Asserts inside an Assert.Multiple allows detecting more than one failure--> + nullable,CS0419,CS1570,CS1571,CS1572,CS1573,CS1574,CS1580,CS1581,CS1584,CS1589,CS1590,CS1592,CS1598,CS1658,CS1734,NUnit2007,NUnit2045 diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/BindableObjectExtensionsTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/BindableObjectExtensionsTests.cs index 32736e6a..9648ece4 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/BindableObjectExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/BindableObjectExtensionsTests.cs @@ -690,42 +690,45 @@ public void BindCommandWithPositionalParameters() [Test] public void SupportDerivedElements() { - Assert.That(new DerivedFromLabel() - .Bind(nameof(viewModel.Text)) - .Bind( - nameof(viewModel.Text), - convert: (string? text) => $"'{text}'") - .Bind( - nameof(viewModel.Text), - convert: (string? text, int? repeat) => - { - ArgumentNullException.ThrowIfNull(text); - ArgumentNullException.ThrowIfNull(repeat); - - return string.Concat(Enumerable.Repeat($"'{text.Trim('\'')}'", repeat.Value)); - }) - .Bind( - DerivedFromLabel.TextColorProperty, - nameof(viewModel.TextColor)) - .Bind( - DerivedFromLabel.BackgroundColorProperty, - nameof(viewModel.IsRed), - convert: (bool? isRed) => isRed.HasValue && isRed.Value ? Colors.Black : Colors.Transparent) - .Bind( - Label.TextColorProperty, - nameof(viewModel.IsRed), - convert: (bool? isRed, float? alpha) => - { - ArgumentNullException.ThrowIfNull(alpha); - - return (isRed.HasValue && isRed.Value ? Colors.Red : Colors.Green).MultiplyAlpha(alpha.Value); - }) - .Invoke(l => l.Text = nameof(SupportDerivedElements)) - .Assign(out DerivedFromLabel assignDerivedFromLabel), - Is.InstanceOf()); - - Assert.That(new DerivedFromTextCell().BindCommand(nameof(viewModel.Command)), Is.InstanceOf()); - Assert.That(assignDerivedFromLabel, Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(new DerivedFromLabel() + .Bind(nameof(viewModel.Text)) + .Bind( + nameof(viewModel.Text), + convert: (string? text) => $"'{text}'") + .Bind( + nameof(viewModel.Text), + convert: (string? text, int? repeat) => + { + ArgumentNullException.ThrowIfNull(text); + ArgumentNullException.ThrowIfNull(repeat); + + return string.Concat(Enumerable.Repeat($"'{text.Trim('\'')}'", repeat.Value)); + }) + .Bind( + DerivedFromLabel.TextColorProperty, + nameof(viewModel.TextColor)) + .Bind( + DerivedFromLabel.BackgroundColorProperty, + nameof(viewModel.IsRed), + convert: (bool? isRed) => isRed.HasValue && isRed.Value ? Colors.Black : Colors.Transparent) + .Bind( + Label.TextColorProperty, + nameof(viewModel.IsRed), + convert: (bool? isRed, float? alpha) => + { + ArgumentNullException.ThrowIfNull(alpha); + + return (isRed.HasValue && isRed.Value ? Colors.Red : Colors.Green).MultiplyAlpha(alpha.Value); + }) + .Invoke(l => l.Text = nameof(SupportDerivedElements)) + .Assign(out DerivedFromLabel assignDerivedFromLabel), + Is.InstanceOf()); + + Assert.That(new DerivedFromTextCell().BindCommand(nameof(viewModel.Command)), Is.InstanceOf()); + Assert.That(assignDerivedFromLabel, Is.InstanceOf()); + }); } [TestCase(AppTheme.Light)] diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/BindingHelpers.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/BindingHelpers.cs index a83c6ba4..15bd2764 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/BindingHelpers.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/BindingHelpers.cs @@ -83,18 +83,21 @@ internal static void AssertTypedBindingExists + { + Assert.That(binding, Is.Not.Null); + Assert.That(binding.Mode, Is.EqualTo(expectedBindingMode)); - Assert.That(binding.Converter?.ToString(), Is.EqualTo(expectedConverter?.ToString())); + Assert.That(binding.Converter?.ToString(), Is.EqualTo(expectedConverter?.ToString())); - Assert.That(binding.ConverterParameter, Is.EqualTo(expectedConverterParameter)); + Assert.That(binding.ConverterParameter, Is.EqualTo(expectedConverterParameter)); - Assert.That(expectedSource, Is.InstanceOf()); - Assert.That(binding.StringFormat, Is.EqualTo(expectedStringFormat)); - Assert.That(binding.TargetNullValue, Is.EqualTo(expectedTargetNullValue)); - Assert.That(binding.FallbackValue, Is.EqualTo(expectedFallbackValue)); + Assert.That(expectedSource, Is.InstanceOf()); + Assert.That(binding.StringFormat, Is.EqualTo(expectedStringFormat)); + Assert.That(binding.TargetNullValue, Is.EqualTo(expectedTargetNullValue)); + Assert.That(binding.FallbackValue, Is.EqualTo(expectedFallbackValue)); + }); } internal static void AssertBindingExists( @@ -112,9 +115,13 @@ internal static void AssertBindingExists( Action? assertConvert = null) { var binding = GetBinding(bindable, targetProperty) ?? throw new NullReferenceException(); - Assert.That(binding, Is.Not.Null); - Assert.That(binding.Path, Is.EqualTo(path)); - Assert.That(binding.Mode, Is.EqualTo(mode)); + + Assert.Multiple(() => + { + Assert.That(binding, Is.Not.Null); + Assert.That(binding.Path, Is.EqualTo(path)); + Assert.That(binding.Mode, Is.EqualTo(mode)); + }); if (assertConverterInstanceIsAnyNotNull) { @@ -125,11 +132,14 @@ internal static void AssertBindingExists( Assert.That(binding.Converter, Is.EqualTo(converter)); } - Assert.That(binding.ConverterParameter, Is.EqualTo(converterParameter)); - Assert.That(binding.StringFormat, Is.EqualTo(stringFormat)); - Assert.That(binding.Source, Is.EqualTo(source)); - Assert.That(binding.TargetNullValue, Is.EqualTo(targetNullValue)); - Assert.That(binding.FallbackValue, Is.EqualTo(fallbackValue)); + Assert.Multiple(() => + { + Assert.That(binding.ConverterParameter, Is.EqualTo(converterParameter)); + Assert.That(binding.StringFormat, Is.EqualTo(stringFormat)); + Assert.That(binding.Source, Is.EqualTo(source)); + Assert.That(binding.TargetNullValue, Is.EqualTo(targetNullValue)); + Assert.That(binding.FallbackValue, Is.EqualTo(fallbackValue)); + }); assertConvert?.Invoke(binding.Converter); } @@ -163,9 +173,13 @@ internal static void AssertBindingExists( Action? assertConvert = null) { var binding = GetMultiBinding(bindable, targetProperty) ?? throw new NullReferenceException(); - Assert.That(binding, Is.Not.Null); - Assert.That(binding.Bindings.SequenceEqual(bindings), Is.True); - Assert.That(binding.Mode, Is.EqualTo(mode)); + + Assert.Multiple(() => + { + Assert.That(binding, Is.Not.Null); + Assert.That(binding.Bindings.SequenceEqual(bindings), Is.True); + Assert.That(binding.Mode, Is.EqualTo(mode)); + }); if (assertConverterInstanceIsAnyNotNull) { @@ -176,10 +190,13 @@ internal static void AssertBindingExists( Assert.That(binding.Converter, Is.EqualTo(converter)); } - Assert.That(binding.ConverterParameter, Is.EqualTo(converterParameter)); - Assert.That(binding.StringFormat, Is.EqualTo(stringFormat)); - Assert.That(binding.TargetNullValue, Is.EqualTo(targetNullValue)); - Assert.That(binding.FallbackValue, Is.EqualTo(fallbackValue)); + Assert.Multiple(() => + { + Assert.That(binding.ConverterParameter, Is.EqualTo(converterParameter)); + Assert.That(binding.StringFormat, Is.EqualTo(stringFormat)); + Assert.That(binding.TargetNullValue, Is.EqualTo(targetNullValue)); + Assert.That(binding.FallbackValue, Is.EqualTo(fallbackValue)); + }); assertConvert?.Invoke(binding.Converter); } @@ -217,8 +234,11 @@ internal static void AssertBindingExists( internal static IValueConverter AssertConvert(this IValueConverter converter, TValue value, object? parameter, TConvertedValue expectedConvertedValue, bool twoWay = false, bool backOnly = false, CultureInfo? culture = null) { - Assert.That(converter.Convert(value, typeof(object), parameter, culture ?? CultureInfo.InvariantCulture), Is.EqualTo(backOnly ? default : expectedConvertedValue)); - Assert.That(converter.ConvertBack(expectedConvertedValue, typeof(object), parameter, culture ?? CultureInfo.InvariantCulture), Is.EqualTo(twoWay || backOnly ? value : default(TValue))); + Assert.Multiple(() => + { + Assert.That(converter.Convert(value, typeof(object), parameter, culture ?? CultureInfo.InvariantCulture), Is.EqualTo(backOnly ? default : expectedConvertedValue)); + Assert.That(converter.ConvertBack(expectedConvertedValue, typeof(object), parameter, culture ?? CultureInfo.InvariantCulture), Is.EqualTo(twoWay || backOnly ? value : default(TValue))); + }); return converter; } diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/DynamicResourceHandlerTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/DynamicResourceHandlerTests.cs index 99fde124..0d50ac25 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/DynamicResourceHandlerTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/DynamicResourceHandlerTests.cs @@ -21,14 +21,20 @@ static Label AssertDynamicResources() { var label = new Label { Resources = new ResourceDictionary { { "TextKey", "TextValue" }, { "ColorKey", Colors.Green } } }; - Assert.That(label.Text, Is.EqualTo(Label.TextProperty.DefaultValue)); - Assert.That(label.TextColor, Is.EqualTo(Label.TextColorProperty.DefaultValue)); + Assert.Multiple(() => + { + Assert.That(label.Text, Is.EqualTo(Label.TextProperty.DefaultValue)); + Assert.That(label.TextColor, Is.EqualTo(Label.TextColorProperty.DefaultValue)); + }); label.DynamicResources((Label.TextProperty, "TextKey"), (Label.TextColorProperty, "ColorKey")); - Assert.That(label.Text, Is.EqualTo("TextValue")); - Assert.That(label.TextColor, Is.EqualTo(Colors.Green)); + Assert.Multiple(() => + { + Assert.That(label.Text, Is.EqualTo("TextValue")); + Assert.That(label.TextColor, Is.EqualTo(Colors.Green)); + }); return label; } diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/ElementExtensionsTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/ElementExtensionsTests.cs index 402bcace..cbff686f 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/ElementExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/ElementExtensionsTests.cs @@ -15,8 +15,11 @@ public void RemoveDynamicResources() label.Resources["TextKey"] = "ChangedTextValue"; label.Resources["ColorKey"] = Colors.Green; - Assert.That(label.Text, Is.EqualTo("TextValue")); - Assert.That(label.TextColor, Is.EqualTo(Colors.Green)); + Assert.Multiple(() => + { + Assert.That(label.Text, Is.EqualTo("TextValue")); + Assert.That(label.TextColor, Is.EqualTo(Colors.Green)); + }); } [Test] @@ -41,9 +44,12 @@ public void EffectsMultiple() NullEffect effect1 = new NullEffect(), effect2 = new NullEffect(); Bindable.Effects(effect1, effect2); - Assert.That(Bindable.Effects.Count, Is.EqualTo(2)); - Assert.That(Bindable.Effects.Contains(effect1)); - Assert.That(Bindable.Effects.Contains(effect2)); + Assert.Multiple(() => + { + Assert.That(Bindable.Effects.Count, Is.EqualTo(2)); + Assert.That(Bindable.Effects.Contains(effect1)); + Assert.That(Bindable.Effects.Contains(effect2)); + }); } [Test] @@ -86,14 +92,20 @@ static Label AssertDynamicResources() { var label = new Label { Resources = new ResourceDictionary { { "TextKey", "TextValue" }, { "ColorKey", Colors.Green } } }; - Assert.That(label.Text, Is.EqualTo(Label.TextProperty.DefaultValue)); - Assert.That(label.TextColor, Is.EqualTo(Label.TextColorProperty.DefaultValue)); + Assert.Multiple(() => + { + Assert.That(label.Text, Is.EqualTo(Label.TextProperty.DefaultValue)); + Assert.That(label.TextColor, Is.EqualTo(Label.TextColorProperty.DefaultValue)); + }); label.DynamicResources((Label.TextProperty, "TextKey"), (Label.TextColorProperty, "ColorKey")); - Assert.That(label.Text, Is.EqualTo("TextValue")); - Assert.That(label.TextColor, Is.EqualTo(Colors.Green)); + Assert.Multiple(() => + { + Assert.That(label.Text, Is.EqualTo("TextValue")); + Assert.That(label.TextColor, Is.EqualTo(Colors.Green)); + }); return label; } diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/FuncConverterTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/FuncConverterTests.cs index 9b2c1d85..8a2f4ef1 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/FuncConverterTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/FuncConverterTests.cs @@ -39,13 +39,21 @@ public void TwoWayMultiWithParamAndCulture() .AssertConvert(new object[] { 'a', 2 }, true, "aaa", twoWay: true, culture: expectedCulture) .AssertConvert(new object[] { 'b', 4 }, false, "bbbb", twoWay: true, culture: expectedCulture); - Assert.That(convertCulture, Is.EqualTo(expectedCulture)); - Assert.That(convertBackCulture, Is.EqualTo(expectedCulture)); + Assert.Multiple(() => + { + Assert.That(convertCulture, Is.EqualTo(expectedCulture)); + Assert.That(convertBackCulture, Is.EqualTo(expectedCulture)); + + Assert.That(converter.Convert(new object[] { 'a', 2 }, null, null, CultureInfo.InvariantCulture), Is.EqualTo("aa")); + }); - Assert.That(converter.Convert(new object[] { 'a', 2 }, null, null, CultureInfo.InvariantCulture), Is.EqualTo("aa")); var backValues = converter.ConvertBack(null, null, null, CultureInfo.InvariantCulture); - Assert.That((char)backValues[0], Is.EqualTo('\0')); - Assert.That((int)backValues[1], Is.EqualTo(0)); + + Assert.Multiple(() => + { + Assert.That((char)backValues[0], Is.EqualTo('\0')); + Assert.That((int)backValues[1], Is.EqualTo(0)); + }); } [Test] @@ -76,8 +84,12 @@ public void TwoWayMultiWithParam() Assert.That(converter.Convert(new object[] { 'a', 2 }, null, null, CultureInfo.InvariantCulture), Is.EqualTo("aa")); var backValues = converter.ConvertBack(null, null, null, CultureInfo.InvariantCulture); - Assert.That((char)backValues[0], Is.EqualTo('\0')); - Assert.That((int)backValues[1], Is.EqualTo(0)); + + Assert.Multiple(() => + { + Assert.That((char)backValues[0], Is.EqualTo('\0')); + Assert.That((int)backValues[1], Is.EqualTo(0)); + }); } [Test] @@ -102,9 +114,14 @@ public void TwoWayMulti() .AssertConvert(new object[] { 'b', 4 }, false, "bbbb", twoWay: true); Assert.That(converter.Convert(new object[] { 'a', 2 }, null, null, CultureInfo.InvariantCulture), Is.EqualTo("aa")); + var backValues = converter.ConvertBack(null, null, null, CultureInfo.InvariantCulture); - Assert.That((char)backValues[0], Is.EqualTo('\0')); - Assert.That((int)backValues[1], Is.EqualTo(0)); + + Assert.Multiple(() => + { + Assert.That((char)backValues[0], Is.EqualTo('\0')); + Assert.That((int)backValues[1], Is.EqualTo(0)); + }); } [Test] @@ -127,11 +144,14 @@ public void FullyTypedTwoWayWithParamAndCulture() .AssertConvert(true, 0.5f, Colors.Red.MultiplyAlpha(0.5f), twoWay: true, culture: expectedCulture) .AssertConvert(false, 0.2f, Colors.Green.MultiplyAlpha(0.2f), twoWay: true, culture: expectedCulture); - Assert.That(convertCulture, Is.EqualTo(expectedCulture)); - Assert.That(convertBackCulture, Is.EqualTo(expectedCulture)); + Assert.Multiple(() => + { + Assert.That(convertCulture, Is.EqualTo(expectedCulture)); + Assert.That(convertBackCulture, Is.EqualTo(expectedCulture)); - Assert.That(converter.Convert(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(Colors.Green.MultiplyAlpha(default))); - Assert.That(converter.ConvertBack(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(default(bool))); + Assert.That(converter.Convert(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(Colors.Green.MultiplyAlpha(default))); + Assert.That(converter.ConvertBack(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(default(bool))); + }); } [Test] @@ -143,8 +163,11 @@ public void FullyTypedTwoWayWithParam() .AssertConvert(true, 0.5f, Colors.Red.MultiplyAlpha(0.5f), twoWay: true) .AssertConvert(false, 0.2f, Colors.Green.MultiplyAlpha(0.2f), twoWay: true); - Assert.That(converter.Convert(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(Colors.Green.MultiplyAlpha(default))); - Assert.That(converter.ConvertBack(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(default(bool))); + Assert.Multiple(() => + { + Assert.That(converter.Convert(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(Colors.Green.MultiplyAlpha(default))); + Assert.That(converter.ConvertBack(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(default(bool))); + }); } [Test] @@ -156,8 +179,11 @@ public void FullyTypedTwoWay() .AssertConvert(true, Colors.Red, twoWay: true) .AssertConvert(false, Colors.Green, twoWay: true); - Assert.That(converter.Convert(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(Colors.Green)); - Assert.That(converter.ConvertBack(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(default(bool))); + Assert.Multiple(() => + { + Assert.That(converter.Convert(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(Colors.Green)); + Assert.That(converter.ConvertBack(null, typeof(object), null, CultureInfo.InvariantCulture), Is.EqualTo(default(bool))); + }); } [Test] @@ -312,9 +338,13 @@ public void NotConverterTest() { var c = NotConverter.Instance; c = NotConverter.Instance; // 2nd time to test instance reuse - Assert.That((bool?)c.Convert(false, null, null, null), Is.True); - Assert.That((bool?)c.Convert(true, null, null, null), Is.False); - Assert.That((bool?)c.ConvertBack(false, null, null, null), Is.True); - Assert.That((bool?)c.ConvertBack(true, null, null, null), Is.False); + + Assert.Multiple(() => + { + Assert.That((bool?)c.Convert(false, null, null, null), Is.True); + Assert.That((bool?)c.Convert(true, null, null, null), Is.False); + Assert.That((bool?)c.ConvertBack(false, null, null, null), Is.True); + Assert.That((bool?)c.ConvertBack(true, null, null, null), Is.False); + }); } } \ No newline at end of file diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/GesturesExtensionsTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/GesturesExtensionsTests.cs index 40e690a9..483292a1 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/GesturesExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/GesturesExtensionsTests.cs @@ -32,9 +32,13 @@ public void BindClickGesturePositionalParameters() gestureElement.BindClickGesture(nameof(ViewModel.SetGuidCommand), commandSource, nameof(ViewModel.Id), parameterSource, numberOfClicks); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((ClickGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfClicksRequired, Is.EqualTo(numberOfClicks)); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((ClickGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfClicksRequired, Is.EqualTo(numberOfClicks)); + }); + BindingHelpers.AssertBindingExists((ClickGestureRecognizer)gestureElement.GestureRecognizers[0], ClickGestureRecognizer.CommandProperty, nameof(ViewModel.SetGuidCommand), source: commandSource); BindingHelpers.AssertBindingExists((ClickGestureRecognizer)gestureElement.GestureRecognizers[0], ClickGestureRecognizer.CommandParameterProperty, nameof(ViewModel.Id), source: parameterSource); } @@ -62,9 +66,12 @@ public void BindTapGesturePositionalParameters() gestureElement.BindTapGesture(nameof(ViewModel.SetGuidCommand), commandSource, nameof(ViewModel.Id), parameterSource, numberOfTaps); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((TapGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfTapsRequired, Is.EqualTo(numberOfTaps)); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((TapGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfTapsRequired, Is.EqualTo(numberOfTaps)); + }); BindingHelpers.AssertBindingExists((TapGestureRecognizer)gestureElement.GestureRecognizers[0], TapGestureRecognizer.CommandProperty, nameof(ViewModel.SetGuidCommand), source: commandSource); BindingHelpers.AssertBindingExists((TapGestureRecognizer)gestureElement.GestureRecognizers[0], TapGestureRecognizer.CommandParameterProperty, nameof(ViewModel.Id), source: parameterSource); } @@ -81,10 +88,13 @@ public void ClickGesture() gestureElement.ClickGesture(() => clicks++, numberOfClicks); ((ClickGestureRecognizer)gestureElement.GestureRecognizers[0]).SendClicked(null, ButtonsMask.Primary); - Assert.That(clicks, Is.GreaterThan(0)); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((ClickGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfClicksRequired, Is.EqualTo(numberOfClicks)); + Assert.Multiple(() => + { + Assert.That(clicks, Is.GreaterThan(0)); + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((ClickGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfClicksRequired, Is.EqualTo(numberOfClicks)); + }); } [Test] @@ -98,10 +108,13 @@ public void TapGesture() gestureElement.TapGesture(() => taps++, numberOfTaps); ((TapGestureRecognizer)gestureElement.GestureRecognizers[0]).SendTapped(gestureElement); - Assert.That(taps, Is.GreaterThan(0)); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((TapGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfTapsRequired, Is.EqualTo(numberOfTaps)); + Assert.Multiple(() => + { + Assert.That(taps, Is.GreaterThan(0)); + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((TapGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfTapsRequired, Is.EqualTo(numberOfTaps)); + }); } [Test] @@ -128,10 +141,14 @@ public void BindSwipeGesturePositionalParameters() gestureElement.BindSwipeGesture(nameof(ViewModel.SetGuidCommand), commandSource, nameof(ViewModel.Id), parameterSource, direction, threshold); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Direction, Is.EqualTo(direction)); - Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Threshold, Is.EqualTo(threshold)); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Direction, Is.EqualTo(direction)); + Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Threshold, Is.EqualTo(threshold)); + }); + BindingHelpers.AssertBindingExists((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0], SwipeGestureRecognizer.CommandProperty, nameof(ViewModel.SetGuidCommand), source: commandSource); BindingHelpers.AssertBindingExists((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0], SwipeGestureRecognizer.CommandParameterProperty, nameof(ViewModel.Id), source: parameterSource); } @@ -147,10 +164,13 @@ public void PanGesture() gestureElement.PanGesture(OnPan, touchPoints); ((IPanGestureController)gestureElement.GestureRecognizers[0]).SendPan(null, 1, 2, 1); - Assert.That(panCount, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((PanGestureRecognizer)gestureElement.GestureRecognizers[0]).TouchPoints, Is.EqualTo(touchPoints)); + Assert.Multiple(() => + { + Assert.That(panCount, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((PanGestureRecognizer)gestureElement.GestureRecognizers[0]).TouchPoints, Is.EqualTo(touchPoints)); + }); void OnPan(object? sender, PanUpdatedEventArgs e) => panCount++; } @@ -165,9 +185,12 @@ public void PinchGesture() gestureElement.PinchGesture(OnPinch); ((IPinchGestureController)gestureElement.GestureRecognizers[0]).SendPinch(null, 2, new Microsoft.Maui.Graphics.Point()); - Assert.That(pinchCount, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(pinchCount)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(pinchCount, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(pinchCount)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + }); void OnPinch(object? sender, PinchGestureUpdatedEventArgs e) => pinchCount++; } @@ -184,11 +207,14 @@ public void SwipeGesture() gestureElement.SwipeGesture(OnSwipe, direction, threshold); ((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).SendSwiped(null, direction); - Assert.That(swipeCount, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Direction, Is.EqualTo(direction)); - Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Threshold, Is.EqualTo(threshold)); + Assert.Multiple(() => + { + Assert.That(swipeCount, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Direction, Is.EqualTo(direction)); + Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Threshold, Is.EqualTo(threshold)); + }); void OnSwipe(object? sender, SwipedEventArgs e) => swipeCount++; } @@ -201,9 +227,12 @@ public void MultipleGestures() gestureElement.PanGesture(); gestureElement.SwipeGesture(); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(2)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(gestureElement.GestureRecognizers[1], Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(2)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(gestureElement.GestureRecognizers[1], Is.InstanceOf()); + }); } [Test] @@ -227,8 +256,12 @@ public void BindClickGestureDefaults() gestureElement.BindClickGesture(static (ViewModel vm) => vm.SetGuidCommand); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + }); + BindingHelpers.AssertTypedBindingExists((ClickGestureRecognizer)gestureElement.GestureRecognizers[0], ClickGestureRecognizer.CommandProperty, BindingMode.Default, gestureElement.BindingContext); } @@ -251,8 +284,12 @@ public void BindClickGestureDefaultsWithNestedBindings() }, mode: BindingMode.OneTime); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + }); + BindingHelpers.AssertTypedBindingExists((ClickGestureRecognizer)gestureElement.GestureRecognizers[0], ClickGestureRecognizer.CommandProperty, BindingMode.OneTime, gestureElement.BindingContext); } @@ -275,9 +312,13 @@ public void BindClickGesturePositionalParameters() parameterGetter: static (ViewModel vm) => vm.Id, numberOfClicksRequired: numberOfClicks); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((ClickGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfClicksRequired, Is.EqualTo(numberOfClicks)); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((ClickGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfClicksRequired, Is.EqualTo(numberOfClicks)); + }); + BindingHelpers.AssertTypedBindingExists((ClickGestureRecognizer)gestureElement.GestureRecognizers[0], ClickGestureRecognizer.CommandProperty, BindingMode.OneTime, gestureElement.BindingContext); BindingHelpers.AssertTypedBindingExists((ClickGestureRecognizer)gestureElement.GestureRecognizers[0], ClickGestureRecognizer.CommandParameterProperty, BindingMode.Default, gestureElement.BindingContext); } @@ -310,9 +351,13 @@ public void BindClickGesturePositionalParametersWithNestedBindings() }, numberOfClicksRequired: numberOfClicks); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((ClickGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfClicksRequired, Is.EqualTo(numberOfClicks)); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((ClickGestureRecognizer)gestureElement.GestureRecognizers[0]).NumberOfClicksRequired, Is.EqualTo(numberOfClicks)); + }); + BindingHelpers.AssertTypedBindingExists((ClickGestureRecognizer)gestureElement.GestureRecognizers[0], ClickGestureRecognizer.CommandProperty, BindingMode.OneTime, gestureElement.BindingContext); BindingHelpers.AssertTypedBindingExists((ClickGestureRecognizer)gestureElement.GestureRecognizers[0], ClickGestureRecognizer.CommandParameterProperty, BindingMode.Default, gestureElement.BindingContext); } @@ -329,8 +374,12 @@ public void BindTapGestureDefaults() gestureElement.BindTapGesture(static (ViewModel vm) => vm.SetGuidCommand); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + }); + BindingHelpers.AssertTypedBindingExists((TapGestureRecognizer)gestureElement.GestureRecognizers[0], TapGestureRecognizer.CommandProperty, BindingMode.Default, gestureElement.BindingContext); } @@ -350,8 +399,12 @@ public void BindTapGestureDefaultsWithNestedBindings() }, mode: BindingMode.OneTime); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + }); + BindingHelpers.AssertTypedBindingExists((TapGestureRecognizer)gestureElement.GestureRecognizers[0], TapGestureRecognizer.CommandProperty, BindingMode.OneTime, gestureElement.BindingContext); } @@ -380,10 +433,14 @@ public void BindTapGesturePositionalParameters() tapGestureRecognizer.SendTapped(gestureElement); - Assert.That(viewModel.Id, Is.EqualTo(guid)); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(tapGestureRecognizer.NumberOfTapsRequired, Is.EqualTo(numberOfTaps)); + Assert.Multiple(() => + { + Assert.That(viewModel.Id, Is.EqualTo(guid)); + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(tapGestureRecognizer.NumberOfTapsRequired, Is.EqualTo(numberOfTaps)); + }); + BindingHelpers.AssertTypedBindingExists(tapGestureRecognizer, TapGestureRecognizer.CommandProperty, BindingMode.OneTime, gestureElement.BindingContext); BindingHelpers.AssertTypedBindingExists(tapGestureRecognizer, TapGestureRecognizer.CommandParameterProperty, BindingMode.OneTime, gestureElement.BindingContext); } @@ -416,9 +473,13 @@ public void BindTapGesturePositionalParametersWithNestedBindings() var tapGestureRecognizer = (TapGestureRecognizer)gestureElement.GestureRecognizers[0]; - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(tapGestureRecognizer.NumberOfTapsRequired, Is.EqualTo(numberOfTaps)); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(tapGestureRecognizer.NumberOfTapsRequired, Is.EqualTo(numberOfTaps)); + }); + BindingHelpers.AssertTypedBindingExists(tapGestureRecognizer, TapGestureRecognizer.CommandProperty, BindingMode.OneTime, gestureElement.BindingContext); BindingHelpers.AssertTypedBindingExists(tapGestureRecognizer, TapGestureRecognizer.CommandParameterProperty, BindingMode.Default, gestureElement.BindingContext); } @@ -454,8 +515,12 @@ public void BindSwipeGestureWithNestedBindings() }, mode: BindingMode.OneTime); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + }); + BindingHelpers.AssertTypedBindingExists((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0], SwipeGestureRecognizer.CommandProperty, BindingMode.OneTime, gestureElement.BindingContext); } @@ -488,11 +553,15 @@ public void BindSwipeGesturePositionalParameters() swipeGestureRecognizer.SendSwiped(gestureElement, direction); - Assert.That(viewModel.Id, Is.EqualTo(guid)); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Direction, Is.EqualTo(direction)); - Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Threshold, Is.EqualTo(threshold)); + Assert.Multiple(() => + { + Assert.That(viewModel.Id, Is.EqualTo(guid)); + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Direction, Is.EqualTo(direction)); + Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Threshold, Is.EqualTo(threshold)); + }); + BindingHelpers.AssertTypedBindingExists((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0], SwipeGestureRecognizer.CommandProperty, BindingMode.OneTime, gestureElement.BindingContext); BindingHelpers.AssertTypedBindingExists((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0], SwipeGestureRecognizer.CommandParameterProperty, BindingMode.OneTime, gestureElement.BindingContext); } @@ -523,10 +592,14 @@ public void BindSwipeGesturePositionalParametersWithNestedBindings() direction: direction, threshold: threshold); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Direction, Is.EqualTo(direction)); - Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Threshold, Is.EqualTo(threshold)); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(1)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Direction, Is.EqualTo(direction)); + Assert.That(((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0]).Threshold, Is.EqualTo(threshold)); + }); + BindingHelpers.AssertTypedBindingExists((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0], SwipeGestureRecognizer.CommandProperty, BindingMode.OneTime, gestureElement.BindingContext); BindingHelpers.AssertTypedBindingExists((SwipeGestureRecognizer)gestureElement.GestureRecognizers[0], SwipeGestureRecognizer.CommandParameterProperty, BindingMode.Default, gestureElement.BindingContext); } @@ -536,16 +609,19 @@ public void BindSwipeGesturePositionalParametersWithNestedBindings() public void MultipleGestureBindings() { var gestureElement = new TGestureElement - { - BindingContext = new ViewModel() - }.BindSwipeGesture(static (ViewModel vm) => vm.SetGuidCommand) + { + BindingContext = new ViewModel() + }.BindSwipeGesture(static (ViewModel vm) => vm.SetGuidCommand) .BindTapGesture(static (ViewModel vm) => vm.SetGuidCommand) .BindClickGesture(static (ViewModel vm) => vm.SetGuidCommand); - Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(3)); - Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); - Assert.That(gestureElement.GestureRecognizers[1], Is.InstanceOf()); - Assert.That(gestureElement.GestureRecognizers[2], Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(gestureElement.GestureRecognizers.Count, Is.EqualTo(3)); + Assert.That(gestureElement.GestureRecognizers[0], Is.InstanceOf()); + Assert.That(gestureElement.GestureRecognizers[1], Is.InstanceOf()); + Assert.That(gestureElement.GestureRecognizers[2], Is.InstanceOf()); + }); } } diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/GridRowsColumns.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/GridRowsColumns.cs index 0cc46de1..490636c8 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/GridRowsColumns.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/GridRowsColumns.cs @@ -21,11 +21,14 @@ public void DefineRowsWithoutEnums() RowDefinitions = Rows.Define(Auto, Star, Stars(starsValue), 20) }; - Assert.That(grid.RowDefinitions.Count, Is.EqualTo(4)); - Assert.That(grid.RowDefinitions[0]?.Height, Is.EqualTo(GridLength.Auto)); - Assert.That(grid.RowDefinitions[1]?.Height, Is.EqualTo(GridLength.Star)); - Assert.That(grid.RowDefinitions[2]?.Height, Is.EqualTo(starsLength)); - Assert.That(grid.RowDefinitions[3]?.Height, Is.EqualTo(new GridLength(20))); + Assert.Multiple(() => + { + Assert.That(grid.RowDefinitions.Count, Is.EqualTo(4)); + Assert.That(grid.RowDefinitions[0]?.Height, Is.EqualTo(GridLength.Auto)); + Assert.That(grid.RowDefinitions[1]?.Height, Is.EqualTo(GridLength.Star)); + Assert.That(grid.RowDefinitions[2]?.Height, Is.EqualTo(starsLength)); + Assert.That(grid.RowDefinitions[3]?.Height, Is.EqualTo(new GridLength(20))); + }); } [Test] @@ -41,11 +44,14 @@ public void DefineRowsWithEnums() ) }; - Assert.That(grid.RowDefinitions.Count, Is.EqualTo(4)); - Assert.That(grid.RowDefinitions[0]?.Height, Is.EqualTo(GridLength.Auto)); - Assert.That(grid.RowDefinitions[1]?.Height, Is.EqualTo(GridLength.Star)); - Assert.That(grid.RowDefinitions[2]?.Height, Is.EqualTo(starsLength)); - Assert.That(grid.RowDefinitions[3]?.Height, Is.EqualTo(new GridLength(20))); + Assert.Multiple(() => + { + Assert.That(grid.RowDefinitions.Count, Is.EqualTo(4)); + Assert.That(grid.RowDefinitions[0]?.Height, Is.EqualTo(GridLength.Auto)); + Assert.That(grid.RowDefinitions[1]?.Height, Is.EqualTo(GridLength.Star)); + Assert.That(grid.RowDefinitions[2]?.Height, Is.EqualTo(starsLength)); + Assert.That(grid.RowDefinitions[3]?.Height, Is.EqualTo(new GridLength(20))); + }); } [Test] @@ -65,12 +71,15 @@ public void DefineColumnsWithoutEnums() ColumnDefinitions = Columns.Define(Auto, Star, Stars(starsValue), 20, 40) }; - Assert.That(grid.ColumnDefinitions.Count, Is.EqualTo(5)); - Assert.That(grid.ColumnDefinitions[0]?.Width, Is.EqualTo(GridLength.Auto)); - Assert.That(grid.ColumnDefinitions[1]?.Width, Is.EqualTo(GridLength.Star)); - Assert.That(grid.ColumnDefinitions[2]?.Width, Is.EqualTo(starsLength)); - Assert.That(grid.ColumnDefinitions[3]?.Width, Is.EqualTo(new GridLength(20))); - Assert.That(grid.ColumnDefinitions[4]?.Width, Is.EqualTo(new GridLength(40))); + Assert.Multiple(() => + { + Assert.That(grid.ColumnDefinitions.Count, Is.EqualTo(5)); + Assert.That(grid.ColumnDefinitions[0]?.Width, Is.EqualTo(GridLength.Auto)); + Assert.That(grid.ColumnDefinitions[1]?.Width, Is.EqualTo(GridLength.Star)); + Assert.That(grid.ColumnDefinitions[2]?.Width, Is.EqualTo(starsLength)); + Assert.That(grid.ColumnDefinitions[3]?.Width, Is.EqualTo(new GridLength(20))); + Assert.That(grid.ColumnDefinitions[4]?.Width, Is.EqualTo(new GridLength(40))); + }); } [Test] @@ -87,12 +96,15 @@ public void DefineColumnsWithEnums() ) }; - Assert.That(grid.ColumnDefinitions.Count, Is.EqualTo(5)); - Assert.That(grid.ColumnDefinitions[0]?.Width, Is.EqualTo(GridLength.Auto)); - Assert.That(grid.ColumnDefinitions[1]?.Width, Is.EqualTo(GridLength.Star)); - Assert.That(grid.ColumnDefinitions[2]?.Width, Is.EqualTo(starsLength)); - Assert.That(grid.ColumnDefinitions[3]?.Width, Is.EqualTo(new GridLength(20))); - Assert.That(grid.ColumnDefinitions[4]?.Width, Is.EqualTo(new GridLength(40))); + Assert.Multiple(() => + { + Assert.That(grid.ColumnDefinitions.Count, Is.EqualTo(5)); + Assert.That(grid.ColumnDefinitions[0]?.Width, Is.EqualTo(GridLength.Auto)); + Assert.That(grid.ColumnDefinitions[1]?.Width, Is.EqualTo(GridLength.Star)); + Assert.That(grid.ColumnDefinitions[2]?.Width, Is.EqualTo(starsLength)); + Assert.That(grid.ColumnDefinitions[3]?.Width, Is.EqualTo(new GridLength(20))); + Assert.That(grid.ColumnDefinitions[4]?.Width, Is.EqualTo(new GridLength(40))); + }); } [Test] diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/ObjectExtensionsTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/ObjectExtensionsTests.cs index ebfbaf16..7aa622d0 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/ObjectExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/ObjectExtensionsTests.cs @@ -17,8 +17,12 @@ public void AssignLabel() public void AssignCustomLabel() { var createdLabel = new CustomLabel().Assign(out Label assignedLabel).Assign(out CustomLabel assignedCustomLabel); - Assert.That(ReferenceEquals(createdLabel, assignedLabel)); - Assert.That(ReferenceEquals(assignedCustomLabel, assignedLabel)); + + Assert.Multiple(() => + { + Assert.That(ReferenceEquals(createdLabel, assignedLabel)); + Assert.That(ReferenceEquals(assignedCustomLabel, assignedLabel)); + }); } [Test] @@ -29,11 +33,14 @@ public void AssignString() var createdString = text.Invoke(_ => testString = text).Assign(out string assignedString); - Assert.That(testString, Is.Not.Null); - Assert.That(testString, Is.EqualTo(text)); - Assert.That(assignedString, Is.EqualTo(text)); - Assert.That(createdString, Is.EqualTo(text)); - Assert.That(ReferenceEquals(createdString, assignedString)); + Assert.Multiple(() => + { + Assert.That(testString, Is.Not.Null); + Assert.That(testString, Is.EqualTo(text)); + Assert.That(assignedString, Is.EqualTo(text)); + Assert.That(createdString, Is.EqualTo(text)); + Assert.That(ReferenceEquals(createdString, assignedString)); + }); } [Test] diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/StyleTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/StyleTests.cs index c0a13778..cc84f0ce 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/StyleTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/StyleTests.cs @@ -24,8 +24,12 @@ public void StyleSingleSetter() Assert.That(formsStyle.Setters.Count, Is.EqualTo(1)); var setter = formsStyle.Setters[0]; - Assert.That(setter.Property, Is.EqualTo(Label.TextColorProperty)); - Assert.That(setter.Value, Is.EqualTo(Colors.Red)); + + Assert.Multiple(() => + { + Assert.That(setter.Property, Is.EqualTo(Label.TextColorProperty)); + Assert.That(setter.Value, Is.EqualTo(Colors.Red)); + }); } [Test] @@ -39,12 +43,20 @@ public void StyleMultipleSetters() Assert.That(formsStyle.Setters.Count, Is.EqualTo(2)); var setter1 = formsStyle.Setters[0]; - Assert.That(setter1.Property, Is.EqualTo(Label.TextColorProperty)); - Assert.That(setter1.Value, Is.EqualTo(Colors.Red)); + + Assert.Multiple(() => + { + Assert.That(setter1.Property, Is.EqualTo(Label.TextColorProperty)); + Assert.That(setter1.Value, Is.EqualTo(Colors.Red)); + }); var setter2 = formsStyle.Setters[1]; - Assert.That(setter2.Property, Is.EqualTo(Label.TranslationXProperty)); - Assert.That(setter2.Value, Is.EqualTo(8.0)); + + Assert.Multiple(() => + { + Assert.That(setter2.Property, Is.EqualTo(Label.TranslationXProperty)); + Assert.That(setter2.Value, Is.EqualTo(8.0)); + }); } [Test] @@ -86,8 +98,12 @@ public void AddSingleSetter() Assert.That(formsStyle.Setters.Count, Is.EqualTo(1)); var setter = formsStyle.Setters[0]; - Assert.That(setter.Property, Is.EqualTo(Label.TextColorProperty)); - Assert.That(setter.Value, Is.EqualTo(Colors.Red)); + + Assert.Multiple(() => + { + Assert.That(setter.Property, Is.EqualTo(Label.TextColorProperty)); + Assert.That(setter.Value, Is.EqualTo(Colors.Red)); + }); } [Test] @@ -104,12 +120,20 @@ public void AddMultipleSetters() Assert.That(formsStyle.Setters.Count, Is.EqualTo(2)); var setter1 = formsStyle.Setters[0]; - Assert.That(setter1.Property, Is.EqualTo(Label.TextColorProperty)); - Assert.That(setter1.Value, Is.EqualTo(Colors.Red)); + + Assert.Multiple(() => + { + Assert.That(setter1.Property, Is.EqualTo(Label.TextColorProperty)); + Assert.That(setter1.Value, Is.EqualTo(Colors.Red)); + }); var setter2 = formsStyle.Setters[1]; - Assert.That(setter2.Property, Is.EqualTo(Label.TranslationXProperty)); - Assert.That(setter2.Value, Is.EqualTo(8.0)); + + Assert.Multiple(() => + { + Assert.That(setter2.Property, Is.EqualTo(Label.TranslationXProperty)); + Assert.That(setter2.Value, Is.EqualTo(8.0)); + }); } [Test] @@ -122,8 +146,11 @@ public void AddSingleBehavior() style.Add(behavior); - Assert.That(formsStyle.Behaviors.Count, Is.EqualTo(1)); - Assert.That(ReferenceEquals(formsStyle.Behaviors[0], behavior)); + Assert.Multiple(() => + { + Assert.That(formsStyle.Behaviors.Count, Is.EqualTo(1)); + Assert.That(ReferenceEquals(formsStyle.Behaviors[0], behavior)); + }); } [Test] @@ -137,9 +164,12 @@ public void AddMultipleBehaviors() style.Add(behavior1, behavior2); - Assert.That(formsStyle.Behaviors.Count, Is.EqualTo(2)); - Assert.That(ReferenceEquals(formsStyle.Behaviors[0], behavior1)); - Assert.That(ReferenceEquals(formsStyle.Behaviors[1], behavior2)); + Assert.Multiple(() => + { + Assert.That(formsStyle.Behaviors.Count, Is.EqualTo(2)); + Assert.That(ReferenceEquals(formsStyle.Behaviors[0], behavior1)); + Assert.That(ReferenceEquals(formsStyle.Behaviors[1], behavior2)); + }); } [Test] @@ -152,8 +182,11 @@ public void AddSingleTrigger() style.Add(trigger); - Assert.That(formsStyle.Triggers.Count, Is.EqualTo(1)); - Assert.That(ReferenceEquals(formsStyle.Triggers[0], trigger)); + Assert.Multiple(() => + { + Assert.That(formsStyle.Triggers.Count, Is.EqualTo(1)); + Assert.That(ReferenceEquals(formsStyle.Triggers[0], trigger)); + }); } [Test] @@ -167,9 +200,12 @@ public void AddMultipleTriggers() style.Add(trigger1, trigger2); - Assert.That(formsStyle.Triggers.Count, Is.EqualTo(2)); - Assert.That(ReferenceEquals(formsStyle.Triggers[0], trigger1)); - Assert.That(ReferenceEquals(formsStyle.Triggers[1], trigger2)); + Assert.Multiple(() => + { + Assert.That(formsStyle.Triggers.Count, Is.EqualTo(2)); + Assert.That(ReferenceEquals(formsStyle.Triggers[0], trigger1)); + Assert.That(ReferenceEquals(formsStyle.Triggers[1], trigger2)); + }); } [Test] @@ -197,11 +233,14 @@ public void Fluent() .Add(new Trigger(typeof(Label))) .CanCascade(true); - Assert.That(style.MauiStyle.CanCascade, Is.True); - Assert.That(style.MauiStyle.Setters[0].Value, Is.EqualTo(Colors.Red)); - Assert.That(style.MauiStyle.Behaviors[0], Is.InstanceOf()); - Assert.That(style.MauiStyle.Triggers[0], Is.InstanceOf()); - Assert.That(style.MauiStyle.CanBeAppliedTo(typeof(Label)), Is.True); + Assert.Multiple(() => + { + Assert.That(style.MauiStyle.CanCascade, Is.True); + Assert.That(style.MauiStyle.Setters[0].Value, Is.EqualTo(Colors.Red)); + Assert.That(style.MauiStyle.Behaviors[0], Is.InstanceOf()); + Assert.That(style.MauiStyle.Triggers[0], Is.InstanceOf()); + Assert.That(style.MauiStyle.CanBeAppliedTo(typeof(Label)), Is.True); + }); } [TestCase(AppTheme.Light)] @@ -235,8 +274,11 @@ public void AddAppThemeBindingsCorrectlySetsPropertiesToChangeBasedOnApplication .AppThemeBinding(Label.TextProperty, nameof(AppTheme.Light), nameof(AppTheme.Dark)), (label) => { - Assert.That(label.TextColor, Is.EqualTo(expectedColor)); - Assert.That(label.Text, Is.EqualTo(expectedText)); + Assert.Multiple(() => + { + Assert.That(label.TextColor, Is.EqualTo(expectedColor)); + Assert.That(label.Text, Is.EqualTo(expectedText)); + }); }); } diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/TextAlignmentExtensionsTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/TextAlignmentExtensionsTests.cs index 775525dc..7eda40a6 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/TextAlignmentExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/TextAlignmentExtensionsTests.cs @@ -153,8 +153,11 @@ public void GenericPickerShouldUseThePickerExtension() var generatedPicker = genericPicker.TextEnd(); - Assert.That(genericPicker.HorizontalTextAlignment, Is.EqualTo(TextAlignment.End)); - Assert.That(generatedPicker, Is.InstanceOf>()); + Assert.Multiple(() => + { + Assert.That(genericPicker.HorizontalTextAlignment, Is.EqualTo(TextAlignment.End)); + Assert.That(generatedPicker, Is.InstanceOf>()); + }); } [Test] @@ -391,8 +394,11 @@ public void SupportPartialClasses() .TextBottom() .TextCenter(); - Assert.That(partialClassControl.IsPartial, Is.True); - Assert.That(partialClassControl, Is.InstanceOf()); + Assert.Multiple(() => + { + Assert.That(partialClassControl.IsPartial, Is.True); + Assert.That(partialClassControl, Is.InstanceOf()); + }); } [Test] diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/TypedBindingExtensionsTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/TypedBindingExtensionsTests.cs index 326d9d9e..9bc7872b 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/TypedBindingExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/TypedBindingExtensionsTests.cs @@ -83,8 +83,11 @@ public void BindCommandWithParameters() BindingHelpers.AssertTypedBindingExists(textCell, TextCell.CommandProperty, BindingMode.OneTime, viewModel); BindingHelpers.AssertTypedBindingExists(textCell, TextCell.CommandParameterProperty, BindingMode.OneWay, viewModel); - Assert.That(viewModel.Command, Is.EqualTo(textCell.Command)); - Assert.That(viewModel.Id, Is.EqualTo(textCell.CommandParameter)); + Assert.Multiple(() => + { + Assert.That(viewModel.Command, Is.EqualTo(textCell.Command)); + Assert.That(viewModel.Id, Is.EqualTo(textCell.CommandParameter)); + }); } [Test] @@ -107,14 +110,21 @@ public async Task ConfirmStringFormat() Assert.That(label.Text, Is.EqualTo(string.Format(stringFormat, ViewModel.DefaultPercentage))); label.Text = string.Format(stringFormat, 0.1); - Assert.That(label.Text, Is.EqualTo("0.1%")); - Assert.That(viewModel.Percentage, Is.EqualTo(ViewModel.DefaultPercentage)); + + Assert.Multiple(() => + { + Assert.That(label.Text, Is.EqualTo("0.1%")); + Assert.That(viewModel.Percentage, Is.EqualTo(ViewModel.DefaultPercentage)); + }); viewModel.Percentage = 0.6; var propertyName = await propertyChangedEventArgsTCS.Task; - Assert.That(didPropertyChangeFire, Is.True); - Assert.That(propertyName, Is.EqualTo(nameof(ViewModel.Percentage))); + Assert.Multiple(() => + { + Assert.That(didPropertyChangeFire, Is.True); + Assert.That(propertyName, Is.EqualTo(nameof(ViewModel.Percentage))); + }); void HandlePropertyChanged(object? sender, PropertyChangedEventArgs e) { @@ -149,18 +159,25 @@ public async Task ConfirmReadOnlyTypedBindings() var viewModelPropertyName = await viewModelPropertyChangedEventArgsTCS.Task; var labelPropertyName = await labelPropertyChangedEventArgsTCS.Task; - Assert.That(didViewModelPropertyChangeFire, Is.True); - Assert.That(viewModelPropertyName, Is.EqualTo(nameof(ViewModel.TextColor))); + Assert.Multiple(() => + { + Assert.That(didViewModelPropertyChangeFire, Is.True); + Assert.That(viewModelPropertyName, Is.EqualTo(nameof(ViewModel.TextColor))); - Assert.That(didLabelPropertyChangeFire, Is.True); - Assert.That(labelPropertyName, Is.EqualTo(nameof(Label.TextColor))); + Assert.That(didLabelPropertyChangeFire, Is.True); + Assert.That(labelPropertyName, Is.EqualTo(nameof(Label.TextColor))); - Assert.That(viewModel.TextColor, Is.EqualTo(Colors.Green)); - Assert.That(label.GetValue(Label.TextColorProperty), Is.EqualTo(Colors.Green)); + Assert.That(viewModel.TextColor, Is.EqualTo(Colors.Green)); + Assert.That(label.GetValue(Label.TextColorProperty), Is.EqualTo(Colors.Green)); + }); label.TextColor = Colors.Red; - Assert.That(label.TextColor, Is.EqualTo(Colors.Red)); - Assert.That(viewModel.TextColor, Is.EqualTo(Colors.Green)); + + Assert.Multiple(() => + { + Assert.That(label.TextColor, Is.EqualTo(Colors.Red)); + Assert.That(viewModel.TextColor, Is.EqualTo(Colors.Green)); + }); void HandleViewModelPropertyChanged(object? sender, PropertyChangedEventArgs e) { @@ -195,15 +212,22 @@ public void ConfirmOneTimeBinding() Assert.That(label.TextColor, Is.EqualTo(ViewModel.DefaultColor)); viewModel.TextColor = Colors.Green; - Assert.That(viewModel.TextColor, Is.EqualTo(Colors.Green)); - Assert.That(label.GetValue(Label.TextColorProperty), Is.EqualTo(ViewModel.DefaultColor)); + Assert.Multiple(() => + { + Assert.That(viewModel.TextColor, Is.EqualTo(Colors.Green)); + Assert.That(label.GetValue(Label.TextColorProperty), Is.EqualTo(ViewModel.DefaultColor)); + }); label.TextColor = Colors.Red; - Assert.That(label.TextColor, Is.EqualTo(Colors.Red)); - Assert.That(viewModel.TextColor, Is.EqualTo(Colors.Green)); - Assert.That(didViewModelPropertyChangeFire, Is.True); - Assert.That(didLabelPropertyChangeFire, Is.True); + Assert.Multiple(() => + { + Assert.That(label.TextColor, Is.EqualTo(Colors.Red)); + Assert.That(viewModel.TextColor, Is.EqualTo(Colors.Green)); + + Assert.That(didViewModelPropertyChangeFire, Is.True); + Assert.That(didLabelPropertyChangeFire, Is.True); + }); void HandleViewModelPropertyChanged(object? sender, PropertyChangedEventArgs e) { @@ -241,23 +265,30 @@ public async Task ConfirmReadWriteTypedBinding() Assert.That(slider.Value, Is.EqualTo(ViewModel.DefaultPercentage)); slider.Value = 1; - Assert.That(slider.Value, Is.EqualTo(1)); - Assert.That(viewModel.Percentage, Is.EqualTo(1)); + + Assert.Multiple(() => + { + Assert.That(slider.Value, Is.EqualTo(1)); + Assert.That(viewModel.Percentage, Is.EqualTo(1)); + }); viewModel.Percentage = 0.6; var viewModelPropertyName = await viewModelPropertyChangedEventArgsTCS.Task; var sliderPropertyName = await sliderPropertyChangedEventArgsTCS.Task; - Assert.That(didViewModelPropertyChangeFire, Is.True); - Assert.That(viewModelPropertyName, Is.EqualTo(nameof(ViewModel.Percentage))); - Assert.That(viewModelPropertyChangedEventCount, Is.EqualTo(2)); + Assert.Multiple(() => + { + Assert.That(didViewModelPropertyChangeFire, Is.True); + Assert.That(viewModelPropertyName, Is.EqualTo(nameof(ViewModel.Percentage))); + Assert.That(viewModelPropertyChangedEventCount, Is.EqualTo(2)); - Assert.That(didSliderPropertyChangeFire, Is.True); - Assert.That(sliderPropertyName, Is.EqualTo(nameof(Slider.Value))); - Assert.That(sliderPropertyChangedEventCount, Is.EqualTo(2)); + Assert.That(didSliderPropertyChangeFire, Is.True); + Assert.That(sliderPropertyName, Is.EqualTo(nameof(Slider.Value))); + Assert.That(sliderPropertyChangedEventCount, Is.EqualTo(2)); - Assert.That(slider.Value, Is.EqualTo(0.6)); - Assert.That(viewModel.Percentage, Is.EqualTo(0.6)); + Assert.That(slider.Value, Is.EqualTo(0.6)); + Assert.That(viewModel.Percentage, Is.EqualTo(0.6)); + }); void HandleViewModelPropertyChanged(object? sender, PropertyChangedEventArgs e) { @@ -333,14 +364,21 @@ public void ValueSetOnOneWayWithNestedPathBinding(bool setContextFirst, bool isD entry.BindingContext = viewmodel; } - Assert.That(viewmodel.Model.Model.TextColor, Is.EqualTo(ViewModel.DefaultColor)); - Assert.That(entry.GetValue(Entry.TextColorProperty), Is.EqualTo(ViewModel.DefaultColor)); + Assert.Multiple(() => + { + Assert.That(viewmodel.Model.Model.TextColor, Is.EqualTo(ViewModel.DefaultColor)); + Assert.That(entry.GetValue(Entry.TextColorProperty), Is.EqualTo(ViewModel.DefaultColor)); + }); var textColor = Colors.Pink; viewmodel.Model.Model.TextColor = textColor; - Assert.That(viewmodel.Model.Model.TextColor, Is.EqualTo(textColor)); - Assert.That(entry.GetValue(Entry.TextColorProperty), Is.EqualTo(textColor)); + + Assert.Multiple(() => + { + Assert.That(viewmodel.Model.Model.TextColor, Is.EqualTo(textColor)); + Assert.That(entry.GetValue(Entry.TextColorProperty), Is.EqualTo(textColor)); + }); } [TestCase(false, false)] @@ -406,14 +444,20 @@ public void ValueSetOnOneWayWithNestedPathBindingWithIValueConverter(bool setCon label.BindingContext = viewmodel; } - Assert.That(viewmodel.Model.Model.TextColor, Is.EqualTo(ViewModel.DefaultColor)); - Assert.That(label.GetValue(Label.TextProperty), Is.EqualTo(colorToHexRgbStringConverter.ConvertFrom(ViewModel.DefaultColor))); + Assert.Multiple(() => + { + Assert.That(viewmodel.Model.Model.TextColor, Is.EqualTo(ViewModel.DefaultColor)); + Assert.That(label.GetValue(Label.TextProperty), Is.EqualTo(colorToHexRgbStringConverter.ConvertFrom(ViewModel.DefaultColor))); + }); var textColor = Colors.Pink; viewmodel.Model.Model.TextColor = textColor; - Assert.That(viewmodel.Model.Model.TextColor, Is.EqualTo(textColor)); - Assert.That(label.GetValue(Label.TextProperty), Is.EqualTo(colorToHexRgbStringConverter.ConvertFrom(textColor))); + Assert.Multiple(() => + { + Assert.That(viewmodel.Model.Model.TextColor, Is.EqualTo(textColor)); + Assert.That(label.GetValue(Label.TextProperty), Is.EqualTo(colorToHexRgbStringConverter.ConvertFrom(textColor))); + }); } [Test] @@ -453,14 +497,17 @@ public async Task ConfirmReadOnlyTypedBindingWithIValueConverter() var viewModelPropertyName = await viewModelPropertyChangedEventArgsTCS.Task; var labelPropertyName = await labelPropertyChangedEventArgsTCS.Task; - Assert.That(didViewModelPropertyChangeFire, Is.True); - Assert.That(viewModelPropertyName, Is.EqualTo(nameof(ViewModel.TextColor))); - Assert.That(viewModelPropertyChangedEventCount, Is.EqualTo(1)); - - Assert.That(didLabelPropertyChangeFire, Is.True); - Assert.That(labelPropertyName, Is.EqualTo(nameof(Label.Text))); - Assert.That(labelPropertyChangedEventCount, Is.EqualTo(1)); - Assert.That(colorToHexRgbStringConverter.ConvertFrom(updatedTextColor), Is.EqualTo(label.Text)); + Assert.Multiple(() => + { + Assert.That(didViewModelPropertyChangeFire, Is.True); + Assert.That(viewModelPropertyName, Is.EqualTo(nameof(ViewModel.TextColor))); + Assert.That(viewModelPropertyChangedEventCount, Is.EqualTo(1)); + + Assert.That(didLabelPropertyChangeFire, Is.True); + Assert.That(labelPropertyName, Is.EqualTo(nameof(Label.Text))); + Assert.That(labelPropertyChangedEventCount, Is.EqualTo(1)); + Assert.That(colorToHexRgbStringConverter.ConvertFrom(updatedTextColor), Is.EqualTo(label.Text)); + }); void HandleViewModelPropertyChanged(object? sender, PropertyChangedEventArgs e) { @@ -511,14 +558,17 @@ public async Task ConfirmReadOnlyTypedBindingWithFuncConversion() var viewModelPropertyName = await viewModelPropertyChangedEventArgsTCS.Task; var sliderPropertyName = await sliderPropertyChangedEventArgsTCS.Task; - Assert.That(didViewModelPropertyChangeFire, Is.True); - Assert.That(viewModelPropertyName, Is.EqualTo(nameof(ViewModel.Percentage))); - Assert.That(viewModelPropertyChangedEventCount, Is.EqualTo(1)); - - Assert.That(didSliderPropertyChangeFire, Is.True); - Assert.That(sliderPropertyName, Is.EqualTo(nameof(Slider.ThumbColor))); - Assert.That(sliderPropertyChangedEventCount, Is.EqualTo(1)); - Assert.That(slider.ThumbColor, Is.EqualTo(Colors.Green)); + Assert.Multiple(() => + { + Assert.That(didViewModelPropertyChangeFire, Is.True); + Assert.That(viewModelPropertyName, Is.EqualTo(nameof(ViewModel.Percentage))); + Assert.That(viewModelPropertyChangedEventCount, Is.EqualTo(1)); + + Assert.That(didSliderPropertyChangeFire, Is.True); + Assert.That(sliderPropertyName, Is.EqualTo(nameof(Slider.ThumbColor))); + Assert.That(sliderPropertyChangedEventCount, Is.EqualTo(1)); + Assert.That(slider.ThumbColor, Is.EqualTo(Colors.Green)); + }); void HandleViewModelPropertyChanged(object? sender, PropertyChangedEventArgs e) { diff --git a/src/CommunityToolkit.Maui.Markup.UnitTests/VisualElementExtensionsTests.cs b/src/CommunityToolkit.Maui.Markup.UnitTests/VisualElementExtensionsTests.cs index 3deb2000..35ce0307 100644 --- a/src/CommunityToolkit.Maui.Markup.UnitTests/VisualElementExtensionsTests.cs +++ b/src/CommunityToolkit.Maui.Markup.UnitTests/VisualElementExtensionsTests.cs @@ -44,8 +44,12 @@ public void SizeNotUniform() { Bindable.WidthRequest = Bindable.HeightRequest = 1; Bindable.Size(2, 3); - Assert.That(Bindable.WidthRequest, Is.EqualTo(2)); - Assert.That(Bindable.HeightRequest, Is.EqualTo(3)); + + Assert.Multiple(() => + { + Assert.That(Bindable.WidthRequest, Is.EqualTo(2)); + Assert.That(Bindable.HeightRequest, Is.EqualTo(3)); + }); } [Test] @@ -53,8 +57,12 @@ public void SizeUniform() { Bindable.WidthRequest = Bindable.HeightRequest = 1; Bindable.Size(2); - Assert.That(Bindable.WidthRequest, Is.EqualTo(2)); - Assert.That(Bindable.HeightRequest, Is.EqualTo(2)); + + Assert.Multiple(() => + { + Assert.That(Bindable.WidthRequest, Is.EqualTo(2)); + Assert.That(Bindable.HeightRequest, Is.EqualTo(2)); + }); } [Test] @@ -62,8 +70,12 @@ public void MinSizeNotUniform() { Bindable.MinimumWidthRequest = Bindable.MinimumHeightRequest = 1; Bindable.MinSize(2, 3); - Assert.That(Bindable.MinimumWidthRequest, Is.EqualTo(2)); - Assert.That(Bindable.MinimumHeightRequest, Is.EqualTo(3)); + + Assert.Multiple(() => + { + Assert.That(Bindable.MinimumWidthRequest, Is.EqualTo(2)); + Assert.That(Bindable.MinimumHeightRequest, Is.EqualTo(3)); + }); } [Test] @@ -71,8 +83,12 @@ public void MinSizeUniform() { Bindable.MinimumWidthRequest = Bindable.MinimumHeightRequest = 1; Bindable.MinSize(2); - Assert.That(Bindable.MinimumWidthRequest, Is.EqualTo(2)); - Assert.That(Bindable.MinimumHeightRequest, Is.EqualTo(2)); + + Assert.Multiple(() => + { + Assert.That(Bindable.MinimumWidthRequest, Is.EqualTo(2)); + Assert.That(Bindable.MinimumHeightRequest, Is.EqualTo(2)); + }); } [Test] @@ -93,8 +109,12 @@ public void AnchorY() public void Anchor() { Bindable.Anchor(50, 75); - Assert.That(Bindable.AnchorX, Is.EqualTo(50)); - Assert.That(Bindable.AnchorY, Is.EqualTo(75)); + + Assert.Multiple(() => + { + Assert.That(Bindable.AnchorX, Is.EqualTo(50)); + Assert.That(Bindable.AnchorY, Is.EqualTo(75)); + }); } [Test] @@ -231,16 +251,24 @@ public void ScaleY() public void Scale_Different() { Bindable.Scale(2, 3); - Assert.That(Bindable.ScaleX, Is.EqualTo(2)); - Assert.That(Bindable.ScaleY, Is.EqualTo(3)); + + Assert.Multiple(() => + { + Assert.That(Bindable.ScaleX, Is.EqualTo(2)); + Assert.That(Bindable.ScaleY, Is.EqualTo(3)); + }); } [Test] public void Scale_Same() { Bindable.Scale(1.25); - Assert.That(Bindable.ScaleX, Is.EqualTo(1.25)); - Assert.That(Bindable.ScaleY, Is.EqualTo(1.25)); + + Assert.Multiple(() => + { + Assert.That(Bindable.ScaleX, Is.EqualTo(1.25)); + Assert.That(Bindable.ScaleY, Is.EqualTo(1.25)); + }); } [Test]