using OwlCore.Events; using StrixMusic.Sdk.MediaPlayback; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; using StrixMusic.Sdk.CoreModels; namespace StrixMusic.Sdk.Tests.Mock.Core.Items { public class MockCoreAlbum : ICoreAlbum { public MockCoreAlbum(ICore sourceCore, string id, string name) { SourceCore = sourceCore; Id = id; Name = name; } public ICorePlayableCollectionGroup? RelatedItems { get; set; } public DateTime? DatePublished { get; set; } public bool IsChangeDatePublishedAsyncAvailable { get; set; } public int TotalArtistItemsCount { get; set; } public bool IsPlayArtistCollectionAsyncAvailable { get; set; } public bool IsPauseArtistCollectionAsyncAvailable { get; set; } public int TotalTrackCount { get; set; } public bool IsPlayTrackCollectionAsyncAvailable { get; set; } public bool IsPauseTrackCollectionAsyncAvailable { get; set; } public DateTime? AddedAt { get; set; } public string Id { get; set; } public string Name { get; set; } public string? Description { get; set; } public DateTime? LastPlayed { get; set; } public PlaybackState PlaybackState { get; set; } public TimeSpan Duration { get; set; } public bool IsChangeNameAsyncAvailable { get; set; } public bool IsChangeDescriptionAsyncAvailable { get; set; } public bool IsChangeDurationAsyncAvailable { get; set; } public int TotalImageCount { get; set; } public int TotalUrlCount { get; set; } public int TotalGenreCount { get; set; } public ICore SourceCore { get; set; } public event EventHandler? DatePublishedChanged; public event EventHandler? IsChangeDatePublishedAsyncAvailableChanged; public event CollectionChangedEventHandler? ArtistItemsChanged; public event EventHandler? IsPlayArtistCollectionAsyncAvailableChanged; public event EventHandler? IsPauseArtistCollectionAsyncAvailableChanged; public event EventHandler? ArtistItemsCountChanged; public event CollectionChangedEventHandler? TracksChanged; public event EventHandler? IsPlayTrackCollectionAsyncAvailableChanged; public event EventHandler? IsPauseTrackCollectionAsyncAvailableChanged; public event EventHandler? TracksCountChanged; public event EventHandler? PlaybackStateChanged; public event EventHandler? NameChanged; public event EventHandler? DescriptionChanged; public event EventHandler? DurationChanged; public event EventHandler? LastPlayedChanged; public event EventHandler? IsChangeNameAsyncAvailableChanged; public event EventHandler? IsChangeDescriptionAsyncAvailableChanged; public event EventHandler? IsChangeDurationAsyncAvailableChanged; public event CollectionChangedEventHandler? ImagesChanged; public event EventHandler? ImagesCountChanged; public event CollectionChangedEventHandler? UrlsChanged; public event EventHandler? UrlsCountChanged; public event CollectionChangedEventHandler? GenresChanged; public event EventHandler? GenresCountChanged; public Task AddArtistItemAsync(ICoreArtistCollectionItem artist, int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task AddGenreAsync(ICoreGenre genre, int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task AddImageAsync(ICoreImage image, int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task AddTrackAsync(ICoreTrack track, int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task AddUrlAsync(ICoreUrl url, int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task ChangeDatePublishedAsync(DateTime datePublished, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task ChangeDescriptionAsync(string? description, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task ChangeDurationAsync(TimeSpan duration, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task ChangeNameAsync(string name, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public ValueTask DisposeAsync() { throw new NotImplementedException(); } public async IAsyncEnumerable GetArtistItemsAsync(int limit, int offset, [EnumeratorCancellation] CancellationToken cancellationToken = default) { await Task.CompletedTask; yield return MockCoreItemFactory.CreateArtist(SourceCore); } public IAsyncEnumerable GetGenresAsync(int limit, int offset, CancellationToken cancellationToken = default) { return AsyncEnumerable.Empty(); } public IAsyncEnumerable GetImagesAsync(int limit, int offset, CancellationToken cancellationToken = default) { return AsyncEnumerable.Empty(); } public async IAsyncEnumerable GetTracksAsync(int limit, int offset, CancellationToken cancellationToken = default) { await Task.CompletedTask; yield return MockCoreItemFactory.CreateTrack(SourceCore); } public IAsyncEnumerable GetUrlsAsync(int limit, int offset, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsAddArtistItemAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsAddGenreAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsAddImageAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsAddTrackAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsAddUrlAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsRemoveArtistItemAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsRemoveGenreAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsRemoveImageAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsRemoveTrackAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task IsRemoveUrlAvailableAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task PauseArtistCollectionAsync(CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task PauseTrackCollectionAsync(CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task PlayArtistCollectionAsync(ICoreArtistCollectionItem artistItem, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task PlayArtistCollectionAsync(CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task PlayTrackCollectionAsync(ICoreTrack track, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task PlayTrackCollectionAsync(CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task RemoveArtistItemAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task RemoveGenreAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task RemoveImageAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task RemoveTrackAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task RemoveUrlAsync(int index, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } } }