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.Cores.OwlCoreRpc.Tests.Mock.Items { public class MockCoreArtist : ICoreArtist { public MockCoreArtist(ICore sourceCore, string id, string name) { SourceCore = sourceCore; Id = id; Name = name; } public ICore SourceCore { get; set; } public string Id { get; set; } public string Name { get; set; } public ICorePlayableCollectionGroup? RelatedItems { get; set; } public int TotalAlbumItemsCount { get; set; } public bool IsPlayAlbumCollectionAsyncAvailable { get; set; } public bool IsPauseAlbumCollectionAsyncAvailable { get; set; } public int TotalTrackCount { get; set; } public bool IsPlayTrackCollectionAsyncAvailable { get; set; } public bool IsPauseTrackCollectionAsyncAvailable { get; set; } public DateTime? AddedAt { 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 event CollectionChangedEventHandler? AlbumItemsChanged; public event EventHandler? IsPlayAlbumCollectionAsyncAvailableChanged; public event EventHandler? IsPauseAlbumCollectionAsyncAvailableChanged; public event EventHandler? AlbumItemsCountChanged; 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 AddAlbumItemAsync(ICoreAlbumCollectionItem album, 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 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 GetAlbumItemsAsync(int limit, int offset, [EnumeratorCancellation] CancellationToken cancellationToken = default) { await Task.CompletedTask; yield return MockCoreItemFactory.CreateAlbum(SourceCore); } public IAsyncEnumerable GetGenresAsync(int limit, int offset, CancellationToken cancellationToken = default) { return AsyncEnumerable.Empty(); } public IAsyncEnumerable GetImagesAsync(int limit, int offset, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public async IAsyncEnumerable GetTracksAsync(int limit, int offset, [EnumeratorCancellation] 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 IsAddAlbumItemAvailableAsync(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 IsRemoveAlbumItemAvailableAsync(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 PauseAlbumCollectionAsync(CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task PauseTrackCollectionAsync(CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task PlayAlbumCollectionAsync(ICoreAlbumCollectionItem albumItem, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } public Task PlayAlbumCollectionAsync(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 RemoveAlbumItemAsync(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(); } } }