Мне нужно создать уникальные строки, не связанные null
, которые будут использоваться как Dictionary
ключей. Я пытался что-то вроде:Создание уникальных строк в FsCheck
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-based 'Guid.NewGuid(). ToString();' будет уникальной строкой. –