read_files_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. done := make(chan bool)
  22. go func() {
  23. files <- testFile
  24. done <- true
  25. }()
  26. outputChan, doneChan := ReadMultipleFiles(files, done)
  27. var results []*Song
  28. outputDone := false
  29. for !outputDone {
  30. select {
  31. case result := <- outputChan:
  32. results = append(results, result)
  33. case <- doneChan:
  34. outputDone = true
  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. }