空ではない文字列ジェネレーターを作成しようとしていますが、テストを実行すると、入力として空の文字列がまだあります。
ここに私が書いたコードがあります:
[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 を使用しています。
正規表現に一致する空でない文字列を作成するようにジェネレーターも変更したい場合はどうすればよいですか?
[編集] これは、文字を含むが特殊文字を含まない文字列を作成するために使用しているコードです。
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;
});
}