Ich bin auch kein Experte für FsCheck, aber ich denke, abgesehen von den fehlenden Funktionen gibt es einige seltsame Dinge in Ihrem Code. Was macht StringExtensions.skipLastChar
? Auch glaube ich nicht Gen
s kann mit string
s wie Sie versuchen, in der letzten Zeile verkettet werden. Was soll Gen.finalValueOf
tun?
ich dein Beispiel bekam Arbeit (nicht sicher, ob es das tut, was Sie brauchen, um es zu) Gen.map
mit den Strings in eine kommagetrennte Liste und wickeln Sie das Ergebnis in Klammern zu verbinden:
let jsonArray =
Arb.generate<string>
|> Gen.arrayOf
|> Gen.map (String.concat "\",\"")
|> Gen.map (fun strs -> "[\"" + strs + "\"]")
let result = Arb.fromGen jsonArray
By the way: Ich denke, Sie müssen doppelte Anführungszeichen berücksichtigen. Wenn Sie ihnen nicht entkommen, wird Ihr JSON-Parser fehlschlagen. Unten ist eine Version von jsonArray
, die das tut:
let escapeDoubleQuotes (str:string) = str.Replace ("\"", "\\\"")
let jsonArray =
Arb.generate<string>
|> Gen.arrayOf
|> Gen.map (Array.map escapeDoubleQuotes)
|> Gen.map (String.concat "\", \"")
|> Gen.map (fun strs -> "[\"" + strs + "\"]")
Danke, weißt du, wie kann ich die ursprüngliche String-Array auch zurück? Ich brauche es endlich zur Behauptung. – Mohsen
Ich habe die Frage hier erstellt: https://stackoverflow.com/questions/48059352/how-to-generate-tuples-by-fscheck – Mohsen