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) } }