public void SetUp()
        {
            var ramStorage = new RAMStorage(NumberOfFingerprints);

            SubFingerprintDao = new SubFingerprintDao(ramStorage);
            TrackDao          = new TrackDao(ramStorage);
        }
예제 #2
0
        public void SetUp()
        {
            var ramStorage = new RAMStorage(NumberOfHashTables);

            HashBinDao        = new HashBinDao(ramStorage);
            TrackDao          = new TrackDao(ramStorage);
            SubFingerprintDao = new SubFingerprintDao(ramStorage);
        }
예제 #3
0
        public void InsertTest()
        {
            TrackData track          = new TrackData("isrc", "artist", "title", "album", 1986, 200);
            var       trackReference = TrackDao.InsertTrack(track);

            var subFingerprintReference = SubFingerprintDao.InsertSubFingerprint(GenericSignature, trackReference);

            AssertModelReferenceIsInitialized(subFingerprintReference);
        }
        public void SetUp()
        {
            solr = new Mock <ISolrOperations <SubFingerprintDTO> >(MockBehavior.Strict);
            dictionaryToHashConverter = new Mock <IDictionaryToHashConverter>(MockBehavior.Strict);
            hashConverter             = new Mock <IHashConverter>(MockBehavior.Strict);
            solrQueryBuilder          = new Mock <ISolrQueryBuilder>(MockBehavior.Strict);

            subFingerprintDao = new SubFingerprintDao(solr.Object, dictionaryToHashConverter.Object, hashConverter.Object, solrQueryBuilder.Object);
        }
예제 #5
0
 public IList <HashedFingerprint> ReadHashedFingerprintsByTrack(IModelReference trackReference)
 {
     return(SubFingerprintDao.ReadHashedFingerprintsByTrackReference(trackReference)
            .Select(subFingerprint => new HashedFingerprint(
                        subFingerprint.Hashes,
                        subFingerprint.SequenceNumber,
                        subFingerprint.SequenceAt))
            .ToList());
 }
예제 #6
0
        public void InsertTest()
        {
            TrackData track   = new TrackData("isrc", "artist", "title", "album", 1986, 200);
            int       trackId = TrackDao.Insert(track);

            long subFingerprintId = SubFingerprintDao.Insert(GenericSignature, trackId);

            Assert.IsFalse(subFingerprintId == 0);
        }
예제 #7
0
        public void ReadTest()
        {
            TrackData track                   = new TrackData("isrc", "artist", "title", "album", 1986, 200);
            var       trackReference          = TrackDao.InsertTrack(track);
            var       subFingerprintReference = SubFingerprintDao.InsertSubFingerprint(GenericSignature, trackReference);

            SubFingerprintData actual = SubFingerprintDao.ReadSubFingerprint(subFingerprintReference);

            AsserSubFingerprintsAreEqual(new SubFingerprintData(GenericSignature, subFingerprintReference, trackReference), actual);
        }
        public TrackDaoFact()
        {
            tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetTempFileName());
            File.Delete(tempDirectory);
            Directory.CreateDirectory(tempDirectory);

            context = new DatabaseContext(tempDirectory, new LMDBConfiguration());

            trackDao          = new TrackDao(context);
            subFingerprintDao = new SubFingerprintDao(context);
        }
예제 #9
0
        public void DeleteHashBinsAndSubfingerprintsOnTrackDelete()
        {
            const int StaticStride     = 5115;
            const int SecondsToProcess = 20;
            const int StartAtSecond    = 30;
            TagInfo   tagInfo          = tagService.GetTagInfo(PathToMp3);
            int       releaseYear      = tagInfo.Year;
            TrackData track            = new TrackData(tagInfo.ISRC, tagInfo.Artist, tagInfo.Title, tagInfo.Album, releaseYear, (int)tagInfo.Duration);
            int       trackId          = TrackDao.Insert(track);
            var       hashData         = fingerprintCommandBuilder
                                         .BuildFingerprintCommand()
                                         .From(PathToMp3, SecondsToProcess, StartAtSecond)
                                         .WithFingerprintConfig(config =>
            {
                config.Stride = new IncrementalStaticStride(StaticStride, config.SamplesPerFingerprint);
            })
                                         .Hash()
                                         .Result;

            List <long> subFingerprintIds = new List <long>();

            foreach (var hash in hashData)
            {
                long subFingerprintId = SubFingerprintDao.Insert(hash.SubFingerprint, trackId);
                HashBinDao.Insert(hash.HashBins, subFingerprintId);
                subFingerprintIds.Add(subFingerprintId);
            }

            var actualTrack = TrackDao.ReadTrackByISRC(tagInfo.ISRC);

            Assert.IsNotNull(actualTrack);
            AssertTracksAreEqual(track, actualTrack);

            // Act
            int modifiedRows = TrackDao.DeleteTrack(trackId);

            Assert.IsNull(TrackDao.ReadTrackByISRC(tagInfo.ISRC));
            foreach (var id in subFingerprintIds)
            {
                Assert.IsTrue(id != 0);
                Assert.IsNull(SubFingerprintDao.ReadById(id));
            }

            for (int i = 1; i <= 25; i++)
            {
                Assert.IsTrue(HashBinDao.ReadHashBinsByHashTable(i).Count == 0);
            }

            Assert.AreEqual(1 + hashData.Count + (25 * hashData.Count), modifiedRows);
        }
