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);
        }
示例#3
0
        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;
 }