Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Enable Nullability on Xamarin.CommunityToolkit.Markup #1013

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,8 @@ public void ShouldNotDismissKeyboardWhenOptionSetToFalse()

Entry CreateEntry(int? maxLength = 2,
bool shouldDismissKeyboardAutomatically = false,
ICommand command = null,
EventHandler<MaxLengthReachedEventArgs> eventHandler = null)
ICommand? command = null,
EventHandler<MaxLengthReachedEventArgs>? eventHandler = null)
{
var behavior = new MaxLengthReachedBehavior
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,8 @@ public async Task ShouldExecuteCommandImmediatelyWhenMinimumLengthThreholdHasNot
public Entry CreateEntryWithBehavior(int timeThreshold = defaultTimeThreshold,
int lengthThreshold = defaultLengthThreshold,
bool shouldDismissKeyboardAutomatically = false,
ICommand command = null,
object commandParameter = null)
ICommand? command = null,
object? commandParameter = null)
{
var entry = new Entry
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class DoubleToIntConverter_Tests
[InlineData(2.55, 3)]
[InlineData(2.555, 3)]
[InlineData(2.555, 652, 255)]
public void DoubleToIntConverter(double value, int expectedResult, object ratio = null)
public void DoubleToIntConverter(double value, int expectedResult, object? ratio = null)
{
var doubleToIntConverter = new DoubleToIntConverter();

Expand All @@ -23,7 +23,7 @@ public void DoubleToIntConverter(double value, int expectedResult, object ratio

[Theory]
[InlineData(2, 2)]
public void DoubleToIntConverterBack(int value, double expectedResult, object ratio = null)
public void DoubleToIntConverterBack(int value, double expectedResult, object? ratio = null)
{
var doubleToIntConverter = new DoubleToIntConverter();

Expand Down
48 changes: 24 additions & 24 deletions ...mmunityToolkit/Xamarin.CommunityToolkit.UnitTests/Converters/EnumToBoolConverter_Tests.cs
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -80,68 +80,68 @@ public void EnumToBoolConvert_Validation(object[] trueValues, object value, obje
Assert.Equal(expectedResult, result);
}

public static IEnumerable<object[]> ConvertTestData()
public static IEnumerable<object?[]> ConvertTestData()
{
// Simple enum
yield return new object[]
yield return new object?[]
{
null, TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Five, true
};
yield return new object[]
yield return new object?[]
{
null, TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six, false
};
yield return new object[]
yield return new object?[]
{
new object[] { TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six }, TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six, true
new object?[] { TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six }, TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six, true
};
yield return new object[]
yield return new object?[]
{
new object[] { TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six }, TestEnumForEnumToBoolConverter.Six, null, true
new object?[] { TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six }, TestEnumForEnumToBoolConverter.Six, null, true
};
yield return new object[]
yield return new object?[]
{
new object[] { TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six }, TestEnumForEnumToBoolConverter.One, TestEnumForEnumToBoolConverter.Five, false
new object?[] { TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six }, TestEnumForEnumToBoolConverter.One, TestEnumForEnumToBoolConverter.Five, false
};
yield return new object[]
yield return new object?[]
{
new object[] { TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six }, TestEnumForEnumToBoolConverter.Two, null, false
new object?[] { TestEnumForEnumToBoolConverter.Five, TestEnumForEnumToBoolConverter.Six }, TestEnumForEnumToBoolConverter.Two, null, false
};

// Flagged enum
yield return new object[]
yield return new object?[]
{
new object[] { (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), TestFlaggedEnumForEnumToBoolConverter.Two }, TestFlaggedEnumForEnumToBoolConverter.One, null, true
new object?[] { (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), TestFlaggedEnumForEnumToBoolConverter.Two }, TestFlaggedEnumForEnumToBoolConverter.One, null, true
};
yield return new object[]
yield return new object?[]
{
new object[] { (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), TestFlaggedEnumForEnumToBoolConverter.Two }, TestFlaggedEnumForEnumToBoolConverter.Two, null, true
new object?[] { (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), TestFlaggedEnumForEnumToBoolConverter.Two }, TestFlaggedEnumForEnumToBoolConverter.Two, null, true
};
yield return new object[]
yield return new object?[]
{
new object[] { (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), TestFlaggedEnumForEnumToBoolConverter.Two }, TestFlaggedEnumForEnumToBoolConverter.Three, null, true
new object?[] { (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), TestFlaggedEnumForEnumToBoolConverter.Two }, TestFlaggedEnumForEnumToBoolConverter.Three, null, true
};
yield return new object[]
yield return new object?[]
{
new object[] { (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), TestFlaggedEnumForEnumToBoolConverter.Two }, TestFlaggedEnumForEnumToBoolConverter.Four, null, false
new object?[] { (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), TestFlaggedEnumForEnumToBoolConverter.Two }, TestFlaggedEnumForEnumToBoolConverter.Four, null, false
};
yield return new object[]
yield return new object?[]
{
null, TestFlaggedEnumForEnumToBoolConverter.One, (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), true
};
yield return new object[]
yield return new object?[]
{
null, TestFlaggedEnumForEnumToBoolConverter.Three, (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), true
};
yield return new object[]
yield return new object?[]
{
null, TestFlaggedEnumForEnumToBoolConverter.Two, (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), false
};
yield return new object[]
yield return new object?[]
{
null, (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), true
};
yield return new object[]
yield return new object?[]
{
null, (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Two | TestFlaggedEnumForEnumToBoolConverter.Three), (TestFlaggedEnumForEnumToBoolConverter.One | TestFlaggedEnumForEnumToBoolConverter.Three), false
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@ namespace Xamarin.CommunityToolkit.UnitTests.Converters
{
public class ItemSelectedEventArgsConverter_Tests
{
static object expectedValue = 100;
static readonly object expectedValue = 100;

public static IEnumerable<object[]> GetData() => new List<object[]>
{
// We know it's deprecated, still good to test it
#pragma warning disable CS0618 // Type or member is obsolete
#pragma warning disable CS8620 // Argument cannot be used for parameter due to differences in the nullability of reference types.
new object[] { new SelectedItemChangedEventArgs(expectedValue), expectedValue },
new object[] { null, null },
new object?[] { null, null },
#pragma warning restore CS8620 // Argument cannot be used for parameter due to differences in the nullability of reference types.
#pragma warning restore CS0618 // Type or member is obsolete
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ public class ItemTappedEventArgsConverter_Tests
{
// We know it's deprecated, still good to test it
#pragma warning disable CS0618 // Type or member is obsolete
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
new object[] { new ItemTappedEventArgs(null, expectedValue), expectedValue },
new object[] { new ItemTappedEventArgs(null, null), null },
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
#pragma warning restore CS0618 // Type or member is obsolete
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,13 @@ namespace Xamarin.CommunityToolkit.UnitTests.Converters
{
public class ListIsNotNullOrEmptyConverter_Tests
{
public static IEnumerable<object[]> GetData()
public static IEnumerable<object?[]> GetData() => new List<object?[]>
{
return new List<object[]>
{
new object[] { new List<string>(), false},
new object[] { new List<string>() { "TestValue"}, true},
new object[] { null, false},
new object[] { Enumerable.Range(1, 3), true},
};
}
new object[] { new List<string>(), false},
new object[] { new List<string>() { "TestValue"}, true},
new object?[] { null, false},
new object[] { Enumerable.Range(1, 3), true},
};

[Theory]
[MemberData(nameof(GetData))]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
Expand All @@ -9,16 +9,13 @@ namespace Xamarin.CommunityToolkit.UnitTests.Converters
{
public class ListIsNullOrEmptyConverter_Tests
{
public static IEnumerable<object[]> GetData()
{
return new List<object[]>
public static IEnumerable<object?[]> GetData() => new List<object?[]>
{
new object[] { new List<string>(), true},
new object[] { new List<string>() { "TestValue"}, false},
new object[] { null, true},
new object[] { Enumerable.Range(1, 3), false},
new object[] { new List<string>() { "TestValue" }, false},
new object?[] { null, true },
new object[] { Enumerable.Range(1, 3), false },
};
}

[Theory]
[MemberData(nameof(GetData))]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,16 @@ namespace Xamarin.CommunityToolkit.UnitTests.Converters
{
public class ListToStringConverter_Tests
{
public static IEnumerable<object[]> GetData()
=> new List<object[]>
{
new object[] { new string[] { "A", "B", "C" }, "+_+", "A+_+B+_+C" },
new object[] { new string[] { "A", string.Empty, "C" }, ",", "A,C" },
new object[] { new string[] { "A", null, "C" }, ",", "A,C" },
new object[] { new string[] { "A" }, ":-:", "A" },
new object[] { new string[] { }, ",", string.Empty },
new object[] { null, ",", string.Empty },
new object[] { new string[] { "A", "B", "C" }, null, "ABC" },
};
public static IEnumerable<object?[]> GetData() => new List<object?[]>
{
new object[] { new string[] { "A", "B", "C" }, "+_+", "A+_+B+_+C" },
new object[] { new string[] { "A", string.Empty, "C" }, ",", "A,C" },
new object?[] { new string?[] { "A", null, "C" }, ",", "A,C" },
new object[] { new string[] { "A" }, ":-:", "A" },
new object[] { new string[] { }, ",", string.Empty },
new object?[] { null, ",", string.Empty },
new object?[] { new string[] { "A", "B", "C" }, null, "ABC" },
};

[Theory]
[MemberData(nameof(GetData))]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace System.Runtime.CompilerServices
{
public record IsExternalInit;
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public void LocalizationResourceManager_PropertyChanged_Triggered()
// Arrange
var culture2 = new CultureInfo("en");
localizationManager.CurrentCulture = culture2;
CultureInfo changedCulture = null;
CultureInfo? changedCulture = null;
localizationManager.PropertyChanged += (s, e) => changedCulture = localizationManager.CurrentCulture;

// Act, Assert
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public LocalizedStringTests()
readonly CultureInfo initialCulture = CultureInfo.InvariantCulture;
readonly ResourceManager resourceManager;

LocalizedString localizedString;
LocalizedString? localizedString;

[Fact]
public void LocalizedStringTests_Localized_ValidImplementation()
Expand All @@ -30,7 +30,7 @@ public void LocalizedStringTests_Localized_ValidImplementation()
var culture2 = new CultureInfo("en");
localizedString = new LocalizedString(localizationManager, () => localizationManager[testString]);

string responceOnCultureChanged = null;
string? responceOnCultureChanged = null;
localizedString.PropertyChanged += (sender, args) => responceOnCultureChanged = localizedString.Localized;

// Act
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,14 +135,12 @@ void HandleDelegateTest(string message)
public void WeakEventManagerActionT_AddEventHandler_NullHandler()
{
// Arrange
Action<string> nullAction = null;
Action<string>? nullAction = null;

// Act

// Assert
#pragma warning disable CS8604 //Possible null reference argument for parameter
Assert.Throws<ArgumentNullException>(() => actionEventManager.AddEventHandler(nullAction, nameof(ActionEvent)));
#pragma warning restore CS8604 //Possible null reference argument for parameter

}

Expand All @@ -154,23 +152,19 @@ public void WeakEventManagerActionT_AddEventHandler_NullEventName()
// Act

// Assert
#pragma warning disable CS8625 //Cannot convert null literal to non-nullable reference type
Assert.Throws<ArgumentNullException>(() => actionEventManager.AddEventHandler(s => { var temp = s; }, null));
#pragma warning restore CS8625
}

[Fact]
public void WeakEventManagerActionT_AddEventHandler_EmptyEventName()
{
// Arrange
Action<string> nullAction = null;
Action<string>? nullAction = null;

// Act

// Assert
#pragma warning disable CS8604 //Possible null reference argument for parameter
Assert.Throws<ArgumentNullException>(() => actionEventManager.AddEventHandler(nullAction, string.Empty));
#pragma warning restore CS8604 //Possible null reference argument for parameter
}

[Fact]
Expand All @@ -181,23 +175,19 @@ public void WeakEventManagerActionT_AddEventHandler_WhitespaceEventName()
// Act

// Assert
#pragma warning disable CS8625 //Cannot convert null literal to non-nullable reference type
Assert.Throws<ArgumentNullException>(() => actionEventManager.AddEventHandler(s => { var temp = s; }, " "));
#pragma warning restore CS8625
}

[Fact]
public void WeakEventManagerActionT_RemoveEventHandler_NullHandler()
{
// Arrange
Action<string> nullAction = null;
Action<string>? nullAction = null;

// Act

// Assert
#pragma warning disable CS8604 //Possible null reference argument for parameter
Assert.Throws<ArgumentNullException>(() => actionEventManager.RemoveEventHandler(nullAction));
#pragma warning restore CS8604
}

[Fact]
Expand All @@ -208,9 +198,7 @@ public void WeakEventManagerActionT_RemoveEventHandler_NullEventName()
// Act

// Assert
#pragma warning disable CS8625 //Cannot convert null literal to non-nullable reference type
Assert.Throws<ArgumentNullException>(() => actionEventManager.RemoveEventHandler(s => { var temp = s; }, null));
#pragma warning restore CS8625
}

[Fact]
Expand All @@ -221,9 +209,7 @@ public void WeakEventManagerActionT_RemoveEventHandler_EmptyEventName()
// Act

// Assert
#pragma warning disable CS8625 //Cannot convert null literal to non-nullable reference type
Assert.Throws<ArgumentNullException>(() => actionEventManager.RemoveEventHandler(s => { var temp = s; }, string.Empty));
#pragma warning restore CS8625
}

[Fact]
Expand All @@ -234,9 +220,7 @@ public void WeakEventManagerActionT_RemoveEventHandler_WhiteSpaceEventName()
// Act

// Assert
#pragma warning disable CS8625 //Cannot convert null literal to non-nullable reference type
Assert.Throws<ArgumentNullException>(() => actionEventManager.RemoveEventHandler(s => { var temp = s; }, " "));
#pragma warning restore CS8625
}
}
}
Loading