github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/ev/contains/in_strings_test.go (about) 1 package contains 2 3 import ( 4 "github.com/emirpasic/gods/sets/hashset" 5 "reflect" 6 "testing" 7 ) 8 9 const ( 10 firstValue = "first" 11 longValue = "very_long_value_which_we_can_find_in_email" 12 missingValue = "missing" 13 ) 14 15 var twoStrings = []string{firstValue, longValue} 16 var twoStringsInterface = []interface{}{firstValue, longValue} 17 var setTwoStrings = NewSet(hashset.New(twoStringsInterface...)) 18 19 func TestNewInStringsFromArray(t *testing.T) { 20 type args struct { 21 elements []string 22 } 23 24 tests := []struct { 25 name string 26 args args 27 want InStrings 28 }{ 29 { 30 name: "success", 31 args: args{ 32 elements: twoStrings, 33 }, 34 want: inStrings{setTwoStrings, len(longValue)}, 35 }, 36 } 37 for _, tt := range tests { 38 t.Run(tt.name, func(t *testing.T) { 39 if got := NewInStringsFromArray(tt.args.elements); !reflect.DeepEqual(got, tt.want) { 40 t.Errorf("NewInStringsFromArray() = %v, want %v", got, tt.want) 41 } 42 }) 43 } 44 } 45 46 func Test_inStrings_Contains(t *testing.T) { 47 type fields struct { 48 contains InSet 49 maxLen int 50 } 51 type args struct { 52 value string 53 } 54 tests := []struct { 55 name string 56 fields fields 57 args args 58 want bool 59 }{ 60 { 61 name: "has equivalent of " + firstValue, 62 fields: fields{ 63 contains: setTwoStrings, 64 maxLen: len(longValue), 65 }, 66 args: args{ 67 value: firstValue, 68 }, 69 want: true, 70 }, 71 { 72 name: "has " + firstValue, 73 fields: fields{ 74 contains: setTwoStrings, 75 maxLen: len(longValue), 76 }, 77 args: args{ 78 value: missingValue + firstValue + missingValue, 79 }, 80 want: true, 81 }, 82 { 83 name: "has " + longValue + "in start", 84 fields: fields{ 85 contains: setTwoStrings, 86 maxLen: len(longValue), 87 }, 88 args: args{ 89 value: longValue + missingValue, 90 }, 91 want: true, 92 }, 93 { 94 name: "has " + longValue + "in end", 95 fields: fields{ 96 contains: setTwoStrings, 97 maxLen: len(longValue), 98 }, 99 args: args{ 100 value: missingValue + longValue, 101 }, 102 want: true, 103 }, 104 { 105 name: "missing of " + missingValue, 106 fields: fields{ 107 contains: setTwoStrings, 108 maxLen: len(longValue), 109 }, 110 args: args{ 111 value: missingValue, 112 }, 113 want: false, 114 }, 115 { 116 name: "empty value", 117 fields: fields{ 118 contains: setTwoStrings, 119 maxLen: len(longValue), 120 }, 121 args: args{ 122 value: "", 123 }, 124 want: false, 125 }, 126 } 127 for _, tt := range tests { 128 t.Run(tt.name, func(t *testing.T) { 129 is := NewInStrings(tt.fields.contains, tt.fields.maxLen) 130 if got := is.Contains(tt.args.value); got != tt.want { 131 t.Errorf("Contains() = %v, want %v", got, tt.want) 132 } 133 }) 134 } 135 }