Skip to content

Commit 9181078

Browse files
committed
Merge branch 'feature/removing-read-all-tracks' into develop
* feature/removing-read-all-tracks: We actually need this method to be backward compatible. Removing `ReadAllTracks` from the interface since it returns a low-level TrackData object which shouldn't be exposed to the general public.
2 parents c9024f7 + fd5eb64 commit 9181078

File tree

14 files changed

+56
-38
lines changed

14 files changed

+56
-38
lines changed

src/SoundFingerprinting.Tests/Integration/FingerprintCommandBuilderIntTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
public class FingerprintCommandBuilderIntTest : IntegrationWithSampleFilesTest
1616
{
1717
private readonly DefaultFingerprintConfiguration config = new DefaultFingerprintConfiguration();
18-
private readonly IAudioService audioService = new SoundFingerprintingAudioService();
18+
private readonly SoundFingerprintingAudioService audioService = new SoundFingerprintingAudioService();
1919

2020
[Test]
2121
public async Task CreateFingerprintsFromFileAndAssertNumberOfFingerprints()

src/SoundFingerprinting.Tests/Integration/InMemoryModelServiceSerializationTest.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,12 @@ public void ShouldSerializeAndIncrementNextIdCorrectly()
6666
var secondTrack = new TrackInfo("id2", "title", "artist");
6767
fromFileService.Insert(secondTrack, new Hashes(new[] { new HashedFingerprint(GenericHashBuckets(), 1, 0f, Array.Empty<byte>()) }, 1.48, DateTime.Now, Enumerable.Empty<string>()));
6868

69-
var tracks = fromFileService.ReadAllTracks().ToList();
69+
var tracks = fromFileService.GetTrackIds().ToList();
7070

7171
File.Delete(tempFile);
7272

73-
var ref1 = tracks.First(track => track.Id == "id1").TrackReference;
74-
var ref2 = tracks.First(track => track.Id == "id2").TrackReference;
75-
Assert.IsTrue(tracks.Any(track => track.Id == "id1"));
76-
Assert.IsTrue(tracks.Any(track => track.Id == "id2"));
77-
Assert.IsTrue(!ref1.Equals(ref2));
73+
Assert.IsTrue(tracks.Any(track => track == "id1"));
74+
Assert.IsTrue(tracks.Any(track => track == "id2"));
7875
}
7976

8077
[Test]

src/SoundFingerprinting.Tests/Integration/InMemoryModelServiceTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void ReadMultipleTracksTest()
6868
modelService.Insert(track, new Hashes(new[] { new HashedFingerprint(GenericHashBuckets(), 0, 0f, Array.Empty<byte>()) }, 1.48d, DateTime.Now, Enumerable.Empty<string>()));
6969
}
7070

71-
var actualTracks = modelService.ReadAllTracks().ToList();
71+
var actualTracks = modelService.GetTrackIds().ToList();
7272

7373
Assert.AreEqual(numberOfTracks, actualTracks.Count);
7474
}

src/SoundFingerprinting.Tests/Integration/SoundFingerprintingAudioServiceIntTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
[TestFixture]
88
public class SoundFingerprintingAudioServiceIntTest : IntegrationWithSampleFilesTest
99
{
10-
private readonly IAudioService audioService = new SoundFingerprintingAudioService();
11-
1210
[Test]
1311
public void ShouldEstimateLengthCorrectly()
1412
{
13+
var audioService = new SoundFingerprintingAudioService();
14+
1515
var duration = audioService.GetLengthInSeconds(PathToWav);
1616

1717
Assert.AreEqual(10.0f, duration, 0.1);

src/SoundFingerprinting.Tests/Integration/TrackDaoTest.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,17 @@ public void MultipleInsertTest()
5454
}
5555

5656
[Test]
57-
public void ReadAllTracksTest()
57+
public void GetTrackIdsTest()
5858
{
5959
const int trackCount = 5;
6060
var expectedTracks = InsertTracks(trackCount);
6161

62-
var tracks = trackDao.ReadAll().ToList();
62+
var tracks = trackDao.GetTrackIds().ToList();
6363

6464
Assert.AreEqual(trackCount, tracks.Count);
6565
foreach (var expectedTrack in expectedTracks)
6666
{
67-
Assert.IsTrue(tracks.Any(track => track.Id == expectedTrack.Id));
67+
Assert.IsTrue(tracks.Any(trackId => trackId == expectedTrack.Id));
6868
}
6969
}
7070

@@ -74,7 +74,7 @@ public void InsertMultipleTrackAtOnceTest()
7474
const int trackCount = 100;
7575
var tracks = InsertTracks(trackCount);
7676

77-
var actualTracks = trackDao.ReadAll().ToList();
77+
var actualTracks = trackDao.GetTrackIds().ToList();
7878

7979
Assert.AreEqual(tracks.Count, actualTracks.Count);
8080
}
@@ -96,15 +96,16 @@ public void DeleteCollectionOfTracksTest()
9696
const int numberOfTracks = 10;
9797
InsertTracks(numberOfTracks);
9898

