Я пытаюсь создать не пустой генератор строк, но при запуске теста у меня все еще есть пустые строки в качестве входных данных.
Вот код, который я написал:
[Test]
public void MyTest()
{
Func<Gen<string>> generateNotEmptyString = () =>
{
var gen = Any.OfType<string>()
.Where(name => !string.IsNullOrEmpty(name));
return gen;
};
Action<string> assertIdIsNeverEmpty = name =>
{
var id = MyService.CreateId(name);
id.Should().NotBeNullOrEmpty();
};
Spec.For(generateNotEmptyString(), assertIdIsNeverEmpty)
.QuickCheckThrowOnFailure()
}
Я использую NUnit v. 2.6.2.12296, FsCheck v. 0.9.4.0 и FluentAssertions v. 3.0.90.0.
Что, если я также хочу изменить генератор, чтобы он создавал непустые строки, соответствующие регулярному выражению?
[EDIT] Это код, который я использую для создания строк, содержащих буквы, но не содержащих специальных символов:
private static Gen<NonEmptyString> GenerateValidNames()
{
return
Any.OfType<NonEmptyString>()
.Where(s =>
!s.Get.Contains("\r") &&
!s.Get.Contains("\n") &&
!s.Get.Contains("\t"))
.Where(s =>
{
var regEx = new Regex(@"^[A-Za-z]*$");
return regEx.Match(s.Get).Success;
});
}