github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/utils/inject/inject_fuzz_test.go (about)

     1  //go:build go1.18
     2  // +build go1.18
     3  
     4  package inject_test
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/lmorg/murex/test/count"
    10  	"github.com/lmorg/murex/utils/inject"
    11  )
    12  
    13  func FuzzInjectString(f *testing.F) {
    14  	pos := []int{-100, -5, -2, -1, 0, 1, 2, 5, 10, 20, 100}
    15  
    16  	for _, i := range pos {
    17  		f.Add("", "", i)
    18  		f.Add("", ".", i)
    19  		f.Add(".", "", i)
    20  		f.Add(`!"£$%^&*(`, `!"£$%^&*()`, i)
    21  		f.Add("12345!", "12345!", i)
    22  		f.Add("foobar", "foobar", i)
    23  		f.Add("世", "界", i)
    24  		f.Add("世界", "世界", i)
    25  	}
    26  
    27  	f.Fuzz(func(t *testing.T, old, insert string, pos int) {
    28  		count.Tests(t, 1)
    29  		inject.String(old, insert, pos)
    30  		// we are just testing we can't cause an unhandled panic
    31  	})
    32  }
    33  
    34  func FuzzInjectRune(f *testing.F) {
    35  	pos := []int{-100, -5, -2, -1, 0, 1, 2, 5, 10, 20, 100}
    36  
    37  	for _, i := range pos {
    38  		f.Add("", "", i)
    39  		f.Add("", ".", i)
    40  		f.Add(".", "", i)
    41  		f.Add(`!"£$%^&*(`, `!"£$%^&*()`, i)
    42  		f.Add("12345!", "12345!", i)
    43  		f.Add("foobar", "foobar", i)
    44  		f.Add("世", "界", i)
    45  		f.Add("世界", "世界", i)
    46  	}
    47  
    48  	f.Fuzz(func(t *testing.T, old, insert string, pos int) {
    49  		count.Tests(t, 1)
    50  		inject.Rune([]rune(old), []rune(insert), pos)
    51  		// we are just testing we can't cause an unhandled panic
    52  	})
    53  }