zenity/internal/strftime/strftime_test.go
Nuno Cruces 3d0e153dd0 Tests.
2022-03-31 02:11:14 +01:00

94 lines
3.3 KiB
Go

package strftime
import (
"net/http"
"testing"
"time"
)
var reference = time.Date(2009, 8, 7, 6, 5, 4, 300000000, time.UTC)
var timeTests = []struct {
format string
layout string
uts35 string
time string
}{
// Date and time formats
{"%c", time.ANSIC, "E MMM d HH:mm:ss yyyy", "Fri Aug 7 06:05:04 2009"},
{"%+", time.UnixDate, "E MMM d HH:mm:ss zzz yyyy", "Fri Aug 7 06:05:04 UTC 2009"},
{"%FT%TZ", time.RFC3339[:20], "yyyy-MM-dd'T'HH:mm:ss'Z'", "2009-08-07T06:05:04Z"},
{"%a %b %e %H:%M:%S %Y", time.ANSIC, "", "Fri Aug 7 06:05:04 2009"},
{"%a %b %e %H:%M:%S %Z %Y", time.UnixDate, "", "Fri Aug 7 06:05:04 UTC 2009"},
{"%a %b %d %H:%M:%S %z %Y", time.RubyDate, "E MMM dd HH:mm:ss Z yyyy", "Fri Aug 07 06:05:04 +0000 2009"},
{"%a, %d %b %Y %H:%M:%S %Z", time.RFC1123, "E, dd MMM yyyy HH:mm:ss zzz", "Fri, 07 Aug 2009 06:05:04 UTC"},
{"%a, %d %b %Y %H:%M:%S GMT", http.TimeFormat, "E, dd MMM yyyy HH:mm:ss 'GMT'", "Fri, 07 Aug 2009 06:05:04 GMT"},
{"%Y-%m-%dT%H:%M:%SZ", time.RFC3339[:20], "yyyy-MM-dd'T'HH:mm:ss'Z'", "2009-08-07T06:05:04Z"},
// Date formats
{"%F", "2006-01-02", "yyyy-MM-dd", "2009-08-07"},
{"%D", "01/02/06", "MM/dd/yy", "08/07/09"},
{"%x", "01/02/06", "MM/dd/yy", "08/07/09"},
{"%Y-%m-%d", "2006-01-02", "yyyy-MM-dd", "2009-08-07"},
{"%m/%d/%y", "01/02/06", "MM/dd/yy", "08/07/09"},
// Time formats
{"%R", "15:04", "HH:mm", "06:05"},
{"%T", "15:04:05", "HH:mm:ss", "06:05:04"},
{"%X", "15:04:05", "HH:mm:ss", "06:05:04"},
{"%r", "03:04:05 PM", "hh:mm:ss a", "06:05:04 AM"},
{"%H:%M", "15:04", "HH:mm", "06:05"},
{"%H:%M:%S", "15:04:05", "HH:mm:ss", "06:05:04"},
{"%I:%M:%S %p", "03:04:05 PM", "hh:mm:ss a", "06:05:04 AM"},
// Misc
{"%g", "", "YY", "09"},
{"%V/%G", "", "ww/YYYY", "32/2009"},
{"%Cth Century Fox", "", "", "20th Century Fox"},
{"%-I o'clock", "3 o'clock", "h 'o''clock'", "6 o'clock"},
{"%-A, the %uth day of the week", "", "", "Friday, the 5th day of the week"},
{"%Nns since %T", "", "SSSSSSSSS'ns since 'HH:mm:ss", "300000000ns since 06:05:04"},
{"%-S.%Ls since %R", "5.000s since 15:04", "s.SSS's since 'HH:mm", "4.300s since 06:05"},
// Parsing
{"", "", "", ""},
{"%", "%", "%", "%"},
{"%-", "-", "-", "-"},
{"%n", "\n", "\n", "\n"},
{"%t", "\t", "\t", "\t"},
{"%q", "", "", ""},
{"%-q", "", "", ""},
{"'", "'", "''", "'"},
{"100%", "", "100%", "100%"},
{"Monday", "", "'Monday'", "Monday"},
{"January", "", "'January'", "January"},
{"MST", "", "'MST'", "MST"},
{"AM", "AM", "'AM'", "AM"},
{"am", "am", "'am'", "am"},
{"PM", "", "'PM'", "PM"},
{"pm", "", "'pm'", "pm"},
}
func TestFormat(t *testing.T) {
for _, test := range timeTests {
if got := Format(test.format, reference); got != test.time {
t.Errorf("Format(%q) = %q, want %q", test.format, got, test.time)
}
}
}
func TestLayout(t *testing.T) {
for _, test := range timeTests {
if got, err := Layout(test.format); err != nil && test.layout != "" {
t.Errorf("Layout(%q) = %v", test.format, err)
} else if got != test.layout {
t.Errorf("Layout(%q) = %q, want %q", test.format, got, test.layout)
}
}
}
func TestUTS35(t *testing.T) {
for _, test := range timeTests {
if got, err := UTS35(test.format); err != nil && test.uts35 != "" {
t.Errorf("UTS35(%q) = %v", test.format, err)
} else if got != test.uts35 {
t.Errorf("UTS35(%q) = %q, want %q", test.format, got, test.uts35)
}
}
}