Skip to content

Commit 106af53

Browse files
committed
Поддержка nullable и подавление предупреждений null
Добавлена поддержка nullable типов в методах `GetTestMethodAttribute` классов `TestClassHandlerAttribute` и `TestClassIterativeAttribute`. Добавлены операторы подавления предупреждений `!`: - В классах `ActionChecker` и `ActionChecker<TValue>` для вызова `Message.AddSeparator()`. - В классе `ValueChecker<T>` для свойства `ActualValue` в методах `IsEqual` и `Method`. - В классе `ValueCheckerExtensions` для свойства `ActualValue` в методах `Are` и `Items`. Добавлена инициализация значением `null!` для свойств: - `ParameterName` в `InvokerParameterNameAttribute`. - `Comment` в `PublicAPIAttribute`. - `BasePath` в `PathReferenceAttribute`. Изменения повышают безопасность кода и устраняют предупреждения компилятора о возможных значениях `null`.
1 parent 178abf1 commit 106af53

6 files changed

Lines changed: 15 additions & 15 deletions

File tree

MathCore.TestsExtensions/Attributes/TestClassHandlerAttribute.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class TestClassHandlerAttribute(string ExceptionHandlerMethod) : TestClas
99

1010
public TestClassHandlerAttribute() : this(null!) { }
1111

12-
public override TestMethodAttribute GetTestMethodAttribute(TestMethodAttribute Attribute)
12+
public override TestMethodAttribute GetTestMethodAttribute(TestMethodAttribute? Attribute)
1313
{
1414
if(ExceptionHandlerMethod is { Length: > 0 } method_name)
1515
if (Attribute is TestMethodHandlerAttribute handler_attribute)
@@ -27,6 +27,6 @@ public override TestMethodAttribute GetTestMethodAttribute(TestMethodAttribute A
2727
HandlePassed = HandlePassed,
2828
};
2929

30-
return base.GetTestMethodAttribute(Attribute);
30+
return base.GetTestMethodAttribute(Attribute)!;
3131
}
3232
}

MathCore.TestsExtensions/Attributes/TestClassIterativeAttribute.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class TestClassIterativeAttribute(int IterationsCount) : TestClassAttribu
1818
public bool StopAtFirstFail { get; set; }
1919

2020
/// <inheritdoc />
21-
public override TestMethodAttribute GetTestMethodAttribute(TestMethodAttribute TestMethodAttribute)
21+
public override TestMethodAttribute GetTestMethodAttribute(TestMethodAttribute? TestMethodAttribute)
2222
{
2323
var attribute = TestMethodAttribute as TestMethodIterativeAttribute ?? new TestMethodIterativeAttribute(_IterationsCount);
2424
attribute.StopAtFirstFail = StopAtFirstFail;

MathCore.TestsExtensions/Checkers/ActionChecker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public ValueChecker<TException> Throw<TException>(string? Message = null) where
3030
{
3131
return Assert.That.Value(exception).As<TException>("Получено исключение, отличное от ожидаемого");
3232
}
33-
throw new AssertFailedException(Message.AddSeparator());
33+
throw new AssertFailedException(Message.AddSeparator()!);
3434
}
3535
}
3636

@@ -71,6 +71,6 @@ public ValueChecker<TException> Throw<TException>(string? Message = null) where
7171
{
7272
return Assert.That.Value(exception).As<TException>($"{Message.AddSeparator()}Получено исключение, отличное от ожидаемого");
7373
}
74-
throw new AssertFailedException(Message.AddSeparator());
74+
throw new AssertFailedException(Message.AddSeparator()!);
7575
}
7676
}

