package todo_test import ( "os" "testing" "pragprog.com/rggo/interacting/todo" ) func TestAdd(t *testing.T) { l := todo.List{} taskName := "New Task" l.Add(taskName) if l[0].Task != taskName { t.Errorf("Task name is not matching. Expected: %q, Got: %q", taskName, l[0].Task) } } func TestComplete(t *testing.T) { l := todo.List{} taskName := "New Task" l.Add(taskName) if l[0].Task != taskName { t.Errorf("Task name is not matching. Expected: %q, Got: %q", taskName, l[0].Task) } if l[0].Done { t.Errorf("Task should not be completed") } l.Complete(1) if !l[0].Done { t.Errorf("Task should be completed") } } func TestDelete(t *testing.T) { l := todo.List{} tasks := []string{ "Task 1", "Task 2", "Task 3", } for _, task := range tasks { l.Add(task) } if l[0].Task != tasks[0] { t.Errorf("Task name is not matching. Expected: %q, Got: %q", tasks[0], l[0].Task) } l.Delete(2) if len(l) != 2 { t.Errorf("Expected list length: 2, Got: %d", len(l)) } if l[1].Task != tasks[2] { t.Errorf("Task name is not matching. Expected: %q, Got: %q", tasks[2], l[1].Task) } } func TestSaveGet(t *testing.T) { l1 := todo.List{} l2 := todo.List{} taskName := "New Task" l1.Add(taskName) if l1[0].Task != taskName { t.Errorf("Task name is not matching. Expected: %q, Got: %q", taskName, l1[0].Task) } tf, err := os.CreateTemp("", "") if err != nil { t.Fatalf("Error creating temp file: %v", err) } defer os.Remove(tf.Name()) if err := l1.Save(tf.Name()); err != nil { t.Fatalf("Error saving todo list: %v", err) } if err := l2.Get(tf.Name()); err != nil { t.Fatalf("Error getting todo list: %v", err) } if l1[0].Task != l2[0].Task { t.Errorf("Task name is not matching. Expected: %q, Got: %q", l1[0].Task, l2[0].Task) } }