public async Task LoadDrawableAsyncCorrectlyFetchesDrawable() { var imageSource = new CustomImageSourceStub(Colors.Red); var cache = new CustomImageCacheStub(); var service = new LoadDrawableAsyncImageSourceServiceStub(cache); var imageView = new ImageView(MauiProgram.DefaultContext); // get an image var result1 = await service.GetDrawableAsync(imageSource, MauiProgram.DefaultContext); Assert.Equal(1, cache.Cache.Count); Assert.Equal(1, cache.Cache[imageSource.Color].Count); // get the image again as a load var result2 = await service.LoadDrawableAsync(imageSource, imageView); Assert.Equal(1, cache.Cache.Count); Assert.Equal(2, cache.Cache[imageSource.Color].Count); // make sure it was NOT collected and we got the same image Assert.Equal(result1.Value, imageView.Drawable); result1.Dispose(); result2.Dispose(); }
public async Task DisposingLoadDrawableAsyncBaseDoesNotDisposeRealBitmap() { var imageSource = new CustomImageSourceStub(Colors.Red); var cache = new CustomImageCacheStub(); var service = new LoadDrawableAsyncImageSourceServiceStub(cache); var imageView = new ImageView(MauiProgram.DefaultContext); var result1 = await service.GetDrawableAsync(imageSource, MauiProgram.DefaultContext); var result2 = await service.LoadDrawableAsync(imageSource, imageView); // dispose drawable result1.Dispose(); // ensure the count went down Assert.Equal(1, cache.Cache.Count); Assert.Equal(1, cache.Cache[imageSource.Color].Count); result2.Dispose(); }