aboutsummaryrefslogtreecommitdiffhomepage
path: root/reader/date/parser_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'reader/date/parser_test.go')
-rw-r--r--reader/date/parser_test.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/reader/date/parser_test.go b/reader/date/parser_test.go
new file mode 100644
index 0000000..c8bb0fb
--- /dev/null
+++ b/reader/date/parser_test.go
@@ -0,0 +1,56 @@
+// Copyright 2017 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package date
+
+import "testing"
+
+func TestParseEmptyDate(t *testing.T) {
+ if _, err := Parse(" "); err == nil {
+ t.Fatalf(`Empty dates should return an error`)
+ }
+}
+
+func TestParseInvalidDate(t *testing.T) {
+ if _, err := Parse("invalid"); err == nil {
+ t.Fatalf(`Invalid dates should return an error`)
+ }
+}
+
+func TestParseAtomDate(t *testing.T) {
+ date, err := Parse("2017-12-22T22:09:49+00:00")
+ if err != nil {
+ t.Fatalf(`Atom dates should be parsed correctly`)
+ }
+
+ if date.Unix() != 1513980589 {
+ t.Fatal(`Invalid date parsed`)
+ }
+}
+
+func TestParseRSSDate(t *testing.T) {
+ date, err := Parse("Tue, 03 Jun 2003 09:39:21 GMT")
+ if err != nil {
+ t.Fatalf(`RSS dates should be parsed correctly`)
+ }
+
+ if date.Unix() != 1054633161 {
+ t.Fatal(`Invalid date parsed`)
+ }
+}
+
+func TestParseWeirdDateFormat(t *testing.T) {
+ dates := []string{
+ "Sun, 17 Dec 2017 1:55 PM EST",
+ "9 Dec 2016 12:00 GMT",
+ "Friday, December 22, 2017 - 3:09pm",
+ "Friday, December 8, 2017 - 3:07pm",
+ }
+
+ for _, date := range dates {
+ if _, err := Parse(date); err != nil {
+ t.Fatalf(`Unable to parse date: "%s"`, date)
+ }
+ }
+}