diff --git a/packages/fast-check/src/arbitrary/fuzzedString.ts b/packages/fast-check/src/arbitrary/fuzzedString.ts new file mode 100644 index 00000000000..27a369a635b --- /dev/null +++ b/packages/fast-check/src/arbitrary/fuzzedString.ts @@ -0,0 +1,133 @@ +import { Arbitrary } from '../check/arbitrary/definition/Arbitrary'; +import { Value } from '../check/arbitrary/definition/Value'; +import { Random } from '../random/generator/Random'; +import { Stream } from '../stream/Stream'; +import { patternsToStringUnmapperFor } from './_internals/mappers/PatternsToString'; +import { char } from './char'; + +const startSymbol = Symbol('start'); +const endSymbol = Symbol('end'); + +// from => { to => weight } +type TransitionMap = Map>; + +function multiFromToSingleFrom(fromMulti: (string | typeof startSymbol)[]): string | typeof startSymbol { + const nonStart = fromMulti.filter((i) => i !== startSymbol) as string[]; + const startCount = fromMulti.length - nonStart.length; + return startCount + ':' + nonStart.join(''); +} + +function incrementInTransitionMap( + transitionMap: TransitionMap, + from: string | typeof startSymbol, + to: string | typeof endSymbol +): void { + const transitionsFromPrevious = transitionMap.get(from); + if (transitionsFromPrevious !== undefined) { + const pastValue = transitionsFromPrevious.get(to) || 0; + transitionsFromPrevious.set(to, pastValue + 1); + } else { + transitionMap.set(from, new Map([[to, 1]])); + } +} + +function addIntoTransitionMap(transitionMap: TransitionMap, tokenizedCorpusItem: string[], depth: number): void { + const previousItems: (string | typeof startSymbol)[] = Array(depth).fill(startSymbol); + for (let index = 0; index !== tokenizedCorpusItem.length; ++index) { + const currentItem = tokenizedCorpusItem[index]; + incrementInTransitionMap(transitionMap, multiFromToSingleFrom(previousItems), currentItem); + previousItems.shift(); + previousItems.push(currentItem); + } + incrementInTransitionMap(transitionMap, multiFromToSingleFrom(previousItems), endSymbol); +} + +class FuzzedString extends Arbitrary { + private readonly transitionMap: TransitionMap; + + constructor( + corpus: string[], + private readonly charArb: Arbitrary, + private readonly strictness: 0 | 1 | 2, + private readonly depth: number + ) { + super(); + + const tokenizedCorpus: string[][] = []; + const unmapper = patternsToStringUnmapperFor(this.charArb, {}); + for (const corpusItem of corpus) { + const tokenizedCorpusItem = unmapper(corpusItem); // implicit throw + tokenizedCorpus.push(tokenizedCorpusItem); + } + if (tokenizedCorpus.length === 0) { + throw new Error(`Do not support empty corpus`); + } + + this.transitionMap = new Map(); + for (let d = 1; d <= this.depth; ++d) { + for (const tokenizedCorpusItem of tokenizedCorpus) { + addIntoTransitionMap(this.transitionMap, tokenizedCorpusItem, d); + } + } + } + + private generateInternal(mrng: Random): string { + const previousItems: (string | typeof startSymbol)[] = Array(this.depth).fill(startSymbol); + let stringValue = ''; + + if (this.strictness !== 2) { + throw new Error('Strictness not being 2, not implemented'); + } + + // eslint-disable-next-line no-constant-condition + while (true) { + const allTransitions: [string | typeof endSymbol, number][] = []; + for (let d = 1; d <= this.depth; ++d) { + const transitions = this.transitionMap.get( + multiFromToSingleFrom(previousItems.slice(previousItems.length - d, previousItems.length)) + ); + if (transitions !== undefined) { + allTransitions.push(...transitions.entries()); + } + } + const totalWeight = allTransitions.reduce((acc, transition) => acc + transition[1], 0); + const selectedWeight = mrng.nextInt(0, totalWeight - 1); + let postSelected = 1; + let totalWeightUpToPostSelected = allTransitions[0][1]; + for ( + ; + postSelected !== allTransitions.length && totalWeightUpToPostSelected <= selectedWeight; + totalWeightUpToPostSelected += allTransitions[postSelected][1], ++postSelected + ) { + // no-op + } + const item = allTransitions[postSelected - 1][0]; + if (item === endSymbol) { + return stringValue; + } + previousItems.shift(); + previousItems.push(item); + stringValue += item; + } + } + + generate(mrng: Random, _biasFactor: number | undefined): Value { + return new Value(this.generateInternal(mrng), undefined); + } + + canShrinkWithoutContext(value: unknown): value is string { + return false; + } + + shrink(_value: string, _context: unknown): Stream> { + return Stream.nil(); + } +} + +export function fuzzedString(corpus: string[]): Arbitrary { + return new FuzzedString(corpus, char(), 2, 1); +} + +export function fuzzedString10(corpus: string[]): Arbitrary { + return new FuzzedString(corpus, char(), 2, 10); +} diff --git a/packages/fast-check/src/fast-check-default.ts b/packages/fast-check/src/fast-check-default.ts index e13b9dde2f1..88b165dd939 100644 --- a/packages/fast-check/src/fast-check-default.ts +++ b/packages/fast-check/src/fast-check-default.ts @@ -177,6 +177,7 @@ import { bigInt64Array, BigIntArrayConstraints } from './arbitrary/bigInt64Array import { bigUint64Array } from './arbitrary/bigUint64Array'; import { SchedulerAct } from './arbitrary/_internals/interfaces/Scheduler'; import { stringMatching, StringMatchingConstraints } from './arbitrary/stringMatching'; +import { fuzzedString, fuzzedString10 } from './arbitrary/fuzzedString'; // Explicit cast into string to avoid to have __type: "__PACKAGE_TYPE__" /** @@ -251,6 +252,8 @@ export { hexa, base64, mixedCase, + fuzzedString, + fuzzedString10, string, asciiString, string16bits, diff --git a/packages/fast-check/test/e2e/documentation/Docs.md.spec.ts b/packages/fast-check/test/e2e/documentation/Docs.md.spec.ts index d08c00cc202..940d821e9c4 100644 --- a/packages/fast-check/test/e2e/documentation/Docs.md.spec.ts +++ b/packages/fast-check/test/e2e/documentation/Docs.md.spec.ts @@ -143,7 +143,9 @@ function refreshContent(originalContent: string): { content: string; numExecuted .trim() .replace(/;$/, '') .replace(/;\n\/\/.*$/m, '\n//'); - const evalCode = `${preparationPart}\nfc.sample(${santitizeArbitraryPart}\n, { numRuns: ${numRuns}, seed: ${seed} }).map(v => fc.stringify(v))`; + const evalCode = `${preparationPart}\nfc.sample(${santitizeArbitraryPart}\n, { numRuns: ${ + santitizeArbitraryPart.includes('fuzzedString') ? 10 * numRuns : numRuns + }, seed: ${seed} }).map(v => fc.stringify(v))`; try { return eval(evalCode); } catch (err) { @@ -151,7 +153,10 @@ function refreshContent(originalContent: string): { content: string; numExecuted } })(fc); - const uniqueGeneratedValues = Array.from(new Set(generatedValues)).slice(0, TargetNumExamples); + const uniqueGeneratedValues = Array.from(new Set(generatedValues)).slice( + 0, + snippet.includes('fuzzedString') ? 10 * TargetNumExamples : TargetNumExamples + ); // If the display for generated values is too long, we split it into a list of items if ( uniqueGeneratedValues.some((value) => value.includes('\n')) || diff --git a/website/docs/core-blocks/arbitraries/fake-data/fuzzed.md b/website/docs/core-blocks/arbitraries/fake-data/fuzzed.md new file mode 100644 index 00000000000..df9fe50b1ba --- /dev/null +++ b/website/docs/core-blocks/arbitraries/fake-data/fuzzed.md @@ -0,0 +1,345 @@ +--- +slug: /core-blocks/arbitraries/fake-data/fuzzed/ +--- + +# Fuzzed + +Generate fuzzed values. + +## fuzzedString + +TODO + +**Signatures:** + +- `fc.fuzzedString(corpus)` + +**with:** + +- `corpus` — _TODO_ + +**Usages:** + +```js +fc.fuzzedString([ + 'Link to official documentation', + '

