package function import ( "fmt" "regexp" "testing" "time" "github.com/zclconf/go-cty/cty" ) // HCL template usage example: // // locals { // emptyformat = legacy_isotime() // golangformat = legacy_isotime("01-02-2006") // } func TestLegacyIsotime_empty(t *testing.T) { got, err := LegacyIsotimeFunc.Call([]cty.Value{}) if err != nil { t.Fatalf("unexpected error: %s", err) } _, err = time.Parse(time.RFC3339, got.AsString()) if err != nil { t.Fatalf("Didn't get an RFC3339 string from empty case: %s", err) } } func TestLegacyIsotime_inputs(t *testing.T) { tests := []struct { Value cty.Value Want string }{ { cty.StringVal("01-02-2006"), `^\d{2}-\d{2}-\d{4}$`, }, { cty.StringVal("Mon Jan 02, 2006"), `^(Mon|Tue|Wed|Thu|Fri|Sat|Sun){1} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec){1} \d{2}, \d{4}$`, }, } for _, test := range tests { t.Run(fmt.Sprintf("legacy_isotime(%#v)", test.Value), func(t *testing.T) { got, err := LegacyIsotime(test.Value) if err != nil { t.Fatalf("unexpected error: %s", err) } re, err := regexp.Compile(test.Want) if err != nil { t.Fatalf("Bad regular expression test string: %#v", err) } if !re.MatchString(got.AsString()) { t.Errorf("wrong result\ngot: %#v\nwant: %#v", got, test.Want) } }) } }