MCPcopy Create free account
hub / github.com/coregx/coregex / FuzzFindAllStdlib

Function FuzzFindAllStdlib

fuzz_stdlib_test.go:306–363  ·  view source on GitHub ↗

=========================================================================== FuzzFindAllStdlib - Fuzz FindAll/FindAllString/FindAllIndex ===========================================================================

(f *testing.F)

Source from the content-addressed store, hash-verified

304// ===========================================================================
305
306func FuzzFindAllStdlib(f *testing.F) {
307 // Add seed corpus
308 for _, p := range seedPatterns {
309 for _, i := range seedInputs {
310 f.Add(p, i)
311 }
312 }
313
314 f.Fuzz(func(t *testing.T, pattern, input string) {
315 // Skip known differences: UTF-8 codepoint vs byte matching
316 if hasUTF8CodepointDifference(pattern, input) {
317 return
318 }
319
320 // Skip invalid patterns
321 stdRe, err := regexp.Compile(pattern)
322 if err != nil {
323 return
324 }
325
326 cgRe, err := Compile(pattern)
327 if err != nil {
328 t.Fatalf("coregex failed to compile valid pattern %q: %v", pattern, err)
329 }
330
331 // Compare FindAll
332 stdFindAll := stdRe.FindAll([]byte(input), -1)
333 cgFindAll := cgRe.FindAll([]byte(input), -1)
334 if !equalByteSlices(stdFindAll, cgFindAll) {
335 t.Errorf("FindAll(%q, %q):\n stdlib: %v\n coregex: %v",
336 pattern, input, toStringSlice(stdFindAll), toStringSlice(cgFindAll))
337 }
338
339 // Compare FindAllString
340 stdFindAllStr := stdRe.FindAllString(input, -1)
341 cgFindAllStr := cgRe.FindAllString(input, -1)
342 if !reflect.DeepEqual(stdFindAllStr, cgFindAllStr) {
343 t.Errorf("FindAllString(%q, %q):\n stdlib: %v\n coregex: %v",
344 pattern, input, stdFindAllStr, cgFindAllStr)
345 }
346
347 // Compare FindAllStringIndex
348 stdFindAllStrIdx := stdRe.FindAllStringIndex(input, -1)
349 cgFindAllStrIdx := cgRe.FindAllStringIndex(input, -1)
350 if !reflect.DeepEqual(stdFindAllStrIdx, cgFindAllStrIdx) {
351 t.Errorf("FindAllStringIndex(%q, %q):\n stdlib: %v\n coregex: %v",
352 pattern, input, stdFindAllStrIdx, cgFindAllStrIdx)
353 }
354
355 // Test limited FindAll (n=3)
356 stdLimited := stdRe.FindAllString(input, 3)
357 cgLimited := cgRe.FindAllString(input, 3)
358 if !reflect.DeepEqual(stdLimited, cgLimited) {
359 t.Errorf("FindAllString(%q, %q, 3):\n stdlib: %v\n coregex: %v",
360 pattern, input, stdLimited, cgLimited)
361 }
362 })
363}

Callers

nothing calls this directly

Calls 9

equalByteSlicesFunction · 0.85
toStringSliceFunction · 0.85
AddMethod · 0.80
CompileMethod · 0.80
FindAllMethod · 0.80
FindAllStringMethod · 0.80
FindAllStringIndexMethod · 0.80
CompileFunction · 0.70

Tested by

no test coverage detected