MathCore.TestsExtensions/Checkers/ValueChecker.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public virtual ValueChecker<T> IsEqual(T ExpectedValue, string? Message = null)
4343
/// <param name="Message">Сообщение, выводимое в случае неудачи</param>
4444
public ValueChecker<T> IsEqual(T ExpectedValue, IEqualityComparer<T> Comparer, string? Message = null)
4545
{
46-
if (Comparer.Equals(ActualValue, ExpectedValue))
46+
if (Comparer.Equals(ActualValue!, ExpectedValue))
4747
return this;
4848

4949
FormattableString message = $"{Message.AddSeparator()}Актуальное значение\r\n {ActualValue} не соответствует ожидаемому\r\n {ExpectedValue}";
@@ -64,7 +64,7 @@ public ValueChecker<T> IsEqual(T ExpectedValue, IEqualityComparer<T> Comparer, s
6464
/// <param name="Message">Сообщение, выводимое в случае неудачи</param>
6565
public ValueChecker<T> IsEqual(T ExpectedValue, EqualityComparer Comparer, string? Message = null)
6666
{
67-
if (Comparer(ExpectedValue, ActualValue))
67+
if (Comparer(ExpectedValue, ActualValue!))
6868
return this;
6969

7070
FormattableString message = $"{Message.AddSeparator()}Актуальное значение\r\n {ActualValue} не соответствует ожидаемому\r\n {ExpectedValue}";
@@ -283,12 +283,12 @@ public ValueChecker<T> WhereAll<TItem>(Func<T?, IEnumerable<TItem>> Selector, Ac
283283
/// <summary>Проверка действия над значением</summary>
284284
/// <param name="action">Действие, выполняемое над значением</param>
285285
/// <returns>Объект проверки действия</returns>
286-
public ActionChecker<T> Method(Action<T?> action) => new(action, ActualValue);
286+
public ActionChecker<T> Method(Action<T?> action) => new(action, ActualValue!);
287287

288288
/// <summary>Проверка функции над значением</summary>
289289
/// <param name="function">Функция, выполняемая над значением</param>
290290
/// <returns>Объект проверки функции</returns>
291-
public FunctionChecker<T, TResult> Method<TResult>(Func<T?, TResult> function) => new(function, ActualValue);
291+
public FunctionChecker<T, TResult> Method<TResult>(Func<T?, TResult> function) => new(function, ActualValue!);
292292

293293
/// <summary>Оператор неявного приведения типа объекта проверки к объекту проверяемого значения, разворачивающий значение</summary>
294294
/// <param name="Checker">Объект проверки</param>

MathCore.TestsExtensions/Extensions/ValueCheckerExtensions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ public static class ValueCheckerExtensions
1212
/// <typeparam name="T">Тип проверяемого значения, которое является коллекцией объектов типа <typeparamref name="TItem"/></typeparam>
1313
/// <typeparam name="TItem">Тип элементов проверяемой коллекции</typeparam>
1414
/// <returns>Объект проверки коллекции</returns>
15-
public static CollectionChecker<TItem> Are<T, TItem>(this ValueChecker<T> Checker) where T : ICollection<TItem> => new(Checker.ActualValue);
15+
public static CollectionChecker<TItem> Are<T, TItem>(this ValueChecker<T> Checker) where T : ICollection<TItem> => new(Checker.ActualValue!);
1616

1717
/// <summary>Выполнение проверки элементов коллекции</summary>
1818
/// <param name="Checker">Объект проверки одиночного значения</param>
1919
/// <param name="Check">Метод проверки элементов коллекции с учётом порядкового номера</param>
2020
/// <returns>Исходный объект проверки коллекции</returns>
2121
public static ValueChecker<T> Items<T, TItem>(this ValueChecker<T> Checker, Action<ValueChecker<TItem>, int> Check) where T : IReadOnlyList<TItem>
2222
{
23-
var collection = Checker.ActualValue;
23+
var collection = Checker.ActualValue!;
2424
var count = collection.Count;
2525
for (var i = 0; i < count; i++)
2626
Check(new(collection[i]), i);
@@ -34,7 +34,7 @@ public static ValueChecker<T> Items<T, TItem>(this ValueChecker<T> Checker, Acti
3434
/// <returns>Исходный объект проверки коллекции</returns>
3535
public static ValueChecker<T> Items<T, TItem>(this ValueChecker<T> Checker, Action<ValueChecker<TItem>> Check) where T : IReadOnlyList<TItem>
3636
{
37-
foreach (var checker in Checker.ActualValue.Select(c => new ValueChecker<TItem>(c)))
37+
foreach (var checker in Checker.ActualValue!.Select(c => new ValueChecker<TItem>(c)))
3838
Check(checker);
3939

4040
return Checker;

MathCore.TestsExtensions/Properties/Annotations.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ internal sealed class NotifyPropertyChangedInvocatorAttribute : Attribute
141141
public NotifyPropertyChangedInvocatorAttribute() { }
142142
public NotifyPropertyChangedInvocatorAttribute(string parameterName) => ParameterName = parameterName;
143143

144-
public string ParameterName { get; }
144+
public string ParameterName { get; } = null!;
145145
}
146146

147147
/// <summary>
@@ -338,7 +338,7 @@ internal sealed class PublicAPIAttribute : Attribute
338338
public PublicAPIAttribute() { }
339339
public PublicAPIAttribute(string comment) => Comment = comment;
340340

341-
public string Comment { get; }
341+
public string Comment { get; } = null!;
342342
}
343343

344344
/// <summary>
@@ -362,7 +362,7 @@ public class PathReferenceAttribute : Attribute
362362
public PathReferenceAttribute() { }
363363
public PathReferenceAttribute([PathReference] string basePath) => BasePath = basePath;
364364

365-
public string BasePath { get; }
365+
public string BasePath { get; } = null!;
366366
}
367367

368368
/// <summary>Является регулярным выражением</summary>

0 commit comments

Comments
 (0)