| package terraform |
| |
| import ( |
| "reflect" |
| "testing" |
| |
| "github.com/davecgh/go-spew/spew" |
| "github.com/hashicorp/hcl/v2" |
| "github.com/hashicorp/hcl/v2/hcltest" |
| "github.com/hashicorp/terraform/internal/lang/marks" |
| "github.com/zclconf/go-cty/cty" |
| ) |
| |
| func TestEvaluateCountExpression(t *testing.T) { |
| tests := map[string]struct { |
| Expr hcl.Expression |
| Count int |
| }{ |
| "zero": { |
| hcltest.MockExprLiteral(cty.NumberIntVal(0)), |
| 0, |
| }, |
| "expression with marked value": { |
| hcltest.MockExprLiteral(cty.NumberIntVal(8).Mark(marks.Sensitive)), |
| 8, |
| }, |
| } |
| for name, test := range tests { |
| t.Run(name, func(t *testing.T) { |
| ctx := &MockEvalContext{} |
| ctx.installSimpleEval() |
| countVal, diags := evaluateCountExpression(test.Expr, ctx) |
| |
| if len(diags) != 0 { |
| t.Errorf("unexpected diagnostics %s", spew.Sdump(diags)) |
| } |
| |
| if !reflect.DeepEqual(countVal, test.Count) { |
| t.Errorf( |
| "wrong map value\ngot: %swant: %s", |
| spew.Sdump(countVal), spew.Sdump(test.Count), |
| ) |
| } |
| }) |
| } |
| } |