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(); }
public void ResultsDisposeCorrectlyAndOnce() { var dispose = 0; var cache = new CustomImageCacheStub(); var image = cache.Get(Colors.Red); var result = new ImageSourceServiceResult(image, () => dispose++); Assert.False(result.IsDisposed); Assert.Equal(0, dispose); result.Dispose(); Assert.True(result.IsDisposed); Assert.Equal(1, dispose); result.Dispose(); Assert.True(result.IsDisposed); Assert.Equal(1, dispose); cache.Return(Colors.Red); }
public async Task ResultsDisposeCorrectlyAndOnce() { var dispose = 0; var cache = new CustomImageCacheStub(); var image = await InvokeOnMainThreadAsync(() => cache.Get(Colors.Red)); var result = new ImageSourceServiceResult(image, () => dispose++); Assert.False(result.IsDisposed); Assert.Equal(0, dispose); result.Dispose(); Assert.True(result.IsDisposed); Assert.Equal(1, dispose); result.Dispose(); Assert.True(result.IsDisposed); Assert.Equal(1, dispose); cache.Return(Colors.Red); }
public LoadDrawableAsyncImageSourceServiceStub(CustomImageCacheStub cache) { _cache = cache; }