78 lines
1.7 KiB
Go
78 lines
1.7 KiB
Go
package fa
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestParseFADate(t *testing.T) {
|
|
must := func(layout, s string) time.Time {
|
|
t.Helper()
|
|
v, err := time.ParseInLocation(layout, s, time.UTC)
|
|
if err != nil {
|
|
t.Fatalf("setup: parse %q: %v", s, err)
|
|
}
|
|
return v
|
|
}
|
|
|
|
cases := []struct {
|
|
name string
|
|
in string
|
|
want time.Time
|
|
}{
|
|
{
|
|
name: "standard popup_date",
|
|
in: "Mar 17, 2026 04:21 PM",
|
|
want: must("Jan 2, 2006 03:04 PM", "Mar 17, 2026 04:21 PM"),
|
|
},
|
|
{
|
|
name: "ordinal suffix",
|
|
in: "Mar 17th, 2026 04:21 PM",
|
|
want: must("Jan 2, 2006 03:04 PM", "Mar 17, 2026 04:21 PM"),
|
|
},
|
|
{
|
|
name: "no padding",
|
|
in: "Mar 7, 2026 4:21 PM",
|
|
want: must("Jan 2, 2006 3:04 PM", "Mar 7, 2026 4:21 PM"),
|
|
},
|
|
{
|
|
name: "rfc3339",
|
|
in: "2026-03-17T16:21:00Z",
|
|
want: must(time.RFC3339, "2026-03-17T16:21:00Z"),
|
|
},
|
|
}
|
|
for _, tc := range cases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
got, err := ParseFADate(tc.in)
|
|
if err != nil {
|
|
t.Fatalf("ParseFADate(%q) error = %v", tc.in, err)
|
|
}
|
|
if !got.Equal(tc.want) {
|
|
t.Errorf("ParseFADate(%q) = %s; want %s", tc.in, got, tc.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestParseFADate_Empty(t *testing.T) {
|
|
if _, err := ParseFADate(""); err == nil {
|
|
t.Fatal("expected error for empty string")
|
|
}
|
|
}
|
|
|
|
func TestStripOrdinals(t *testing.T) {
|
|
cases := map[string]string{
|
|
"Mar 1st, 2026": "Mar 1, 2026",
|
|
"Mar 2nd, 2026": "Mar 2, 2026",
|
|
"Mar 3rd, 2026": "Mar 3, 2026",
|
|
"Mar 4th, 2026": "Mar 4, 2026",
|
|
"already clean": "already clean",
|
|
"Mar 1st 2nd": "Mar 1 2",
|
|
}
|
|
for in, want := range cases {
|
|
if got := stripOrdinals(in); got != want {
|
|
t.Errorf("stripOrdinals(%q) = %q; want %q", in, got, want)
|
|
}
|
|
}
|
|
}
|