github.com/djenriquez/nomad-1@v0.8.1/helper/funcs_test.go (about)

     1  package helper
     2  
     3  import (
     4  	"reflect"
     5  	"sort"
     6  	"testing"
     7  )
     8  
     9  func TestSliceStringIsSubset(t *testing.T) {
    10  	l := []string{"a", "b", "c"}
    11  	s := []string{"d"}
    12  
    13  	sub, offending := SliceStringIsSubset(l, l[:1])
    14  	if !sub || len(offending) != 0 {
    15  		t.Fatalf("bad %v %v", sub, offending)
    16  	}
    17  
    18  	sub, offending = SliceStringIsSubset(l, s)
    19  	if sub || len(offending) == 0 || offending[0] != "d" {
    20  		t.Fatalf("bad %v %v", sub, offending)
    21  	}
    22  }
    23  
    24  func TestMapStringStringSliceValueSet(t *testing.T) {
    25  	m := map[string][]string{
    26  		"foo": {"1", "2"},
    27  		"bar": {"3"},
    28  		"baz": nil,
    29  	}
    30  
    31  	act := MapStringStringSliceValueSet(m)
    32  	exp := []string{"1", "2", "3"}
    33  	sort.Strings(act)
    34  	if !reflect.DeepEqual(act, exp) {
    35  		t.Fatalf("Bad; got %v; want %v", act, exp)
    36  	}
    37  }
    38  
    39  func TestCopyMapStringSliceString(t *testing.T) {
    40  	m := map[string][]string{
    41  		"x": {"a", "b", "c"},
    42  		"y": {"1", "2", "3"},
    43  		"z": nil,
    44  	}
    45  
    46  	c := CopyMapStringSliceString(m)
    47  	if !reflect.DeepEqual(c, m) {
    48  		t.Fatalf("%#v != %#v", m, c)
    49  	}
    50  
    51  	c["x"][1] = "---"
    52  	if reflect.DeepEqual(c, m) {
    53  		t.Fatalf("Shared slices: %#v == %#v", m["x"], c["x"])
    54  	}
    55  }
    56  
    57  func TestClearEnvVar(t *testing.T) {
    58  	type testCase struct {
    59  		input    string
    60  		expected string
    61  	}
    62  	cases := []testCase{
    63  		{"asdf", "asdf"},
    64  		{"ASDF", "ASDF"},
    65  		{"0sdf", "_sdf"},
    66  		{"asd0", "asd0"},
    67  		{"_asd", "_asd"},
    68  		{"-asd", "_asd"},
    69  		{"asd.fgh", "asd.fgh"},
    70  		{"A~!@#$%^&*()_+-={}[]|\\;:'\"<,>?/Z", "A______________________________Z"},
    71  		{"A\U0001f4a9Z", "A____Z"},
    72  	}
    73  	for _, c := range cases {
    74  		if output := CleanEnvVar(c.input, '_'); output != c.expected {
    75  			t.Errorf("CleanEnvVar(%q, '_') -> %q != %q", c.input, output, c.expected)
    76  		}
    77  	}
    78  }
    79  
    80  func BenchmarkCleanEnvVar(b *testing.B) {
    81  	in := "NOMAD_ADDR_redis-cache"
    82  	replacement := byte('_')
    83  	b.SetBytes(int64(len(in)))
    84  	b.ReportAllocs()
    85  	b.ResetTimer()
    86  	for i := 0; i < b.N; i++ {
    87  		CleanEnvVar(in, replacement)
    88  	}
    89  }