Here is a Title

', + '

Here is a Sub-Title

', + '

A paragraph having some text in bold and some in Italic

', +]); +// Examples of generated values: +// • "He a> SumeHeraph2>Hexttarextlev/pas d

" +// • "Itlank omerg a son Sub>" +// • "A a sometl Sume

It=\">" +// • "" +// • "It-cub>Lick hrefistlara>" +// • "He i>" +// • "Itl a a inderev/hre " +// • "Ita t=\">Li>A h1>Liaph2>" +// • "

" +// • "Hev/ha handof=\" Tin " +// • "A is ag i>A

Lia talio itl Sumerank\" defa " +// • "" +// • "" +// • "" +// • "HeIttpa tle Hef=\"hetoffa i>A t=\"h1>b>" +// • "He te o p>Hef=\"httphe ph some olal iocin Suboc" +// • "" +// • "Itisong phtofa>A heLind aps d heLin" +// • "Heran h2>" +// • "b>" +// • "" +// • "" +// • "A hap> an" +// • "Hergevin tomere Ticub>" +// • "" +// • "HeIttpa>" +// • "Itoff=\"htlank.d aldItetarevin Sumenk.de" +// • "He sof=\"hrgeLiare" +// • "" +// • "

" +// • " ia h1>Li>A Sume offf=\">" +// • "Link.d p>" +// • "Itld

Li> tatle i>He

Heta hras is:/b> ichagefan h2>bo a in ia offa int=\"hrarev/ha p>He a s:/h1>b-cublal p>b-cumefiolal Tiso domerenk\">" +// • "Hev/b>He psonLi>Hen a ick h2>" +// • "" +// • "Lind SumergreA hergetand a Tin atlexttasomebleck\" tt=\"

