walker_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package ftp
  2. import (
  3. "fmt"
  4. "testing"
  5. "time"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestFieldsReturnCorrectData(t *testing.T) {
  9. w := Walker{
  10. cur: item{
  11. path: "/root/",
  12. err: fmt.Errorf("This is an error"),
  13. entry: Entry{
  14. Name: "root",
  15. Size: 123,
  16. Time: time.Now(),
  17. Type: EntryTypeFolder,
  18. },
  19. },
  20. }
  21. assert.Equal(t, "This is an error", w.Err().Error())
  22. assert.Equal(t, "/root/", w.Path())
  23. assert.Equal(t, EntryTypeFolder, w.Stat().Type)
  24. }
  25. func TestSkipDirIsCorrectlySet(t *testing.T) {
  26. w := Walker{}
  27. w.SkipDir()
  28. assert.Equal(t, false, w.descend)
  29. }
  30. func TestNoDescendDoesNotAddToStack(t *testing.T) {
  31. w := new(Walker)
  32. w.cur = item{
  33. path: "/root/",
  34. err: nil,
  35. entry: Entry{
  36. Name: "root",
  37. Size: 123,
  38. Time: time.Now(),
  39. Type: EntryTypeFolder,
  40. },
  41. }
  42. w.stack = []item{
  43. item{
  44. path: "file",
  45. err: nil,
  46. entry: Entry{
  47. Name: "file",
  48. Size: 123,
  49. Time: time.Now(),
  50. Type: EntryTypeFile,
  51. },
  52. },
  53. }
  54. w.SkipDir()
  55. result := w.Step()
  56. assert.Equal(t, true, result, "Result should return true")
  57. assert.Equal(t, 1, len(w.stack))
  58. assert.Equal(t, true, w.descend)
  59. }
  60. func TestEmptyStackReturnsFalse(t *testing.T) {
  61. w := new(Walker)
  62. w.cur = item{
  63. path: "/root/",
  64. err: nil,
  65. entry: Entry{
  66. Name: "root",
  67. Size: 123,
  68. Time: time.Now(),
  69. Type: EntryTypeFolder,
  70. },
  71. }
  72. w.stack = []item{}
  73. w.SkipDir()
  74. result := w.Step()
  75. assert.Equal(t, false, result, "Result should return false")
  76. }
  77. func TestCurAndStackSetCorrectly(t *testing.T) {
  78. w := new(Walker)
  79. w.cur = item{
  80. path: "root/file1",
  81. err: nil,
  82. entry: Entry{
  83. Name: "file1",
  84. Size: 123,
  85. Time: time.Now(),
  86. Type: EntryTypeFile,
  87. },
  88. }
  89. w.stack = []item{
  90. item{
  91. path: "file",
  92. err: nil,
  93. entry: Entry{
  94. Name: "file",
  95. Size: 123,
  96. Time: time.Now(),
  97. Type: EntryTypeFile,
  98. },
  99. },
  100. item{
  101. path: "root/file1",
  102. err: nil,
  103. entry: Entry{
  104. Name: "file1",
  105. Size: 123,
  106. Time: time.Now(),
  107. Type: EntryTypeFile,
  108. },
  109. },
  110. }
  111. result := w.Step()
  112. result = w.Step()
  113. assert.Equal(t, true, result, "Result should return true")
  114. assert.Equal(t, 0, len(w.stack))
  115. assert.Equal(t, "file", w.cur.entry.Name)
  116. }
  117. func TestErrorsFromListAreHandledCorrectly(t *testing.T) {
  118. //Get error
  119. //Check w.cur.err
  120. //Check stack
  121. }
  122. func TestStackIsPopulatedCorrectly(t *testing.T) {
  123. //Check things are added to the stack correcty
  124. }