50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package main
|
|
|
|
import "testing"
|
|
|
|
func TestCompletePersists(t *testing.T) {
|
|
store := NewStore()
|
|
task := store.Add("write report")
|
|
if err := store.Complete(task.ID); err != nil {
|
|
t.Fatalf("Complete(%d) returned error: %v", task.ID, err)
|
|
}
|
|
got, ok := store.Get(task.ID)
|
|
if !ok {
|
|
t.Fatalf("task %d disappeared from the store", task.ID)
|
|
}
|
|
if !got.Done {
|
|
t.Fatalf("task %d should be done after Complete, but Done is false", task.ID)
|
|
}
|
|
}
|
|
|
|
func TestCompleteUnknownIDReturnsError(t *testing.T) {
|
|
store := NewStore()
|
|
store.Add("write report")
|
|
if err := store.Complete(99); err == nil {
|
|
t.Fatal("Complete(99) should return an error for a missing id")
|
|
}
|
|
}
|
|
|
|
func TestTitleWidthCountsCharacters(t *testing.T) {
|
|
task := Task{Title: "café menu"}
|
|
if w := task.TitleWidth(); w != 9 {
|
|
t.Fatalf("TitleWidth(%q) = %d, want 9 (characters, not bytes)", task.Title, w)
|
|
}
|
|
}
|
|
|
|
func TestParseIDRejectsGarbage(t *testing.T) {
|
|
if _, err := ParseID("abc"); err == nil {
|
|
t.Fatal(`ParseID("abc") should return an error, got nil`)
|
|
}
|
|
}
|
|
|
|
func TestParseIDAcceptsNumbers(t *testing.T) {
|
|
id, err := ParseID("42")
|
|
if err != nil {
|
|
t.Fatalf(`ParseID("42") returned error: %v`, err)
|
|
}
|
|
if id != 42 {
|
|
t.Fatalf(`ParseID("42") = %d, want 42`, id)
|
|
}
|
|
}
|