" +// • "b> tlink.d st=\"_b-Tichrecha>Lichtl indeIt tefin" +// • "" +// • "" +// • "" +// • "

Ittastagev//i>Itofa b-ch st=\"h1>" +// • "blind" +// • "" +// • "" +// • "It atterenk.d" +// • "Heret-ch in ink.d dA ang hanta araretaralastld a aso tlitap>" +// • "HenA tarech1>" +// • "b> tlav/hra s stp>" +// • " de agrap>" +// • "" +// • … + +fc.fuzzedString([ + '6506 Frida Rapid Suite 656', + '491 Alicia Circles Suite 128', + '5683 Welch Cape Suite 486', + '55608 Wilburn Burg Apt. 121', + '8421 Cassin Place Apt. 903', + '858 Madalyn Knolls Apt. 812', + '51691 Roberts Overpass Suite 131', + '1133 Herzog Manor Suite 457', + '889 Hermiston Parks Suite 980', + '6464 Vandervort Hill Suite 427', +]); +// Examples of generated values: +// • "885646846" +// • "8560" +// • "508333" +// • "56916" +// • "803 Apte Overmiton Suiterterg 428" +// • "6 Buites Suit. Suit. Suilelch Wias 42" +// • "6868806557" +// • "1 Rassss Wit. 90" +// • "585690645850812808 Maride 498" +// • "6 Plite Surve 68 Cid Cach 913 Apitercida Rorvern Man Suicl Alst. Suid Suit. 121 Knderks Suites Suit. Suitelbe Rollbe Ovobuit. 90" +// • "50" +// • "8 421313133331" +// • "649 906 Paptelllberpt 12127" +// • "846" +// • "428 Surn Herzog 46064 Caderte Mapiterilbuilbern We 1" +// • "5881 11" +// • "83 Heriarmiterkss 1 Hilynonobe Robuite Suilelernoberilissterks Kn 428033" +// • "857" +// • "83 Papts Suit. 9064656" +// • "56 Pale Suicit. Frmite Rormite Hidallar Hidapt. 13 Hillariciss 1" +// • "48642898 He Mas Kn 427" +// • "6 Mas He Apterpas Pler Suida 13 Suite 49 Suidande Cadalel Cias Ape Suitesit Suite Roburmis Knog Surcitoburvernobuich Cidacert. Alcitss Wervel Frmidan Aptertes Mas 1" +// • "65503 Capirtert Suills Suide Calsices Ple 1" +// • "603 Van 1213 9164 Sur Wite Plciter Cit. Kn 428 Suillbuites 1213 Suiss Suil Mad Carcidacerterve Ple 8 131 12" +// • "8 1 Vape 4 Hinon Wite Knor He 90650" +// • "1213 Marin Suitert Suiale Hermida 4216" +// • "8 Pllallsirpte He Suit Roburzon Suite Suit. 4560656" +// • "5846" +// • "569 98556856555648" +// • "133" +// • "564984 Surks Apan Hinder Suin 4211" +// • "4 Builberzog Surn He Suis Pa Suillyn 4846421 Suiss 903" +// • "6456" +// • "127" +// • "645068 He Vas 69 464986" +// • "56851650645642" +// • "512" +// • "8428891 48 Suile 1 603 8 Suite 1 Surt. 6808 Suidasite Als Wirg Knoberzon 427" +// • "806" +// • "89 Ple Frpessit Witervonorn Valite Suid Knobe Alerksitola Vape Surt. Alerits Apace 1" +// • "65648564211 46 Apall 64 1 Pleridapace Surg Frzon Ma 131127" +// • "5698" +// • "1" +// • "51" +// • "860606 Suiss Suite 48 Buiterzolit 498421" +// • "8 Cias Suilcirt. 427" +// • "88503" +// • "511" +// • "8" +// • "856558" +// • … + +fc.fuzzedString([ + 'Cedric Muller', + 'Gladys Lynch', + 'Juanita Hintz', + 'Miss Tami Walsh', + 'Lisa Kessler', + 'Johnnie Schulist', + 'Helen Schuppe MD', + 'Patrick Stanton', + 'Paula Kuphal', + 'Lela Douglas', +]); +// Examples of generated values: +// • "Glstaledr" +// • "Celelishanntric Tamitz" +// • "Cedyn" +// • "Passtaladystrichulieri D" +// • "Glaule Lichula Sc Hichnnienchnt" +// • "Mi Schulantr" +// • "Pasler" +// • "Glelsadris Kul" +// • "Ce Sch" +// • "Pa Li Misa Li MD" +// • "Glalaulaugl" +// • "Lellantr" +// • "Licha Kuppppphuadr" +// • "Her" +// • "Gls Ta St" +// • "MDouglasantz" +// • "Lelalitanishntr" +// • "Cenn Sch" +// • "Pa Kuleslenier" +// • "Joulenntoula Ker" +// • "Mitonick Kerich" +// • "Cela Wa Kupphulanis" +// • "Jonitz" +// • "Padr" +// • "Gla Doupe Sta Wadr" +// • "Hick Schugl" +// • "Leris" +// • "Lis Wadyn" +// • "Pa Wa Kule Liedris" +// • "Pa Sc Keri Kuls Muglanntz" +// • "Pa Schnis St" +// • "Pauanichuphuadysaupppe D" +// • "Johuphnni Hedrish" +// • "Gls Schnitanch" +// • "Panich" +// • "Gla Watris" +// • "Hichn Kuppelslasadys Douatoul" +// • "Cedystouppph" +// • "Cenchntadysstonichatanchnish" +// • "Gl" +// • "Lynnnta Schulerichupphn D" +// • "Padysa Ler" +// • "Glele Hesan" +// • "Le Kugler" +// • "Jonta Kell" +// • "Pamielalitr" +// • "Mulelier" +// • "Juler" +// • "Lelsllllauphulla Wa Tas Schulells Hic Tannni Kula Ker" +// • "Panic Donintallash" +// • … + +fc.fuzzedString([ + 'charity_keeling17@gmail.com', + 'tyshawn.parisian@gmail.com', + 'bette_hyatt@hotmail.com', + 'estell3@gmail.com', + 'alva.kirlin80@gmail.com', + 'patrick_jaskolski@hotmail.com', + 'loren_mosciski@yahoo.com', + 'teresa_hamill66@gmail.com', + 'libbie41@yahoo.com', + 'brando_lakin@hotmail.com', +]); +// Examples of generated values: +// • "coscotyain.co.kil.com" +// • "tmairil.corittma.cote_ho.pa.com" +// • "l.comail.cotel.cirel.coskorisilvamisai@homaia_k_m" +// • "ailvaschorl.cotel.comoste_mail.co.cotm" +// • "parli@homain_jail.pai@hain@gmaitman.co.cooomawn80@gm" +// • "l.co.co.co.kil.comahosa.co.co.coskolingmomol.cki@hahomahan80@gm" +// • "tyakil.cotm" +// • "bindostyaren_hattmo_ho.patmaibil6@hotm" +// • "comain80@y_lilvai@gm" +// • "paiskitmo.co.cote41@gmaitm" +// • "ttma_momistyawndo.comicom" +// • "eliscin@gmastrill.comarin80@gmaitet@gm" +// • "pali@hom" +// • "biscorill.coma_hail.coooomiare417@gmil.coscoom" +// • "com" +// • "terisilliliskil.cosco.cotmare_kiarlaill.chotmail.kilolllvatyakibbil.cotettm" +// • "ciskibil.co.co.comailailieskiren.co.colill.chawn80@g17@hol.comai@gmahomotescomai@homailvakicho.cotyaiscil6@gm" +// • "be417@gmicom" +// • "l.coskitre41@g17@gmakil6@y_hail.comahom" +// • "chotmailom" +// • "libil.ci@hotmail.ckotestesken80@yshya.palil.king17@hom" +// • "berail666@gmatm" +// • "paicom" +// • "esan80@g17@gm" +// • "l.comatete417@gm" +// • "comail.cotyahoskil3@gm" +// • "cottell.comarailial.com" +// • "etrin@g1@gm" +// • "l.coty_hom" +// • "etrelil.cot@homarl.comaico_kiristtm" +// • "pam" +// • "pando.kil.comishysco.coo.coom" +// • "biall.chahomaretribesahom" +// • "chott@gma_lo.pailskil66@gmosil.co.kittettmakeriee417@g17@yskisttelil.coom" +// • "ttrel.chascoom" +// • "testel.comail.k_hom" +// • "ain@gmam" +// • "brat@hooomawndom" +// • "t@g1@holsaril.coolva_hom" +// • "ty_miske417@homan@yandoom" +// • "bell.com" +// • "ai@gmaill.comi@yari@yakil.pail.co.kiliril66@yaityaril.cindom" +// • "bit@gmil.cil.co.kirel.comangmawn_mai@gm" +// • "l.coomitttttm" +// • "akiscomakil.coom" +// • "teshomail.comal.comahomain80@y_komaibe_hain@gmat@gmatm" +// • "brl.com" +// • "tysin@hatyal.co.com" +// • "paindomaico_jam" +// • "tritel.comamahotm" +// • … + +fc.fuzzedString([ + 'https://tan-parameter.name/', + 'https://inborn-signify.net', + 'https://jealous-deduction.biz/', + 'https://favorite-scientist.org/', + 'https://defenseless-peach.info', + 'https://cold-pipeline.org/', + 'https://blue-fuel.biz', + 'https://cultivated-bladder.name', + 'https://whispered-gallery.net/', + 'https://mediocre-deposition.info', +]); +// Examples of generated values: +// • "htene" +// • "htereame-ps:/whtt.n-ps-fare-borgal.biz/cr.n.o" +// • "httin-g/" +// • "htivory.ify.iz" +// • "htpsefenttps:/jeleameluet" +// • "htpenaliostactioredeatttpo" +// • "htamenbory.blt.on.n.ne-dules-dd-pavacorgnavo" +// • "htttt/denantps:/tiefan-sel.onttpin-pssperenttpeps:/jelul.bitps-ps://" +// • "htpsconivorn-ss:/iouedinen-ps:/bltpele/criorgadetttedeame.nbitergnfucry.nbinfucrnbl.ne-deded-bor.nied-de" +// • "ht.niz" +// • "hign.n-d-ps:/merg/" +// • "httpalis:/bluletes-de-sps://je" +// • "htetpelue/jelalin-fede/feluenade-facor.natpsps:/" +// • "h.ierescreduer.n-g/" +// • "httpss:/mesinfuelifepstt" +// • "htenaneattpiornfy.oname.io" +// • "htteps:////////fucien.niz/tiz/" +// • "htttamerg//inalaned-s://tps://///whtps:/whttpspaco" +// • "ht" +// • "htiz" +// • "htpe-pssctpelluct" +// • "h.nbociz/fuscrnblieluenamele.bolin-pe-difer.igans:/coueduen.nfy.n.bionbitpscttin.iforg/ttte-ps:/jerg/tpe" +// • "httpspsis://mepetps-bisetpery.in.ips:///ctiornelen-stps-ps:/" +// • "htttps:/" +// • "htpettttps://" +// • "httergal.neametpettele-fede/" +// • "htpsinerintpscorgaluettps:/" +// • "httisis:/" +// • "h.n-s:/" +// • "htps:///defe-gacinetpiz/cornbio" +// • "htpivo" +// • "h.biz" +// • "https:/mename.n.inefoneame" +// • "hte-blos:/je-defuededued-bone-ponanin.bont/" +// • "htiz/cus:/tps://" +// • "htterg//whtpselelditpetpe-fo" +// • "httteamergne.bor.bornanentpame-sper.bldderan-de-gns:///jery.io" +// • "httttt/jefy.info" +// • "htps:/ifosttpamettps:///bos:/ioradd-d-g///cre/whtps:/" +// • "htpsis:/" +// • "h.binfettealalull.biz//binin.nbocrg//cig//whtittps://" +// • "htter.nfoseponeamealalorealiz/d-denined-pe.nbler.blddenfachttttps:/metpens://" +// • "httt.olucucis:///is://inefenifonens:/whtpor.neamenspe-pereris:/biorgan.orametpon.octtps:/mealos:/je-fan.nettadigns:/" +// • "htavo" +// • "h.nfacrnios://je///" +// • "htps://" +// • "htt" +// • "htpsens:/tpealttps:/duetpscielamern-stps-dergalan-g/jeriol.ner.narnacory.ore" +// • "htpsis://ttivo" +// • "httpse-sionere.nadus:/" +// • … +``` + +Resources: [API reference](https://fast-check.dev/api-reference/functions/fuzzedString.html). +Available since x.x.x. diff --git a/website/docs/core-blocks/arbitraries/fake-data/fuzzed10.md b/website/docs/core-blocks/arbitraries/fake-data/fuzzed10.md new file mode 100644 index 00000000000..2f0fbbd408a --- /dev/null +++ b/website/docs/core-blocks/arbitraries/fake-data/fuzzed10.md @@ -0,0 +1,345 @@ +--- +slug: /core-blocks/arbitraries/fake-data/fuzzed/ +--- + +# Fuzzed + +Generate fuzzed values. + +## fuzzedString10 + +TODO + +**Signatures:** + +- `fc.fuzzedString10(corpus)` + +**with:** + +- `corpus` — _TODO_ + +**Usages:** + +```js +fc.fuzzedString10([ + 'Link to official documentation', + '

