コード例 #1
0
        public async Task DeleteHashBinsAndSubFingerprintsOnTrackDelete()
        {
            var tagInfo  = GetTagInfo();
            var track    = new TrackInfo(tagInfo.ISRC, tagInfo.Title, tagInfo.Artist);
            var hashData = await FingerprintCommandBuilder.Instance
                           .BuildFingerprintCommand()
                           .From(GetAudioSamples())
                           .WithFingerprintConfig(config =>
            {
                config.Stride = new StaticStride(0);
                return(config);
            })
                           .UsingServices(audioService)
                           .Hash();

            var modelReferenceTracker = new UIntModelReferenceTracker();

            var(trackData, subFingerprintData) = modelReferenceTracker.AssignModelReferences(track, hashData);
            trackDao.InsertTrack(trackData);
            subFingerprintDao.InsertSubFingerprints(subFingerprintData);

            var actualTrack = trackDao.ReadTrackById(tagInfo.ISRC);

            Assert.IsNotNull(actualTrack);

            // Act
            int modifiedRows = trackDao.DeleteTrack(trackData.TrackReference) +
                               subFingerprintDao.DeleteSubFingerprintsByTrackReference(trackData.TrackReference);

            Assert.IsNull(trackDao.ReadTrackById(tagInfo.ISRC));
            Assert.IsFalse(subFingerprintDao.ReadHashedFingerprintsByTrackReference(actualTrack.TrackReference).Any());
            Assert.AreEqual(1 + hashData.Count + 25 * hashData.Count, modifiedRows);
        }
コード例 #2
0
 private TrackData InsertTrackAndHashes(TrackInfo track, Hashes hashedFingerprints, UIntModelReferenceTracker?modelReferenceTracker = null)
 {
     modelReferenceTracker ??= new UIntModelReferenceTracker();
     var(trackData, subFingerprints) = modelReferenceTracker.AssignModelReferences(track, hashedFingerprints);
     trackDao.InsertTrack(trackData);
     subFingerprintDao.InsertSubFingerprints(subFingerprints);
     return(trackData);
 }