github.com/tompao/docker@v1.9.1/pkg/stringutils/stringutils_test.go (about)

     1  package stringutils
     2  
     3  import "testing"
     4  
     5  func testLengthHelper(generator func(int) string, t *testing.T) {
     6  	expectedLength := 20
     7  	s := generator(expectedLength)
     8  	if len(s) != expectedLength {
     9  		t.Fatalf("Length of %s was %d but expected length %d", s, len(s), expectedLength)
    10  	}
    11  }
    12  
    13  func testUniquenessHelper(generator func(int) string, t *testing.T) {
    14  	repeats := 25
    15  	set := make(map[string]struct{}, repeats)
    16  	for i := 0; i < repeats; i = i + 1 {
    17  		str := generator(64)
    18  		if len(str) != 64 {
    19  			t.Fatalf("Id returned is incorrect: %s", str)
    20  		}
    21  		if _, ok := set[str]; ok {
    22  			t.Fatalf("Random number is repeated")
    23  		}
    24  		set[str] = struct{}{}
    25  	}
    26  }
    27  
    28  func isASCII(s string) bool {
    29  	for _, c := range s {
    30  		if c > 127 {
    31  			return false
    32  		}
    33  	}
    34  	return true
    35  }
    36  
    37  func TestGenerateRandomAlphaOnlyStringLength(t *testing.T) {
    38  	testLengthHelper(GenerateRandomAlphaOnlyString, t)
    39  }
    40  
    41  func TestGenerateRandomAlphaOnlyStringUniqueness(t *testing.T) {
    42  	testUniquenessHelper(GenerateRandomAlphaOnlyString, t)
    43  }
    44  
    45  func TestGenerateRandomAsciiStringLength(t *testing.T) {
    46  	testLengthHelper(GenerateRandomASCIIString, t)
    47  }
    48  
    49  func TestGenerateRandomAsciiStringUniqueness(t *testing.T) {
    50  	testUniquenessHelper(GenerateRandomASCIIString, t)
    51  }
    52  
    53  func TestGenerateRandomAsciiStringIsAscii(t *testing.T) {
    54  	str := GenerateRandomASCIIString(64)
    55  	if !isASCII(str) {
    56  		t.Fatalf("%s contained non-ascii characters", str)
    57  	}
    58  }
    59  
    60  func TestTruncate(t *testing.T) {
    61  	str := "teststring"
    62  	newstr := Truncate(str, 4)
    63  	if newstr != "test" {
    64  		t.Fatalf("Expected test, got %s", newstr)
    65  	}
    66  	newstr = Truncate(str, 20)
    67  	if newstr != "teststring" {
    68  		t.Fatalf("Expected teststring, got %s", newstr)
    69  	}
    70  }
    71  
    72  func TestInSlice(t *testing.T) {
    73  	slice := []string{"test", "in", "slice"}
    74  
    75  	test := InSlice(slice, "test")
    76  	if !test {
    77  		t.Fatalf("Expected string test to be in slice")
    78  	}
    79  	test = InSlice(slice, "SLICE")
    80  	if !test {
    81  		t.Fatalf("Expected string SLICE to be in slice")
    82  	}
    83  	test = InSlice(slice, "notinslice")
    84  	if test {
    85  		t.Fatalf("Expected string notinslice not to be in slice")
    86  	}
    87  }
    88  
    89  func TestShellQuoteArgumentsEmpty(t *testing.T) {
    90  	actual := ShellQuoteArguments([]string{})
    91  	expected := ""
    92  	if actual != expected {
    93  		t.Fatalf("Expected an empty string")
    94  	}
    95  }
    96  
    97  func TestShellQuoteArguments(t *testing.T) {
    98  	simpleString := "simpleString"
    99  	complexString := "This is a 'more' complex $tring with some special char *"
   100  	actual := ShellQuoteArguments([]string{simpleString, complexString})
   101  	expected := "simpleString 'This is a '\\''more'\\'' complex $tring with some special char *'"
   102  	if actual != expected {
   103  		t.Fatalf("Expected \"%v\", got \"%v\"", expected, actual)
   104  	}
   105  }