Here is a Title

', + '

Here is a Sub-Title

', + '

A paragraph having some text in bold and some in Italic

', +]); +// Examples of generated values: +// • "" +// • "Hef=\"han

Heretta tpali>A st-cha to off=\"_b-Ticumeta p>" +// • "

A pant dA

Here ingexti> ink t=\" sof=\"h1>" +// • "

He p>" +// • "

Here in i>Itps " +// • "

Heretal doc

Herg ink\"h2> ing alev//\" iank\">A Sume in " +// • "

Here is ingengrge" +// • "" +// • "

A TiteHeraraleragravink p> avi>

HetleHere tlial p>Lin ha>" +// • "b-Titarge

A

Here is he

A tocumen in ta>" +// • "" +// • "Itof=\">" +// • "" +// • "He i>Hetatp>" +// • "Here Sublap>

A h1>" +// • "

Hende ic

Herere s d

" +// • "Lin Here is a Tin Tic

A pap>" +// • "

Hen talicHerg it-cblit ataref=\"_blantph

Hetaletat ps://fa>" +// • "Het=\"httlin some Title

Here text alite

He

Henk tlev/\" avintaralasome h2> Titale" +// • "

A paragra alare ink\">Li>Itenk tin some son a ia ic" +// • "

Lin some ista ici>" +// • "

