diff --git a/pttodo/todo_test.go b/pttodo/todo_test.go new file mode 100644 index 0000000..6f579ba --- /dev/null +++ b/pttodo/todo_test.go @@ -0,0 +1,43 @@ +package pttodo + +import ( + "encoding/json" + "testing" +) + +func TestJSONTodo(t *testing.T) { + todo := func() Todo { + return Todo{ + Todo: "todo", + Detail: "detail", + TS: TS(1), + Schedule: Schedule("schedule"), + } + } + + t.Run("marshal+unmarshal nonzero", func(t *testing.T) { + todo := todo() + todo.TS = 1 + var todo2 Todo + if b, err := json.Marshal(todo); err != nil { + t.Fatal(err) + } else if err := json.Unmarshal(b, &todo2); err != nil { + t.Fatal(err) + } else if todo != todo2 { + t.Fatal(todo2) + } + }) + + t.Run("zero ts should marshal to nonzero", func(t *testing.T) { + todo := todo() + todo.TS = 0 + var todo2 Todo + if b, err := json.Marshal(todo); err != nil { + t.Fatal(err) + } else if err := json.Unmarshal(b, &todo2); err != nil { + t.Fatal(err) + } else if todo.TS == todo2.TS { + t.Fatal(todo2) + } + }) +}