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); }
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); }