예제 #10
0
        public void ReadTest()
        {
            TrackData track   = new TrackData("isrc", "artist", "title", "album", 1986, 200);
            int       trackId = TrackDao.Insert(track);

            long subFingerprintId = SubFingerprintDao.Insert(GenericSignature, trackId);

            SubFingerprintData actual = SubFingerprintDao.ReadById(subFingerprintId);

            AsserSubFingerprintsAreEqual(
                new SubFingerprintData(
                    GenericSignature,
                    new ModelReference <long>(subFingerprintId),
                    new ModelReference <int>(trackId)),
                actual);
        }
예제 #11
0
        public void DeleteHashBinsAndSubfingerprintsOnTrackDelete()
        {
            const int StaticStride     = 5115;
            const int SecondsToProcess = 20;
            const int StartAtSecond    = 30;
            TagInfo   tagInfo          = tagService.GetTagInfo(PathToMp3);
            int       releaseYear      = tagInfo.Year;
            TrackData track            = new TrackData(tagInfo.ISRC, tagInfo.Artist, tagInfo.Title, tagInfo.Album, releaseYear, (int)tagInfo.Duration);
            var       trackReference   = TrackDao.InsertTrack(track);
            var       hashData         = fingerprintCommandBuilder
                                         .BuildFingerprintCommand()
                                         .From(PathToMp3, SecondsToProcess, StartAtSecond)
                                         .WithFingerprintConfig(config =>
            {
                config.Stride = new IncrementalStaticStride(StaticStride, config.SamplesPerFingerprint);
            })
                                         .UsingServices(audioService)
                                         .Hash()
                                         .Result;

            var subFingerprintReferences = new List <IModelReference>();

            foreach (var hash in hashData)
            {
                var subFingerprintReference = SubFingerprintDao.InsertSubFingerprint(hash.SubFingerprint, trackReference);
                HashBinDao.InsertHashBins(hash.HashBins, subFingerprintReference, trackReference);
                subFingerprintReferences.Add(subFingerprintReference);
            }

            var actualTrack = TrackDao.ReadTrackByISRC(tagInfo.ISRC);

            Assert.IsNotNull(actualTrack);
            AssertTracksAreEqual(track, actualTrack);

            // Act
            int modifiedRows = TrackDao.DeleteTrack(trackReference);

            Assert.IsNull(TrackDao.ReadTrackByISRC(tagInfo.ISRC));
            foreach (var id in subFingerprintReferences)
            {
                Assert.IsTrue(id.GetHashCode() != 0);
                Assert.IsNull(SubFingerprintDao.ReadSubFingerprint(id));
            }

            Assert.IsTrue(HashBinDao.ReadHashDataByTrackReference(actualTrack.TrackReference).Count == 0);
            Assert.AreEqual(1 + hashData.Count + (25 * hashData.Count), modifiedRows);
        }
예제 #12
0
 public HashBinDaoTest()
 {
     HashBinDao = new HashBinDao();
     TrackDao = new TrackDao();
     SubFingerprintDao = new SubFingerprintDao();
 }
예제 #13
0
 public SubFingerprintDaoTest()
 {
     SubFingerprintDao = new SubFingerprintDao();
     TrackDao          = new TrackDao();
 }
예제 #14
0
 public TrackDaoTest()
 {
     TrackDao          = new TrackDao();
     SubFingerprintDao = new SubFingerprintDao();
     HashBinDao        = new HashBinDao();
 }
 public SubFingerprintDaoTest()
 {
     SubFingerprintDao = new SubFingerprintDao();
     TrackDao = new TrackDao();
 }