fuzzer.go 545 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // Generate a repatable string of characters for fuzz testing.
  2. package main
  3. import (
  4. "fmt"
  5. "math/rand"
  6. "unicode"
  7. )
  8. func main() {
  9. source := rand.NewSource(17)
  10. r := rand.New(source)
  11. for {
  12. switch r.Intn(4) {
  13. case 0:
  14. if r.Intn(20) == 0 {
  15. fmt.Printf("\n")
  16. } else {
  17. out(r, 32, 128)
  18. }
  19. case 1:
  20. out(r, 128, 256)
  21. case 2:
  22. out(r, 256, 0x10000)
  23. default:
  24. out(r, 0x10000, unicode.MaxRune)
  25. }
  26. }
  27. }
  28. func out(r *rand.Rand, begin, end int) {
  29. var c rune
  30. c = (rune)(r.Intn(end-begin) + begin)
  31. fmt.Printf("%c", c)
  32. }