public void test_identical_albums() { var tracks = GivenTracks(3); var release = GivenAlbumRelease("album", tracks); var localTracks = GivenLocalTracks(tracks, release); var mapping = GivenMapping(localTracks, tracks); DistanceCalculator.AlbumReleaseDistance(localTracks, release, mapping).NormalizedDistance().Should().Be(0.0); }
public void test_two_medium_release() { var tracks = GivenTracks(3); tracks[2].AbsoluteTrackNumber = 1; tracks[2].MediumNumber = 2; var release = GivenAlbumRelease("album", tracks); var localTracks = GivenLocalTracks(tracks, release); var mapping = GivenMapping(localTracks, tracks); DistanceCalculator.AlbumReleaseDistance(localTracks, release, mapping).NormalizedDistance().Should().Be(0.0); }
public void test_tracks_out_of_order() { var tracks = GivenTracks(3); var release = GivenAlbumRelease("album", tracks); var localTracks = GivenLocalTracks(tracks, release); localTracks = new[] { 1, 3, 2 }.Select(x => localTracks[x - 1]).ToList(); var mapping = GivenMapping(localTracks, tracks); var dist = DistanceCalculator.AlbumReleaseDistance(localTracks, release, mapping); dist.NormalizedDistance().Should().NotBe(0.0); dist.NormalizedDistance().Should().BeLessThan(0.2); }
public void test_global_artists_differ() { var tracks = GivenTracks(3); var release = GivenAlbumRelease("album", tracks); var localTracks = GivenLocalTracks(tracks, release); var mapping = GivenMapping(localTracks, tracks); release.Album.Value.ArtistMetadata = Builder <ArtistMetadata> .CreateNew() .With(x => x.Name = "different artist") .Build(); DistanceCalculator.AlbumReleaseDistance(localTracks, release, mapping).NormalizedDistance().Should().NotBe(0.0); }
public void test_incomplete_album() { var tracks = GivenTracks(3); var release = GivenAlbumRelease("album", tracks); var localTracks = GivenLocalTracks(tracks, release); localTracks.RemoveAt(1); var mapping = GivenMapping(localTracks, tracks); var dist = DistanceCalculator.AlbumReleaseDistance(localTracks, release, mapping); dist.NormalizedDistance().Should().NotBe(0.0); dist.NormalizedDistance().Should().BeLessThan(0.2); }
public void test_comp_track_artists_match() { var tracks = GivenTracks(3); var release = GivenAlbumRelease("album", tracks); var localTracks = GivenLocalTracks(tracks, release); var mapping = GivenMapping(localTracks, tracks); release.Album.Value.ArtistMetadata = Builder <ArtistMetadata> .CreateNew() .With(x => x.Name = "Various Artists") .With(x => x.ForeignArtistId = "89ad4ac3-39f7-470e-963a-56509c546377") .Build(); DistanceCalculator.AlbumReleaseDistance(localTracks, release, mapping).NormalizedDistance().Should().Be(0.0); }
public void test_absolute_track_numbering() { var tracks = GivenTracks(3); tracks[2].AbsoluteTrackNumber = 1; tracks[2].MediumNumber = 2; var release = GivenAlbumRelease("album", tracks); var localTracks = GivenLocalTracks(tracks, release); localTracks[2].FileTrackInfo.DiscNumber = 2; localTracks[2].FileTrackInfo.TrackNumbers = new[] { 3 }; var mapping = GivenMapping(localTracks, tracks); DistanceCalculator.AlbumReleaseDistance(localTracks, release, mapping).NormalizedDistance().Should().Be(0.0); }
public void test_null_release_year(DateTime?albumDate) { var tracks = GivenTracks(3); var release = GivenAlbumRelease("album", tracks); var localTracks = GivenLocalTracks(tracks, release); var mapping = GivenMapping(localTracks, tracks); release.Album.Value.ReleaseDate = albumDate; release.ReleaseDate = null; var result = DistanceCalculator.AlbumReleaseDistance(localTracks, release, mapping).NormalizedDistance(); if (!albumDate.HasValue || (localTracks[0].FileTrackInfo.Year == (albumDate?.Year ?? 0))) { result.Should().Be(0.0); } else { result.Should().NotBe(0.0); } }