package data import ( "testing" ) func TestSongDeduplicate(t *testing.T) { song := Song{ Name: "song_a", Album: Album{ Name: "album_a", Artists: []Artist{ {Name: "artist_a"}, {Name: "artist_a"}, {Name: "artist_b"}, }, }, Artists: []Artist{ {Name: "artist a"}, {Name: "artist a"}, {Name: "artist_b"}, }, } compiled := song.Compile().(Song) if len(compiled.Artists) != 2 { t.Errorf(`the two artists with the same name have to be merged, %d`, len(compiled.Artists)) } if len(compiled.Album.Artists) != 2 { t.Errorf(`the two artists with the same names in the album have to be merged, %d`, len(compiled.Album.Artists)) } } func TestSongUnify(t *testing.T) { song := Song{ Name: " foo Bar BAZ", Album: Album{ Name: " foo", }, } compiled := song.Compile().(Song) if compiled.UnifiedName != "foo bar baz" { t.Errorf(`the song name doesn't get compiled properly`) } if compiled.Album.UnifiedName != "foo" { t.Errorf(`the album name in the song isn't unified`) } } func TestAlbumDeduplicate(t *testing.T) { album := Album{ Name: "album_a", Songs: []Song{ {Name: "song a"}, {Name: "song a"}, {Name: "song_b"}, {Name: "song_c"}, {Name: "song_d"}, {Name: "song a"}, }, Artists: []Artist{ {Name: "artist_a"}, { Name: "artist_a", Albums: []Album{ {Name: "album_a"}, {Name: "album_b"}, {Name: "album_a"}, }, }, }, } compiled := album.Compile().(Album) if len(compiled.Songs) != 4 { t.Errorf(`didn't properly merge songs`) } if len(compiled.Artists) != 1 { t.Errorf(`didn't properly merge artists`) } if len(compiled.Artists[0].Albums) != 2 { t.Errorf(`didn't properly merge or deduplicate albums`) } }