96 lines
2.6 KiB
Go
96 lines
2.6 KiB
Go
package imap
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
var expectedDateTime = time.Date(2009, time.November, 2, 23, 0, 0, 0, time.FixedZone("", -6*60*60))
|
|
var expectedDate = time.Date(2009, time.November, 2, 0, 0, 0, 0, time.FixedZone("", 0))
|
|
|
|
func TestParseMessageDateTime(t *testing.T) {
|
|
tests := []struct {
|
|
in string
|
|
out time.Time
|
|
ok bool
|
|
}{
|
|
// some permutations
|
|
{"2 Nov 2009 23:00 -0600", expectedDateTime, true},
|
|
{"Tue, 2 Nov 2009 23:00:00 -0600", expectedDateTime, true},
|
|
{"Tue, 2 Nov 2009 23:00:00 -0600 (MST)", expectedDateTime, true},
|
|
|
|
// whitespace
|
|
{" 2 Nov 2009 23:00 -0600", expectedDateTime, true},
|
|
{"Tue, 2 Nov 2009 23:00:00 -0600", expectedDateTime, true},
|
|
{"Tue, 2 Nov 2009 23:00:00 -0600 (MST)", expectedDateTime, true},
|
|
|
|
// invalid
|
|
{"abc10 Nov 2009 23:00 -0600123", expectedDateTime, false},
|
|
{"10.Nov.2009 11:00:00 -9900", expectedDateTime, false},
|
|
}
|
|
for _, test := range tests {
|
|
out, err := parseMessageDateTime(test.in)
|
|
if !test.ok {
|
|
if err == nil {
|
|
t.Errorf("ParseMessageDateTime(%q) expected error; got %q", test.in, out)
|
|
}
|
|
} else if err != nil {
|
|
t.Errorf("ParseMessageDateTime(%q) expected %q; got %v", test.in, test.out, err)
|
|
} else if !out.Equal(test.out) {
|
|
t.Errorf("ParseMessageDateTime(%q) expected %q; got %q", test.in, test.out, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseDateTime(t *testing.T) {
|
|
tests := []struct {
|
|
in string
|
|
out time.Time
|
|
ok bool
|
|
}{
|
|
{"2-Nov-2009 23:00:00 -0600", expectedDateTime, true},
|
|
|
|
// whitespace
|
|
{" 2-Nov-2009 23:00:00 -0600", expectedDateTime, true},
|
|
|
|
// invalid or incorrect
|
|
{"10-Nov-2009", time.Time{}, false},
|
|
{"abc10-Nov-2009 23:00:00 -0600123", time.Time{}, false},
|
|
}
|
|
for _, test := range tests {
|
|
out, err := time.Parse(DateTimeLayout, test.in)
|
|
if !test.ok {
|
|
if err == nil {
|
|
t.Errorf("ParseDateTime(%q) expected error; got %q", test.in, out)
|
|
}
|
|
} else if err != nil {
|
|
t.Errorf("ParseDateTime(%q) expected %q; got %v", test.in, test.out, err)
|
|
} else if !out.Equal(test.out) {
|
|
t.Errorf("ParseDateTime(%q) expected %q; got %q", test.in, test.out, out)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseDate(t *testing.T) {
|
|
tests := []struct {
|
|
in string
|
|
out time.Time
|
|
ok bool
|
|
}{
|
|
{"2-Nov-2009", expectedDate, true},
|
|
{" 2-Nov-2009", expectedDate, true},
|
|
}
|
|
for _, test := range tests {
|
|
out, err := time.Parse(DateLayout, test.in)
|
|
if !test.ok {
|
|
if err == nil {
|
|
t.Errorf("ParseDate(%q) expected error; got %q", test.in, out)
|
|
}
|
|
} else if err != nil {
|
|
t.Errorf("ParseDate(%q) expected %q; got %v", test.in, test.out, err)
|
|
} else if !out.Equal(test.out) {
|
|
t.Errorf("ParseDate(%q) expected %q; got %q", test.in, test.out, out)
|
|
}
|
|
}
|
|
}
|