public void ReadByTrackGroupIdWorksAsExpectedTest() { const int StaticStride = 5115; TagInfo tagInfo = GetTagInfo(); TrackData firstTrack = new TrackData(tagInfo); TrackData secondTrack = new TrackData(tagInfo); var firstTrackReference = trackDao.InsertTrack(firstTrack); var secondTrackReference = trackDao.InsertTrack(secondTrack); var hashedFingerprintsForFirstTrack = fcb .BuildFingerprintCommand() .From(PathToMp3, 20, 0) .WithFingerprintConfig(config => { config.Stride = new IncrementalStaticStride(StaticStride); config.Clusters = new[] { "first-group-id" }; }).UsingServices(audioService) .Hash() .Result; InsertHashedFingerprintsForTrack(hashedFingerprintsForFirstTrack, firstTrackReference); var hashedFingerprintsForSecondTrack = fcb .BuildFingerprintCommand() .From(PathToMp3, 20, 0) .WithFingerprintConfig(config => { config.Stride = new IncrementalStaticStride(StaticStride); config.Clusters = new[] { "second-group-id" }; }).UsingServices(audioService) .Hash() .Result; InsertHashedFingerprintsForTrack(hashedFingerprintsForSecondTrack, secondTrackReference); const int ThresholdVotes = 25; foreach (var hashedFingerprint in hashedFingerprintsForFirstTrack) { var subFingerprintData = subFingerprintDao.ReadSubFingerprints( hashedFingerprint.HashBins, ThresholdVotes, new[] { "first-group-id" }).ToList(); Assert.IsTrue(subFingerprintData.Count == 1); Assert.AreEqual(firstTrackReference, subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao.ReadSubFingerprints( hashedFingerprint.HashBins, ThresholdVotes, new[] { "second-group-id" }).ToList(); Assert.IsTrue(subFingerprintData.Count == 1); Assert.AreEqual(secondTrackReference, subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao.ReadSubFingerprints(hashedFingerprint.HashBins, ThresholdVotes, Enumerable.Empty <string>()).ToList(); Assert.AreEqual(2, subFingerprintData.Count); } }
public void ReadByTrackGroupIdWorksAsExpectedTest() { TagInfo tagInfo = GetTagInfo(); TrackData firstTrack = new TrackData(tagInfo); TrackData secondTrack = new TrackData(tagInfo); var firstTrackReference = trackDao.InsertTrack(firstTrack); var secondTrackReference = trackDao.InsertTrack(secondTrack); var hashedFingerprintsForFirstTrack = fingerprintCommandBuilder .BuildFingerprintCommand() .From(GetAudioSamples()) .WithFingerprintConfig(config => { config.Clusters = new[] { "first-group-id" }; return(config); }) .UsingServices(audioService) .Hash() .Result; InsertHashedFingerprintsForTrack(hashedFingerprintsForFirstTrack, firstTrackReference); var hashedFingerprintsForSecondTrack = fingerprintCommandBuilder .BuildFingerprintCommand() .From(GetAudioSamples()) .WithFingerprintConfig(config => { config.Clusters = new[] { "second-group-id" }; return(config); }) .UsingServices(audioService) .Hash() .Result; InsertHashedFingerprintsForTrack(hashedFingerprintsForSecondTrack, secondTrackReference); const int ThresholdVotes = 25; foreach (var hashedFingerprint in hashedFingerprintsForFirstTrack) { var subFingerprintData = subFingerprintDao.ReadSubFingerprints( hashedFingerprint.HashBins, ThresholdVotes, new[] { "first-group-id" }).ToList(); Assert.AreEqual(1, subFingerprintData.Count); Assert.AreEqual(firstTrackReference, subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao.ReadSubFingerprints( hashedFingerprint.HashBins, ThresholdVotes, new[] { "second-group-id" }).ToList(); Assert.AreEqual(1, subFingerprintData.Count); Assert.AreEqual(secondTrackReference, subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao.ReadSubFingerprints(hashedFingerprint.HashBins, ThresholdVotes, Enumerable.Empty <string>()).ToList(); Assert.AreEqual(2, subFingerprintData.Count); } }
public async Task ReadByTrackGroupIdWorksAsExpectedTest() { var modelReferenceTracker = new UIntModelReferenceTracker(); var firstTrack = new TrackInfo("id-1", string.Empty, string.Empty, new Dictionary <string, string> { { "group-id", "first-group-id" } }, MediaType.Audio); var hashedFingerprintsForFirstTrack = await GetHashedFingerprints(); var firstTrackData = InsertTrackAndHashes(firstTrack, hashedFingerprintsForFirstTrack, modelReferenceTracker); var secondTrack = new TrackInfo("id-2", string.Empty, string.Empty, new Dictionary <string, string> { { "group-id", "second-group-id" } }, MediaType.Audio); var hashedFingerprintsForSecondTrack = await GetHashedFingerprints(); var secondTrackData = InsertTrackAndHashes(secondTrack, hashedFingerprintsForSecondTrack, modelReferenceTracker); const int thresholdVotes = 25; var queryConfigWithFirstGroupId = new DefaultQueryConfiguration { ThresholdVotes = thresholdVotes, MetaFieldsFilter = new Dictionary <string, string> { { "group-id", "first-group-id" } } }; var queryConfigWithSecondGroupId = new DefaultQueryConfiguration { ThresholdVotes = thresholdVotes, MetaFieldsFilter = new Dictionary <string, string> { { "group-id", "second-group-id" } } }; foreach (var hashedFingerprint in hashedFingerprintsForFirstTrack) { var subFingerprintData = subFingerprintDao.ReadSubFingerprints(new[] { hashedFingerprint.HashBins }, queryConfigWithFirstGroupId).ToList(); Assert.AreEqual(1, subFingerprintData.Count); Assert.AreEqual(firstTrackData.TrackReference, subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao.ReadSubFingerprints(new[] { hashedFingerprint.HashBins }, queryConfigWithSecondGroupId).ToList(); Assert.AreEqual(1, subFingerprintData.Count); Assert.AreEqual(secondTrackData.TrackReference, subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao .ReadSubFingerprints(new[] { hashedFingerprint.HashBins }, new DefaultQueryConfiguration { ThresholdVotes = thresholdVotes }) .ToList(); Assert.AreEqual(2, subFingerprintData.Count); } }
public virtual IList <SubFingerprintData> ReadSubFingerprints(long[] hashBins, QueryConfiguration config) { return(subFingerprintDao.ReadSubFingerprints(hashBins, config.ThresholdVotes, config.Clusters).ToList()); }
public void ReadByTrackGroupIdWorksAsExpectedTest() { var firstTrack = new TrackInfo("isrc1", "title", "artist", new Dictionary <string, string> { { "group-id", "first-group-id" } }); var secondTrack = new TrackInfo("isrc2", "title", "artist", new Dictionary <string, string> { { "group-id", "second-group-id" } }); var firstTrackData = trackDao.InsertTrack(firstTrack, 120d); var secondTrackData = trackDao.InsertTrack(secondTrack, 120d); var hashedFingerprintsForFirstTrack = fingerprintCommandBuilder .BuildFingerprintCommand() .From(GetAudioSamples()) .UsingServices(audioService) .Hash() .Result; //.OrderBy(e => e.StartsAt); InsertHashedFingerprintsForTrack(hashedFingerprintsForFirstTrack, firstTrackData.TrackReference); var hashedFingerprintsForSecondTrack = fingerprintCommandBuilder .BuildFingerprintCommand() .From(GetAudioSamples()) .UsingServices(audioService) .Hash() .Result; //.OrderBy(e => e.StartsAt); InsertHashedFingerprintsForTrack(hashedFingerprintsForSecondTrack, secondTrackData.TrackReference); const int thresholdVotes = 25; foreach (var hashedFingerprint in hashedFingerprintsForFirstTrack) { var subFingerprintData = subFingerprintDao.ReadSubFingerprints( new[] { hashedFingerprint.HashBins }, new DefaultQueryConfiguration { ThresholdVotes = thresholdVotes, MetaFieldsFilter = firstTrack.MetaFields }).ToList(); subFingerprintData.Count.Should().Be(1); firstTrackData.TrackReference.Should().BeEquivalentTo(subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao.ReadSubFingerprints( new[] { hashedFingerprint.HashBins }, new DefaultQueryConfiguration { ThresholdVotes = thresholdVotes, MetaFieldsFilter = secondTrack.MetaFields }).ToList(); subFingerprintData.Count.Should().Be(1); secondTrackData.TrackReference.Should().BeEquivalentTo(subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao.ReadSubFingerprints( new[] { hashedFingerprint.HashBins }, new DefaultQueryConfiguration { ThresholdVotes = thresholdVotes }).ToList(); subFingerprintData.Count.Should().Be(2); } }
public async Task ReadByTrackGroupIdWorksAsExpectedTest() { var firstTrack = new TrackInfo("id", "title", "artist", new Dictionary <string, string> { { "group-id", "first-group-id" } }); var secondTrack = new TrackInfo("id", "title", "artist", new Dictionary <string, string> { { "group-id", "second-group-id" } }); var firstTrackReference = trackDao.InsertTrack(firstTrack, 120).TrackReference; var secondTrackReference = trackDao.InsertTrack(secondTrack, 120).TrackReference; var hashedFingerprintsForFirstTrack = await FingerprintCommandBuilder.Instance .BuildFingerprintCommand() .From(GetAudioSamples()) .UsingServices(audioService) .Hash(); InsertHashedFingerprintsForTrack(hashedFingerprintsForFirstTrack, firstTrackReference); var hashedFingerprintsForSecondTrack = await FingerprintCommandBuilder.Instance .BuildFingerprintCommand() .From(GetAudioSamples()) .UsingServices(audioService) .Hash(); InsertHashedFingerprintsForTrack(hashedFingerprintsForSecondTrack, secondTrackReference); const int thresholdVotes = 25; foreach (var hashedFingerprint in hashedFingerprintsForFirstTrack) { var subFingerprintData = subFingerprintDao.ReadSubFingerprints( new[] { hashedFingerprint.HashBins }, new DefaultQueryConfiguration { ThresholdVotes = thresholdVotes, MetaFieldsFilter = new Dictionary <string, string> { { "group-id", "first-group-id" } } }).ToList(); Assert.AreEqual(1, subFingerprintData.Count); Assert.AreEqual(firstTrackReference, subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao.ReadSubFingerprints( new[] { hashedFingerprint.HashBins }, new DefaultQueryConfiguration { ThresholdVotes = thresholdVotes, MetaFieldsFilter = new Dictionary <string, string> { { "group-id", "second-group-id" } } }).ToList(); Assert.AreEqual(1, subFingerprintData.Count); Assert.AreEqual(secondTrackReference, subFingerprintData[0].TrackReference); subFingerprintData = subFingerprintDao .ReadSubFingerprints(new[] { hashedFingerprint.HashBins }, new DefaultQueryConfiguration { ThresholdVotes = thresholdVotes }) .ToList(); Assert.AreEqual(2, subFingerprintData.Count); } }