read_files_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package read
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. const testFile = "testdata/file_example_OOG_1MG.ogg"
  7. const testTitle = "Impact Moderato"
  8. const testArtist = "Kevin MacLeod"
  9. const testAlbum = "YouTube Audio Library"
  10. const testLengthSeconds = 74
  11. func TestReadFile(t *testing.T) {
  12. result, err := ReadFile(testFile)
  13. assert.Nil(t, err)
  14. assert.Equal(t, result.title, testTitle, "title must be correct")
  15. assert.Equal(t, result.artist, testArtist, "artist must be correct")
  16. assert.Equal(t, result.album, testAlbum, "album must be correct")
  17. assert.Equal(t, result.length, testLengthSeconds, "length must be correct")
  18. }
  19. func TestReadMultipleFiles(t *testing.T) {
  20. files := make(chan string, 1)
  21. go func() {
  22. files <- testFile
  23. close(files)
  24. }()
  25. outputChan := ReadMultipleFiles(files)
  26. var results []*Song
  27. outputDone := false
  28. for !outputDone {
  29. select {
  30. case result, more := <- outputChan:
  31. if more {
  32. results = append(results, result)
  33. }
  34. outputDone = !more
  35. }
  36. }
  37. assert.Len(t, results, 1)
  38. assert.Equal(t, *results[0], Song{
  39. title: testTitle,
  40. artist: testArtist,
  41. album: testAlbum,
  42. length: testLengthSeconds,
  43. })
  44. }
  45. func TestScanDirectory(t *testing.T) {
  46. files := ScanDirectory(".")
  47. var results []string
  48. done := false
  49. for !done {
  50. select {
  51. case result, more := <- files:
  52. if more {
  53. results = append(results, result)
  54. }
  55. done = !more
  56. }
  57. }
  58. assert.Equal(t, results, []string{testFile})
  59. }