stringutils_test.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package stringutils
  2. import "testing"
  3. func testLengthHelper(generator func(int) string, t *testing.T) {
  4. expectedLength := 20
  5. s := generator(expectedLength)
  6. if len(s) != expectedLength {
  7. t.Fatalf("Length of %s was %d but expected length %d", s, len(s), expectedLength)
  8. }
  9. }
  10. func testUniquenessHelper(generator func(int) string, t *testing.T) {
  11. repeats := 25
  12. set := make(map[string]struct{}, repeats)
  13. for i := 0; i < repeats; i = i + 1 {
  14. str := generator(64)
  15. if len(str) != 64 {
  16. t.Fatalf("Id returned is incorrect: %s", str)
  17. }
  18. if _, ok := set[str]; ok {
  19. t.Fatalf("Random number is repeated")
  20. }
  21. set[str] = struct{}{}
  22. }
  23. }
  24. func isASCII(s string) bool {
  25. for _, c := range s {
  26. if c > 127 {
  27. return false
  28. }
  29. }
  30. return true
  31. }
  32. func TestGenerateRandomAlphaOnlyStringLength(t *testing.T) {
  33. testLengthHelper(GenerateRandomAlphaOnlyString, t)
  34. }
  35. func TestGenerateRandomAlphaOnlyStringUniqueness(t *testing.T) {
  36. testUniquenessHelper(GenerateRandomAlphaOnlyString, t)
  37. }
  38. func TestGenerateRandomAsciiStringLength(t *testing.T) {
  39. testLengthHelper(GenerateRandomAsciiString, t)
  40. }
  41. func TestGenerateRandomAsciiStringUniqueness(t *testing.T) {
  42. testUniquenessHelper(GenerateRandomAsciiString, t)
  43. }
  44. func TestGenerateRandomAsciiStringIsAscii(t *testing.T) {
  45. str := GenerateRandomAsciiString(64)
  46. if !isASCII(str) {
  47. t.Fatalf("%s contained non-ascii characters", str)
  48. }
  49. }