todo_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package todo_test
  2. import (
  3. "os"
  4. "testing"
  5. "pragprog.com/rggo/interacting/todo"
  6. )
  7. func TestAdd(t *testing.T) {
  8. l := todo.List{}
  9. taskName := "New Task"
  10. l.Add(taskName)
  11. if l[0].Task != taskName {
  12. t.Errorf("Task name is not matching. Expected: %q, Got: %q", taskName, l[0].Task)
  13. }
  14. }
  15. func TestComplete(t *testing.T) {
  16. l := todo.List{}
  17. taskName := "New Task"
  18. l.Add(taskName)
  19. if l[0].Task != taskName {
  20. t.Errorf("Task name is not matching. Expected: %q, Got: %q", taskName, l[0].Task)
  21. }
  22. if l[0].Done {
  23. t.Errorf("Task should not be completed")
  24. }
  25. l.Complete(1)
  26. if !l[0].Done {
  27. t.Errorf("Task should be completed")
  28. }
  29. }
  30. func TestDelete(t *testing.T) {
  31. l := todo.List{}
  32. tasks := []string{
  33. "Task 1",
  34. "Task 2",
  35. "Task 3",
  36. }
  37. for _, task := range tasks {
  38. l.Add(task)
  39. }
  40. if l[0].Task != tasks[0] {
  41. t.Errorf("Task name is not matching. Expected: %q, Got: %q", tasks[0], l[0].Task)
  42. }
  43. l.Delete(2)
  44. if len(l) != 2 {
  45. t.Errorf("Expected list length: 2, Got: %d", len(l))
  46. }
  47. if l[1].Task != tasks[2] {
  48. t.Errorf("Task name is not matching. Expected: %q, Got: %q", tasks[2], l[1].Task)
  49. }
  50. }
  51. func TestSaveGet(t *testing.T) {
  52. l1 := todo.List{}
  53. l2 := todo.List{}
  54. taskName := "New Task"
  55. l1.Add(taskName)
  56. if l1[0].Task != taskName {
  57. t.Errorf("Task name is not matching. Expected: %q, Got: %q", taskName, l1[0].Task)
  58. }
  59. tf, err := os.CreateTemp("", "")
  60. if err != nil {
  61. t.Fatalf("Error creating temp file: %v", err)
  62. }
  63. defer os.Remove(tf.Name())
  64. if err := l1.Save(tf.Name()); err != nil {
  65. t.Fatalf("Error saving todo list: %v", err)
  66. }
  67. if err := l2.Get(tf.Name()); err != nil {
  68. t.Fatalf("Error getting todo list: %v", err)
  69. }
  70. if l1[0].Task != l2[0].Task {
  71. t.Errorf("Task name is not matching. Expected: %q, Got: %q", l1[0].Task, l2[0].Task)
  72. }
  73. }