A alechtt Hext i>" +// • "Itlenk\">Link Sub-Ti>" +// • "

He it-cume i>He iomevitald

b-ck.d p>" +// • "

Here iondoffficume tochereLin to s in sonk.dev/\" tps:/fare i>

Lin " +// • "
bli>" +// • "

He

" +// • "

Herefi>Ite on

Hereragreck tomeLich Here atlef=\"h2>Iterent Sub>A A in ta>HeItaph2>Heviank\">" +// • "

" +// • "

Henk al dont=\">It ha al a tlde Tin ock.de

Here is TitleIt-Tialeciantolend

Hetlagref=\">" +// • "

Here ing to officia>" +// • " italatis

" +// • "Itle" +// • "

" +// • "

" +// • "Here so

b-Tis ic tp>b>" +// • "" +// • "Lit is onHe

Licick a>A ic

Heff=\">Listome in ha a i>Li>" +// • "

He taralast isol some

Here ich1>He ink.de ta>" +// • "Link is tpas i>" +// • "

Here

Here itapast ara aphareck.domera>Here

Here tef=\"he arav/\" to in arext ing pald

HeHeta ison

Heran ind" +// • "" +// • "

Here in

Hengrg h1>" +// • "

A is astlendbold and h2>" +// • "

Herefalerargrarge iolavistlav/h1>

