github.com/hashicorp/packer@v1.14.3/hcl2template/function/anytrue_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package function 5 6 import ( 7 "fmt" 8 "testing" 9 10 "github.com/zclconf/go-cty/cty" 11 ) 12 13 func TestAnyTrue(t *testing.T) { 14 tests := []struct { 15 Collection cty.Value 16 Want cty.Value 17 Err bool 18 }{ 19 { 20 cty.ListValEmpty(cty.Bool), 21 cty.False, 22 false, 23 }, 24 { 25 cty.ListVal([]cty.Value{cty.True}), 26 cty.True, 27 false, 28 }, 29 { 30 cty.ListVal([]cty.Value{cty.False}), 31 cty.False, 32 false, 33 }, 34 { 35 cty.ListVal([]cty.Value{cty.True, cty.False}), 36 cty.True, 37 false, 38 }, 39 { 40 cty.ListVal([]cty.Value{cty.False, cty.True}), 41 cty.True, 42 false, 43 }, 44 { 45 cty.ListVal([]cty.Value{cty.True, cty.NullVal(cty.Bool)}), 46 cty.True, 47 false, 48 }, 49 { 50 cty.ListVal([]cty.Value{cty.UnknownVal(cty.Bool)}), 51 cty.UnknownVal(cty.Bool).RefineNotNull(), 52 false, 53 }, 54 { 55 cty.ListVal([]cty.Value{ 56 cty.UnknownVal(cty.Bool), 57 cty.UnknownVal(cty.Bool), 58 }), 59 cty.UnknownVal(cty.Bool).RefineNotNull(), 60 false, 61 }, 62 { 63 cty.UnknownVal(cty.List(cty.Bool)), 64 cty.UnknownVal(cty.Bool).RefineNotNull(), 65 false, 66 }, 67 { 68 cty.NullVal(cty.List(cty.Bool)), 69 cty.NilVal, 70 true, 71 }, 72 } 73 74 for _, tc := range tests { 75 t.Run(fmt.Sprintf("anytrue(%#v)", tc.Collection), func(t *testing.T) { 76 got, err := AnyTrue.Call([]cty.Value{tc.Collection}) 77 78 if tc.Err && err == nil { 79 t.Fatal("succeeded; want error") 80 } 81 if !tc.Err && err != nil { 82 t.Fatalf("unexpected error: %s", err) 83 } 84 if !got.RawEquals(tc.Want) { 85 t.Errorf("wrong result\ngot: %#v\nwant: %#v", got, tc.Want) 86 } 87 }) 88 } 89 }