Мне нужно сгенерировать уникальные строки, отличные от null
, которые будут использоваться в качестве ключей Dictionary
. Я пробовал что-то вроде:
public static Gen<NonNull<string>> UniqueStrings()
{
return from s in Arb.Default.NonNull<string>().Generator
select s;
}
Затем я использую UniqueString()
в:
public static Arb<Foo> Foos()
{
// Foo's constructor will use the string parameter
// as key to an internal Dictionary
return (from nonNullString in UniqueStrings()
select new Foo(nonNullString.Item)).ToArbitrary();
}
Однако я получаю исключение при проверке свойств Foo
, потому что FsCheck иногда генерирует одну и ту же строку дважды, что приводит к ошибке DuplicateKeyException
.
Как я могу сгенерировать уникальные строки для передачи в конструктор Foo
?
Guid.NewGuid().ToString();
на основе GUID будет уникальной строкой. - person Dmitry Bychenko   schedule 15.01.2016