99-
var allTracks = trackDao.ReadAll().ToList();
99+
var allTracks = trackDao.GetTrackIds().ToList();
100100

101101
Assert.IsTrue(allTracks.Count == numberOfTracks);
102-
foreach (var track in allTracks)
102+
foreach (var track in allTracks.Select(trackId => trackDao.ReadTrackById(trackId)))
103103
{
104+
Assert.IsNotNull(track);
104105
trackDao.DeleteTrack(track.TrackReference);
105106
}
106107

107-
Assert.IsFalse(trackDao.ReadAll().Any());
108+
Assert.IsFalse(trackDao.GetTrackIds().Any());
108109
}
109110

110111
[Test]

src/SoundFingerprinting/Audio/IAudioService.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using System.Collections.Generic;
44

55
/// <summary>
6-
/// Audio service used to read and resample audio from a datasource
6+
/// Audio service used to read and resample audio from a data source
77
/// </summary>
88
public interface IAudioService
99
{
@@ -29,12 +29,5 @@ public interface IAudioService
2929
/// <param name="sampleRate">Target sample rate</param>
3030
/// <returns>Audio samples</returns>
3131
AudioSamples ReadMonoSamplesFromFile(string pathToSourceFile, int sampleRate);
32-
33-
/// <summary>
34-
/// Returns a usually accurate estimate for the length of the file
35-
/// </summary>
36-
/// <param name="pathToSourceFile">Path to audio source to get it's length from</param>
37-
/// <returns>Length in seconds</returns>
38-
float GetLengthInSeconds(string pathToSourceFile);
3932
}
4033
}

src/SoundFingerprinting/DAO/ITrackDao.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,7 @@ public interface ITrackDao
2020
TrackData? ReadTrackById(string id);
2121

2222
IEnumerable<TrackData> ReadAll();
23+
24+
IEnumerable<string> GetTrackIds();
2325
}
2426
}

src/SoundFingerprinting/Data/TrackInfo.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,21 @@ public override string ToString()
5252
$"MediaType {MediaType}, " +
5353
$"MetaFields {string.Join(",", MetaFields.Select(pair => $"{pair.Key}:{pair.Value}"))}";
5454
}
55+
56+
public override int GetHashCode()
57+
{
58+
return Id.GetHashCode();
59+
}
60+
61+
public override bool Equals(object obj)
62+
{
63+
if (obj == null)
64+
return false;
65+
66+
if (!(obj is TrackInfo trackInfo))
67+
return false;
68+
69+
return Id.Equals(trackInfo.Id) && MediaType.Equals(trackInfo.MediaType);
70+
}
5571
}
5672
}

src/SoundFingerprinting/IModelService.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public interface IModelService
2929
/// <returns>List of matched fingerprints</returns>
3030
IEnumerable<SubFingerprintData> Query(Hashes hashes, QueryConfiguration config);
3131

32-
3332
/// <summary>
3433
/// Read tracks by model references
3534
/// </summary>
@@ -52,9 +51,9 @@ public interface IModelService
5251
TrackInfo? ReadTrackById(string trackId);
5352

5453
/// <summary>
55-
/// Read all tracks from the storage
54+
/// Read all track ids from the storage
5655
/// </summary>
57-
/// <returns>List of all inserted tracks</returns>
58-
IEnumerable<TrackData> ReadAllTracks();
56+
/// <returns>List of all inserted track ids</returns>
57+
IEnumerable<string> GetTrackIds();
5958
}
6059
}

src/SoundFingerprinting/InMemory/TrackDao.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ public TrackData ReadTrackById(string id)
3333
return storage.Tracks.FirstOrDefault(pair => pair.Value.Id == id).Value;
3434
}
3535

36+
public IEnumerable<string> GetTrackIds()
37+
{
38+
return storage.Tracks.Values.Select(_ => _.Id);
39+
}
40+
3641
public IEnumerable<TrackData> ReadAll()
3742
{
3843
return storage.Tracks.Values;

0 commit comments

Comments
 (0)