-
Notifications
You must be signed in to change notification settings - Fork 0
/
audiocc_test.go
125 lines (104 loc) · 3.12 KB
/
audiocc_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package main
import (
"os"
"testing"
"encoding/json"
"github.com/JamTools/goff/ffmpeg"
"github.com/JamTools/goff/ffprobe"
"github.com/JamTools/goff/fsutil"
)
func TestSkipArtistOnCollection(t *testing.T) {
tests := []struct {
dir string
col, skip bool
}{
{ dir: "Jerry Garcia Band", col: true, skip: false },
{ dir: "Grateful Dead - Unorganized/Anything", col: true, skip: true },
{ dir: "Grateful Dead - Unorganized", col: false, skip: false },
}
for i := range tests {
flags.Collection = tests[i].col
defer func() { flags.Collection = false }()
r := skipArtistOnCollection(tests[i].dir)
if r != tests[i].skip {
t.Errorf("Expected %v, got %v", tests[i].skip, r)
}
}
}
func TestSkipFast(t *testing.T) {
tests := []struct {
dir string
skip bool
}{
{ dir: "Random Dir", skip: false },
{ dir: "Phish/2003/2003.07.09 Shoreline Amphitheatre, Mountain View, CA", skip: true },
}
flags.Fast = true
defer func() { flags.Fast = false }()
for i := range tests {
r := skipFast(tests[i].dir)
if r != tests[i].skip {
t.Errorf("Expected %v, got %v", tests[i].skip, r)
}
}
}
func TestProcessDirDNE(t *testing.T) {
a := &audiocc{ DirEntry: "audiocc-dir-def-dne" }
err := a.process()
if err == nil {
t.Errorf("Expected error, got none.")
}
}
type TestProcessFiles struct {
path string
data *ffprobe.Tags
}
func createTestProcessFiles(t *testing.T, files []*TestProcessFiles) (*audiocc, []int) {
a := &audiocc{ Ffmpeg: &ffmpeg.MockFfmpeg{}, Ffprobe: &ffprobe.MockFfprobe{},
Files: []string{}, Workers: 1 }
indexes := []int{}
createFiles := []*fsutil.TestFile{}
for x := range files {
// convert probe data tags to JSON
b, _ := json.Marshal(files[x].data)
indexes = append(indexes, x)
a.Files = append(a.Files, files[x].path)
createFiles = append(createFiles, &fsutil.TestFile{files[x].path, string(b)})
}
a.DirEntry = fsutil.CreateTestFiles(t, createFiles)
return a, indexes
}
// also tests processArtwork(), processThreaded(), processFile(), processMp3()
func TestProcessMain(t *testing.T) {
a, _ := createTestProcessFiles(t, []*TestProcessFiles{
{ "Phish/2003/2003.07.17 Bonner Springs, KS/1-01 Chalk Dust Torture.flac",
&ffprobe.Tags{},
},{
"dir2/file2.mp3",
&ffprobe.Tags{
Album: "2003.07.18 Alpine Valley, East Troy, WI",
Track: "1", Title: "Axilla I",
},
},
})
defer os.RemoveAll(a.DirEntry)
flags.Write = true
defer func() { flags.Write = false }()
err := a.process()
// ensure no errors in process
if err != nil {
t.Errorf("Expected no error, got: %v", err.Error())
}
// compare relative folder path & file name with expected result
fileResults := []string{
"2003.07.17 Bonner Springs, KS/1-1 Chalk Dust Torture.mp3",
"2003.07.18 Alpine Valley, East Troy, WI/1 Axilla I.mp3",
}
files := fsutil.FilesAudio(a.DirEntry)
for x := range files {
if files[x] != fileResults[x] {
t.Errorf("Expected %v, got %v", fileResults[x], files[x])
}
}
// TODO: actually read & compare json data encoded within file
}