A ph tle a>" +// • "

Here it ong atavin " +// • "

Heralite itle is told hrge s " +// • "

Here is offi>A iap>Hev/ffastonta d on" +// • "b> is targe ome tl a a Subome is aldec

A " +// • "

Here" +// • … + +fc.fuzzedString10([ + '6506 Frida Rapid Suite 656', + '491 Alicia Circles Suite 128', + '5683 Welch Cape Suite 486', + '55608 Wilburn Burg Apt. 121', + '8421 Cassin Place Apt. 903', + '858 Madalyn Knolls Apt. 812', + '51691 Roberts Overpass Suite 131', + '1133 Herzog Manor Suite 457', + '889 Hermiston Parks Suite 980', + '6464 Vandervort Hill Suite 427', +]); +// Examples of generated values: +// • "651133 491 851284212" +// • "51691 Overvolit. 12" +// • "1133 889 Ra 911" +// • "8421 Casinollclbur Wesirve Hite We Mada 9 Cid 80" +// • "65111313333 Hiterve Rorkst. 903" +// • "5164646" +// • "57" +// • "889 Hervog Suite Suit. Passs Burperte 1 Pace Suite Madass Burtoberite Pl Ca Surpt. Overpadallite 4856889 Hermite Frite Aper Frpes Apt. Man Frpt. 8513 48491 1111" +// • "56848491 He 8556088856888 Marg 121" +// • "516913 Frilbuite 427" +// • "5560" +// • "16491 691 Werpitondan 12888421113 Wite 131133 Suiartermin Burmite 9 98456883 Apt. Capermit. 6556" +// • "516551284911 Hervor Werg Suite Suiapte 128889 Suit. Herg 490650645112" +// • "491 Capt. Suite 427" +// • "1111133 Welbercl Suirials Suite Welil Vassillyn Apt. Cass Vapts Suitess Apt. Papiterg Frnollite Rond Rad Ra 64911" +// • "5650656506491 Cas Apts 491 Wite 133 We 1113333 Wicerndasss 90" +// • "56" +// • "8421 98506491 Aptss Suiterks Suit. Suite Suite 1 Manoburvobele 427" +// • "51691128421 Wernollasst. Suiterzog 65685685685649 4 Hilaperzobuiciacit. 491 Aliciapas Malbur Overg 113 Wermid Ove Apercl Suit. Ove 91 Suiss Herte Plls Papiapt. Aptsstes 98" +// • "6506 Frianort Surg Vace 98491 Frn 491133 Herzog Suin Ralbuida Capite 980" +// • "6" +// • "4868491 Apallch Wits Overmis Suiterg He 12131133 113111 Ran 491 Suite 427" +// • "651 Madalynde 91 Can Ma 8465064564911133 Herzondermit. Suit. Hern 1113 Mapida Apt. Suite 127" +// • "865111121331" +// • "8421 Hes Kn 1 Knoberg Herperve 113" +// • "491 Plape Suirite 11133 Herzoris Suite 4911" +// • "1 Frirpton Pla 491316555111112" +// • "5683 Ra Knol Raperzog Man Ala 1 He Suite 1691111 Wite Kndasst 48889 Hermis Cite 912" +// • "8885833127" +// • "427" +// • "1133 Herte Pllllbern 9 Cil Hite Hirptog Mastonor He 116465064 Buisin Carmias Suitess Surterzorce Suite 4855608 Pach He 457" +// • "51691 Rorid Ape Wit. 88858 Apte He Suite He Suitond Suite 6456491 111 Ca Rorzor Ca Mall Apt. Hite Mass Suite Suis Mass Fr 650" +// • "89 Capid 48491 Wia Cas We Va 491 Alite 1311 Suites Parksidan Ple Suite Rapt. 89 Hermida Hercite Albuidale Mapida 9133" +// • "1133 491133 Suite 649 Mas 121" +// • "51 Hess Hias 9064 Buiade 127" +// • "1133 Cill Fr Surg Ovorte Suite 858491 Apt. Wer Suite 427" +// • "556885556556885127" +// • "8421 Cas Pas 1" +// • "491 9113 Werg 491 Alirzorias 851131212842121 Apte 133 Apistog Manor Suit. Va Caperg Suit. Suila Apas Apt Apiclbe Apt. 90" +// • "55608 Wilyn Suian Hilch Cacill Ma Wite 1" +// • "6506 Frte Suitermiss 642" +// • "5683 We Apt 9851" +// • "60889 Plas Alanon Hes Man Vas Heste 980" +// • "81113113 Manolal Frid Plert. 4912" +// • "85851 Suite 486" +// • "6421" +// • "85842121 488511" +// • "85849113 Hiterte Alit. Al He 491656491 Pan 8 Cace Panorzorvoberks 11 Van 49 Suid Ove 113 Vaparks Apilern 49113 Plssis Suite Knollstor Aptelapte Apt Rormite Ma 88 Wirclyn Plllid 11 Hida Burnorte Hills 912133 427" +// • "5683 Welelil Raderks Caciande Herton 111 168516564646491331 Burpa Wite 46491 Robermiladarts Apt. 851" +// • "656" +// • … + +fc.fuzzedString10([ + 'Cedric Muller', + 'Gladys Lynch', + 'Juanita Hintz', + 'Miss Tami Walsh', + 'Lisa Kessler', + 'Johnnie Schulist', + 'Helen Schuppe MD', + 'Patrick Stanton', + 'Paula Kuphal', + 'Lela Douglas', +]); +// Examples of generated values: +// • "Miss Tami Kuatr" +// • "Lela Dougla Lelanit" +// • "Miss Schuppelentanchnntadys Ler" +// • "Paula Kuphantouls Tata Stan" +// • "Paula Kuphalatami Leler" +// • "Cedric Mistat" +// • "Miss Talla Kulauppesler" +// • "Hedrichupe Schupe MD" +// • "MD" +// • "Gladyst" +// • "Miss Tamich" +// • "Hintz" +// • "Gladyslie Schuppe Tauanita List" +// • "Cedrit" +// • "Johnnie Schuppe MDougleli Wanital" +// • "Heledr" +// • "Helen D" +// • "Paula Hess" +// • "Cedric Mullic Mi Sch" +// • "Lelat" +// • "Juataniedysh" +// • "Cedric Mugladynnie Kuglasstoha Misllish" +// • "Helen Schuppe Miss Tami Walsh" +// • "Patrick Sc Sck Mick Sck Schupedynist" +// • "Patrick Helenn Schuppe Miss Tadrich" +// • "Lisas Minn Dohuphn Sch" +// • "Lela Kulisales Ke Sch" +// • "Patr" +// • "Helen Sch" +// • "Lisa Kessler" +// • "Patric He Watas" +// • "Patantohuphal" +// • "Gladys Lela Kupppe Sc Tastonis Wanie Wauppper" +// • "Juauglami Helench" +// • "Cedric Mislamichanitr" +// • "Lisa Ker" +// • "Miss Ta Doullamitrieler" +// • "Lela Doualss" +// • "Pamis" +// • "Lisa Kesslsanie MD" +// • "Muller" +// • "Helen Schuppessh" +// • "Cedric Mulelass Lick Walsl" +// • "Pa Wat" +// • "Lisa Kes" +// • "Patrick Kuphntz" +// • "Patrichuglshamis Miss Talenisshnchuph" +// • "Cedrick Schuls Ston" +// • "Cedys MD" +// • "Lisa Kessani Miss Wamis" +// • … + +fc.fuzzedString10([ + 'charity_keeling17@gmail.com', + 'tyshawn.parisian@gmail.com', + 'bette_hyatt@hotmail.com', + 'estell3@gmail.com', + 'alva.kirlin80@gmail.com', + 'patrick_jaskolski@hotmail.com', + 'loren_mosciski@yahoo.com', + 'teresa_hamill66@gmail.com', + 'libbie41@yahoo.com', + 'brando_lakin@hotmail.com', +]); +// Examples of generated values: +// • "tyshawn.choomail.com" +// • "brandom" +// • "l.com" +// • "teresa_hailskiliskomailibrahoskom" +// • "pate_hoo.kirili@hail.patyail.com" +// • "esttyskilil.co.com" +// • "com" +// • "estell3@gm" +// • "pat@yailorl.palicisttelom" +// • "patrick_jam" +// • "ll.com" +// • "bescom" +// • "bbril.com" +// • "ariski@gmaitte_keskestmal66@gm" +// • "brando_lom" +// • "brandosko.costeste_haisteresal.chal.com" +// • "brandoo.patestyshariteelva.kilo.chy_hom" +// • "aho.com" +// • "eresahom" +// • "bettyshalo.colibilorin80@y_lori@hyakil.com" +// • "tyshatetyshoshom" +// • "a.kirlischarisi@gmail.com" +// • "l3@homoteskil.chan.patystelibeteresa_hail.com" +// • "bestyaibren@gmaililicom" +// • "bestesa_m" +// • "patyalin_malorando_l.chakirestyaisi@homalom" +// • "terellotya.cote_hyskerin80@gm" +// • "charitm" +// • "alva.kilomal.com" +// • "patysin@hotestelomaicom" +// • "atrilski@hotm" +// • "bestelsityahal.chamalva.comoscotesty_kesalorestyateshali@hotesterin@gm" +// • "loren_hamalibrandoralvai@gm" +// • "en@gmak_hy_jailakilomailom" +// • "estelotesteresalom" +// • "elin@homalorlailibettyshomawn.cotyshawn80@gmaichahyalibrandom" +// • "patricke_hotelibeterel.co_ho.chom" +// • "testyskil.cho.com" +// • "bbil.com" +// • "chakingm" +// • "tyshalin80@gm" +// • "esterelo_l.com" +// • "charililirandom" +// • "brandomail.com" +// • "amailisil.chal.com" +// • "patrick_kil3@gmarl.com" +// • "estyshotmahaloren_m" +// • "terarl3@gmaiberelorestm" +// • "betteskoten_m" +// • "betterilin_m" +// • … + +fc.fuzzedString10([ + 'https://tan-parameter.name/', + 'https://inborn-signify.net', + 'https://jealous-deduction.biz/', + 'https://favorite-scientist.org/', + 'https://defenseless-peach.info', + 'https://cold-pipeline.org/', + 'https://blue-fuel.biz', + 'https://cultivated-bladder.name', + 'https://whispered-gallery.net/', + 'https://mediocre-deposition.info', +]); +// Examples of generated values: +// • "https://medine-ps:/delo" +// • "https://de" +// • "https://facrg/whttps://biory.bocren-pipernamenamentedediz/" +// • "https://blliepedealeletps://col.ify.name-s:/" +// • "https://in.nbiele.biz////ttps://falis-s://cul.orery.biz/" +// • "https:////whttps:///" +// • "https://iz" +// • "https://favornfamenss-ps://fadeter.bittttps://cultivame.iseforinfy.nbornerel.ous-dedite-deduseneten.bos:/blo" +// • "https://jelary.nfuery.ite" +// • "https://ttps://cosettps:/whttps://me-scio" +// • "https://ine.oldeltps://jentipetele-pion.biz/" +// • "https://bocr.ie-dig//cuctavorg/" +// • "httit" +// • "https://medist.bllueletps://depionied-pstpameltporg/" +// • "https://blue-del.is:/t" +// • "https://jealocultttps://defepss:/" +// • "https://whttps://jeameranarelttttps://cucue-d-fantigate-fatefy.ory.ntpspavorg/blus://dealttps://chttps://whttps://co" +// • "htamet" +// • "https:/whttps://ttps:/whtps://culenfo" +// • "https://mer.namefeame" +// • "https:///" +// • "https://whttps://tediel.nin-pign-sierer.isps:/" +// • "https://farn-pspie.blatps://bluelesps://delaco" +// • "https://dd-s-defess://" +// • "https:/biz" +// • "https://metps:/jery.nettps://tps://favo" +// • "https://cold-ps:///jerg/cultpornet" +// • "https://whttps://whttps://ctposivocre-d-g///core-bio" +// • "https://je-sig////" +// • "https://ttpactipspig/de-s:/d-ps:/corinboltpe-detps://consen.n-d-ped-schtenargnttttedultps://culelens://fo" +// • "https://mesttpsps:///whttps://talte//cipsis-ps://wht.o" +// • "https://///jelipe-ded-blepos://itin-ps:/couchtinblolon-fy.ips://jeal.bled-s://cole-desed-s:/" +// • "https://me-par.nenbous://" +// • "htpocos://cullorn.nfy.bips://whttps://" +// • "https://d-ps://bie-s-galinfone.nametps://melame" +// • "https:/felenio" +// • "https://cold-ps://chttps://bladere-de-psig/" +// • "https://cultttpselelielor.ifavoramed-s-s:/crg/" +// • "https://meame/blacitifousettiorg/" +// • "https://culattttps://" +// • "https://cratentpet" +// • "https://mettpselol.bit.n-s://ded-signedefo" +// • "https://fanaravate-ps-biz//jery.binerenetitis-ddepsinior.ochttpser.binetin.biz" +// • "https://blignify.netps:/" +// • "https://meriz/" +// • "https://wh.iz" +// • "https:///culte-gargameld-blion.bips://dus://whttpsepelucucon-ps:///cuctps:/mediz//////////tpenente.namettps://derede-scieane-sctps://whttps://cululdes://taletpsps:/" +// • "https://defe-dedentps:////" +// • "https://tantps:/" +// • "https://cocued-biss-dene-ps://defenat" +// • … +``` + +Resources: [API reference](https://fast-check.dev/api-reference/functions/fuzzedString10.html). +Available since x.x.x.