summaryrefslogtreecommitdiff
path: root/todotxt_test.go
diff options
context:
space:
mode:
authorAlexander NeonXP Kiryukhin <a.kiryukhin@mail.ru>2019-04-27 15:17:31 +0300
committerAlexander NeonXP Kiryukhin <a.kiryukhin@mail.ru>2019-04-27 15:17:31 +0300
commit4a9e1c444e1ed9cea43686acde89da80aee603f6 (patch)
treeae1f8c22f5f70a62e97802543f520b6d2cbabb98 /todotxt_test.go
InitialHEADmaster
Diffstat (limited to 'todotxt_test.go')
-rw-r--r--todotxt_test.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/todotxt_test.go b/todotxt_test.go
new file mode 100644
index 0000000..9090f7b
--- /dev/null
+++ b/todotxt_test.go
@@ -0,0 +1,86 @@
+package todotxt
+
+import (
+ "strings"
+ "testing"
+ "time"
+)
+
+func TestPriorityFromLetter(t *testing.T) {
+ tests := []struct {
+ letter string
+ expectedError bool
+ expectedVal int
+ }{
+ {"A", false, 0},
+ {"B", false, 1},
+ {"Z", false, 25},
+ {"a", true, 0},
+ {"AA", true, 0},
+ {"0", true, 0},
+ {"!", true, 0},
+ }
+ for i, test := range tests {
+ p, err := PriorityFromLetter(test.letter)
+ if test.expectedError && err == nil {
+ t.Errorf("expected error on test %d", i+1)
+ }
+ if !test.expectedError && err != nil {
+ t.Errorf("unexpected error on test %d: %v", i+1, err)
+ }
+ if p != Priority(test.expectedVal) {
+ t.Errorf("expected %d, got %d on test %d", test.expectedVal, p, i+1)
+ }
+ }
+}
+
+func TestPriorityToString(t *testing.T) {
+ a, _ := PriorityFromLetter("A")
+ z, _ := PriorityFromLetter("Z")
+ if a.String() != "A" {
+ t.Errorf("Expected A, got %s", a.String())
+ }
+ if z.String() != "Z" {
+ t.Errorf("Expected Z, got %s", z.String())
+ }
+}
+
+func TestItemToString(t *testing.T) {
+ cd, _ := time.Parse("2006-01-02", "2019-04-27")
+ tests := map[string]struct {
+ item Item
+ expected string
+ }{
+ "simple": {item: Item{Description: "simple"}, expected: "simple"},
+ "complete": {item: Item{Complete: true, Description: "complete"}, expected: "x complete"},
+ "completeWithDate": {item: Item{Complete: true, CreationDate: &cd, Description: "complete"}, expected: "x 2019-04-27 complete"},
+ "completeWithTags": {item: Item{Complete: true, Description: "complete", Tags: []Tag{{Key: TagProject, Value: "proj"}, {Key: TagContext, Value: "test"}, {Key: "custom", Value: "tag"}}}, expected: "x complete +proj @test custom:tag"},
+ }
+ for test, v := range tests {
+ t.Run(test, func(t *testing.T) {
+ if v.item.String() != v.expected {
+ t.Errorf("Expected %s got %s", v.expected, v.item.String())
+ }
+ })
+ }
+}
+
+func TestParse(t *testing.T) {
+ input := `(A) Call Mom @Phone +Family
+(A) Schedule annual checkup +Health
+(B) Outline chapter 5 +Novel @Computer
+(C) Add cover sheets @Office +TPSReports
+2019-04-27 Plan backyard herb garden @Home
+2019-05-27 2019-04-27 Pick up milk @GroceryStore
+Research self-publishing services +Novel @Computer
+x Download Todo.txt mobile app @Phone custom:tag`
+ items, err := Parse(input)
+ if err != nil {
+ t.Error(err)
+ }
+ for ln, v := range items {
+ if strings.Split(input, "\n")[ln] != v.String() {
+ t.Logf("line %d expected %s got %s", ln, strings.Split(input, "\n")[ln], v.String())
+ }
+ }
+}