public static ValueChecker <string> Contains([NotNull] this ValueChecker <string> Checker, [NotNull] string ExpectedSubstring, string Message = null) { StringAssert.Contains(Checker.ActualValue, ExpectedSubstring, "{0}Указанная строка {1} не содержит ожидаемой подстроки {2}", Message.AddSeparator(), Checker.ActualValue, ExpectedSubstring); return(Checker); }
public static ValueChecker <string> StartWith([NotNull] this ValueChecker <string> Checker, [NotNull] string ExpectedPrefix, string Message = null) { StringAssert.StartsWith(Checker.ActualValue, ExpectedPrefix, "{0}Указанная строка {1} не начинается с ожидаемого префикса {2}", Message.AddSeparator(), Checker.ActualValue, ExpectedPrefix); return(Checker); }
public static ValueChecker <string> DoesNotMatch([NotNull] this ValueChecker <string> Checker, [NotNull] Regex ExpectedRegEx, string Message = null) { StringAssert.DoesNotMatch(Checker.ActualValue, ExpectedRegEx, "{0}Указанная строка {1} ошибочно соответствует ожидаемому регулярному выражению {2}", Message.AddSeparator(), Checker.ActualValue, ExpectedRegEx); return(Checker); }
public static ValueChecker <double> LessOrEqualsThan([NotNull] this ValueChecker <double> Checker, double ExpectedValue, double Accuracy, string Message = null) { if (!(Checker.ActualValue <= ExpectedValue + Accuracy)) { throw new AssertFailedException( $"{Message.AddSeparator()}Нарушено условие ({Checker.ActualValue} >= {ExpectedValue}) при точности {Accuracy:e2}. delta:{(ExpectedValue - Checker.ActualValue).ToString("e2", CultureInfo.InvariantCulture)}"); } return(Checker); }
public static ValueChecker <string> EndWith([NotNull] this ValueChecker <string> Checker, [NotNull] string ExpectedSuffix, string Message = null) { StringAssert.EndsWith(Checker.ActualValue, ExpectedSuffix, "{0}Указанная строка {1} не заканчивается ожидаемым окончанием {2}", Message.AddSeparator(), Checker.ActualValue, ExpectedSuffix); return(Checker); }
public static ValueChecker <string> IsNullOrWhiteSpace(this ValueChecker <string> Checker, string Message = null) { var str = Checker.ActualValue; if (!string.IsNullOrWhiteSpace(str)) { throw new AssertFailedException($"{Message.AddSeparator()}Строка не пуста"); } return(Checker); }
public static ValueChecker <string> IsNotNullOrWhiteSpace(this ValueChecker <string> Checker, string Message = null) { var str = Checker.ActualValue; if (string.IsNullOrWhiteSpace(str)) { throw new AssertFailedException($"{Message.AddSeparator()}Строка является {(str is null ? "пустой ссылкой" : string.IsNullOrWhiteSpace(str) ? "строкой из пробелов" : "пустой строкой")}"); } return(Checker); }
public static ValueChecker <string> IsNotNullOrEmpty(this ValueChecker <string> Checker, string Message = null) { var str = Checker.ActualValue; if (string.IsNullOrEmpty(str)) { throw new AssertFailedException($"{Message.AddSeparator()}Строка является пустой {(str is null ? "ссылкой" : "строкой")}"); } return(Checker); }
public static ValueChecker <int> IsNotEqual([NotNull] this ValueChecker <int> Checker, int ExpectedValue, int Accuracy, string Message = null) { Assert.AreNotEqual( ExpectedValue, Checker.ActualValue, Accuracy, "{0}err:{1}(rel:{2}), eps:{3}", Message.AddSeparator(), Math.Abs(ExpectedValue - Checker.ActualValue), ((ExpectedValue - Checker.ActualValue) / (double)Checker.ActualValue).ToString(CultureInfo.InvariantCulture), Accuracy); return(Checker); }
/// <summary>Выполнение проверки элементов коллекции</summary> /// <param name="Checker">Объект проверки одиночного значения</param> /// <param name="Check">Метод проверки элементов коллекции с учётом порядкового номера</param> /// <returns>Исходный объект проверки коллекции</returns> public static ValueChecker <T> Items <T, TItem>(this ValueChecker <T> Checker, Action <ValueChecker <TItem>, int> Check) where T : IReadOnlyList <TItem> { var collection = Checker.ActualValue; var count = collection.Count; for (var i = 0; i < count; i++) { Check(new ValueChecker <TItem>(collection[i]), i); } return(Checker); }
public static ValueChecker <bool> Is([NotNull] this ValueChecker <bool> Checker, bool Value, string Message = null) { if (Value) { Assert.IsTrue(Checker.ActualValue, "{0}Значение не истинно", Message.AddSeparator()); } else { Assert.IsFalse(Checker.ActualValue, "{0}Значение не ложно", Message.AddSeparator()); } return(Checker); }
public static ValueChecker <double> IsEqual( [NotNull] this ValueChecker <double> Checker, double ExpectedValue, double Accuracy, string Message = null) { if (double.IsNaN(ExpectedValue)) { throw new ArgumentException("ExpectedValue is NaN", nameof(ExpectedValue)); } var actual_value = Checker.ActualValue; if (double.IsNaN(actual_value)) { throw new ArgumentException("Checker.ActualValue is NaN", nameof(Checker.ActualValue)); } if (double.IsNaN(Accuracy)) { throw new ArgumentException("Accuracy is NaN", nameof(actual_value)); } var value_delta = ExpectedValue - actual_value; var value_delta_abs = Math.Abs(value_delta); if (value_delta_abs <= Accuracy) { return(Checker); } var msg = Message.AddSeparator(Environment.NewLine); var invariant_culture = CultureInfo.InvariantCulture; var delta_str = value_delta_abs.ToString("e2", invariant_culture); var rel_delta_str = (value_delta / actual_value).ToString(invariant_culture); var error_delta = value_delta_abs - Accuracy; var err_delta_str = error_delta.ToString("e2", invariant_culture); var new_accuracy = value_delta_abs; var expected_accuracy = (new_accuracy + Math.Pow(10, (int)Math.Log10(new_accuracy) - 3)) .ToString("e2", invariant_culture); throw new AssertFailedException( $"{msg}Ожидаемое значение {ExpectedValue.ToString(invariant_culture)} не равно реальному {actual_value.ToString(invariant_culture)}." + Environment.NewLine + $"err:{delta_str}(rel:{rel_delta_str}) eps:{Accuracy.ToString(invariant_culture)}(eps-delta:{err_delta_str})" + Environment.NewLine + $"Требуется точность :{expected_accuracy}"); }
/// <summary>Инициализация нового объекта проверки дочернего значения коллекции</summary> /// <param name="ActualCollection">Проверяемое значение коллекции</param> /// <param name="BaseChecker">Базовый объект проверки значения</param> internal NestedCollectionValueChecker(System.Collections.Generic.ICollection <TValue> ActualCollection, ValueChecker <TBaseValue> BaseChecker) : base(ActualCollection) => _BaseChecker = BaseChecker;
public static CollectionChecker <TItem> Are <T, TItem>([NotNull] this ValueChecker <T> Checker) where T : ICollection <TItem> => new CollectionChecker <TItem>(Checker.ActualValue);
public static DoubleCompareCheckerWithAccuracy LessOrEqual([NotNull] this ValueChecker <double> Checker, double ExpectedValue) => new DoubleCompareCheckerWithAccuracy(Checker.ActualValue, ExpectedValue, IsEquals: true, IsLessChecking: true);
/// <summary>Инициализация нового объекта проверки вложенного значения</summary> /// <param name="ActualValue">Проверяемое значение</param> /// <param name="BaseChecker">Базовый объект проверки значения</param> internal NestedValueChecker(TValue ActualValue, ValueChecker <TBaseValue> BaseChecker) : base(ActualValue) => BaseValue = BaseChecker;
public static ValueChecker <bool> IsFalse([NotNull] this ValueChecker <bool> Checker, string Message = null) { Assert.IsFalse(Checker.ActualValue, "{0}Значение не ложно", Message.AddSeparator()); return(Checker); }
public static DoubleEqualityCheckerWithAccuracy IsNotEqualTo([NotNull] this ValueChecker <double> Checker, double ExpectedValue) => new DoubleEqualityCheckerWithAccuracy(Checker.ActualValue, ExpectedValue, true);
/// <summary>Проверка, что строка НЕ соответствует указанному регулярному выражению</summary> /// <param name="Checker">Объект проверки строкового значения</param> /// <param name="ExpectedRegEx">Регулярное выражение, которому не должна соответствовать строка</param> /// <param name="Message">Сообщение, выводимое в случае ошибки при проверке</param> /// <returns>Исходный объект проверки строки</returns> [NotNull] public static ValueChecker <string> DoesNotMatch([NotNull] this ValueChecker <string> Checker, [NotNull, RegexPattern] string ExpectedRegEx, string Message = null) => Checker.DoesNotMatch(new Regex(ExpectedRegEx), Message);