github.com/hashicorp/packer@v1.14.3/hcl2template/function/ends_with_test.go (about) 1 package function 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/zclconf/go-cty/cty" 8 ) 9 10 func TestEndsWith(t *testing.T) { 11 tests := []struct { 12 String, Suffix cty.Value 13 Want cty.Value 14 }{ 15 { 16 cty.StringVal("hello world"), 17 cty.StringVal("world"), 18 cty.True, 19 }, 20 { 21 cty.StringVal("hey world"), 22 cty.StringVal("worldss"), 23 cty.False, 24 }, 25 { 26 cty.StringVal(""), 27 cty.StringVal(""), 28 cty.True, 29 }, 30 { 31 cty.StringVal("a"), 32 cty.StringVal(""), 33 cty.True, 34 }, 35 { 36 cty.StringVal("hello world"), 37 cty.StringVal(" "), 38 cty.False, 39 }, 40 { 41 cty.StringVal(" "), 42 cty.StringVal(""), 43 cty.True, 44 }, 45 { 46 cty.StringVal(" "), 47 cty.StringVal("hello"), 48 cty.False, 49 }, 50 { 51 cty.StringVal(""), 52 cty.StringVal("a"), 53 cty.False, 54 }, 55 { 56 cty.UnknownVal(cty.String), 57 cty.StringVal("a"), 58 cty.UnknownVal(cty.Bool).RefineNotNull(), 59 }, 60 { 61 cty.UnknownVal(cty.String), 62 cty.StringVal(""), 63 cty.UnknownVal(cty.Bool).RefineNotNull(), 64 }, 65 } 66 67 for _, test := range tests { 68 t.Run(fmt.Sprintf("EndsWith(%#v, %#v)", test.String, test.Suffix), func(t *testing.T) { 69 got, err := EndsWithFunc.Call([]cty.Value{test.String, test.Suffix}) 70 71 if err != nil { 72 t.Fatalf("unexpected error: %s", err) 73 } 74 75 if !got.RawEquals(test.Want) { 76 t.Errorf( 77 "wrong result\nstring: %#v\nsuffix: %#v\ngot: %#v\nwant: %#v", 78 test.String, test.Suffix, got, test.Want, 79 ) 80 } 81 }) 82 } 83 }