public async Task ReleasingImageSourceReturnsDifferentBitmap()
        {
            var bitmapFile  = CreateBitmapFile(100, 100, Colors.Red);
            var imageSource = new FileImageSourceStub(bitmapFile);

            var service = new FileImageSourceService();

            // get an image
            var result1 = await service.GetDrawableAsync(imageSource, Platform.DefaultContext);

            var bitmapDrawable1 = Assert.IsType <BitmapDrawable>(result1.Value);
            var bitmap1         = bitmapDrawable1.Bitmap;

            // release
            result1.Dispose();

            // try collect it
            var collected = await TryCollectFile(bitmapFile);

            Assert.True(collected);

            // get the image again
            var result2 = await service.GetDrawableAsync(imageSource, Platform.DefaultContext);

            var bitmapDrawable2 = Assert.IsType <BitmapDrawable>(result2.Value);
            var bitmap2         = bitmapDrawable2.Bitmap;

            // make sure it WAS collected and we got a new image
            Assert.NotEqual(bitmap1, bitmap2);

            result2.Dispose();
        }
Beispiel #2
0
        public async Task LoadDrawableAsyncReturnsWithSameImageAndDoesNotHang()
        {
            var service = new FileImageSourceService();

            var filename    = BaseImageSourceServiceTests.CreateBitmapFile(100, 100, Colors.Azure);
            var imageSource = new FileImageSourceStub(filename);

            var image = new TStub();

            await InvokeOnMainThreadAsync(async() =>
            {
                var handler = CreateHandler <TImageHandler>(image);

                await handler.PlatformView.AttachAndRun(async() =>
                {
                    // get the file to load for the first time
                    var firstResult = await service.LoadDrawableAsync(imageSource, handler.PlatformView);

                    // now load and make sure the task completes
                    var secondResultTask = service.LoadDrawableAsync(imageSource, handler.PlatformView);

                    // make sure we wait, but only for 5 seconds
                    await Task.WhenAny(
                        secondResultTask,
                        Task.Delay(5_000));

                    Assert.Equal(TaskStatus.RanToCompletion, secondResultTask.Status);
                });
            });
        }
        public async Task TheSameImageSourceReturnsTheSameBitmap()
        {
            var bitmapFile  = CreateBitmapFile(100, 100, Colors.Red);
            var imageSource = new FileImageSourceStub(bitmapFile);

            var service = new FileImageSourceService();

            // get an image
            var result1 = await service.GetDrawableAsync(imageSource, MauiProgram.DefaultContext);

            var drawable1       = result1.Value;
            var bitmapDrawable1 = Assert.IsType <BitmapDrawable>(drawable1);
            var bitmap1         = bitmapDrawable1.Bitmap;

            // try collect it
            var collected = await TryCollectFile(bitmapFile);

            Assert.False(collected);

            // get the image again
            var result2 = await service.GetDrawableAsync(imageSource, MauiProgram.DefaultContext);

            var drawable2       = result2.Value;
            var bitmapDrawable2 = Assert.IsType <BitmapDrawable>(drawable2);
            var bitmap2         = bitmapDrawable2.Bitmap;

            // make sure it was NOT collected and we got the same image
            Assert.Equal(bitmap1, bitmap2);

            result1.Dispose();
            result2.Dispose();
        }
Beispiel #4
0
        public async Task ReleasingImageSourceReturnsDifferentBitmap()
        {
            var bitmapFile  = CreateBitmapFile(100, 100, Colors.Red);
            var imageSource = new FileImageSourceStub(bitmapFile);

            var service = new FileImageSourceService();

            // get an image
            var result1 = await service.GetImageAsync(imageSource);

            var uiimage1 = Assert.IsType <UIImage>(result1.Value);

            // release
            result1.Dispose();

            // try collect it
            var collected = await TryCollectFile(bitmapFile);

            Assert.True(collected);

            // get the image again
            var result2 = await service.GetImageAsync(imageSource);

            var uiimage2 = Assert.IsType <UIImage>(result2.Value);

            // make sure it WAS collected and we got a new image
            Assert.NotEqual(uiimage1, uiimage2);

            result2.Dispose();
        }
Beispiel #5
0
        public async Task TheSameImageSourceReturnsTheSameBitmap()
        {
            var bitmapFile  = CreateBitmapFile(100, 100, Colors.Red);
            var imageSource = new FileImageSourceStub(bitmapFile);

            var service = new FileImageSourceService();

            // get an image
            var result1 = await service.GetImageAsync(imageSource);

            var uiimage1 = Assert.IsType <UIImage>(result1.Value);

            // try collect it
            var collected = await TryCollectFile(bitmapFile);

            Assert.False(collected);

            // get the image again
            var result2 = await service.GetImageAsync(imageSource);

            var uiimage2 = Assert.IsType <UIImage>(result2.Value);

            // make sure it was NOT collected and we got the same image
            Assert.Equal(uiimage1, uiimage2);

            result1.Dispose();
            result2.Dispose();
        }
Beispiel #6
0
        public async Task ThrowsForIncorrectTypes(Type type)
        {
            var service = new FileImageSourceService();

            var imageSource = (ImageSourceStub)Activator.CreateInstance(type);

            await Assert.ThrowsAsync <InvalidCastException>(() => service.GetDrawableAsync(imageSource, MauiProgram.DefaultContext));
        }
Beispiel #7
0
        public async Task GetDrawableAsyncWithResource(string filename, string colorHex)
        {
            var service = new FileImageSourceService();

            var imageSource = new FileImageSourceStub(filename);

            using var result = await service.GetDrawableAsync(imageSource, MauiProgram.DefaultContext);

            var expectedColor = Color.FromArgb(colorHex);

            result.Value.AssertColorAtCenter(expectedColor.ToPlatform());
        }
Beispiel #8
0
        public async Task GetImageAsyncWithResource(string filename, string colorHex)
        {
            var service = new FileImageSourceService();

            var imageSource = new FileImageSourceStub(filename);

            using var result = await service.GetImageAsync(imageSource);

            var uiimage = Assert.IsType <UIImage>(result.Value);

            var expectedColor = Color.FromHex(colorHex);

            uiimage.AssertColorAtCenter(expectedColor.ToNative());
        }
Beispiel #9
0
        public async Task GetImageAsyncWithFile(string colorHex)
        {
            var expectedColor = Color.FromHex(colorHex);

            var service = new FileImageSourceService();

            var filename    = CreateBitmapFile(100, 100, expectedColor);
            var imageSource = new FileImageSourceStub(filename);

            using var drawable = await service.GetImageAsync(imageSource);

            var uiimage = Assert.IsType <UIImage>(drawable.Value);

            uiimage.AssertColorAtCenter(expectedColor.ToNative());
        }
Beispiel #10
0
        public async Task GetDrawableAsyncWithResource(string filename, string colorHex)
        {
            var service = new FileImageSourceService();

            var imageSource = new FileImageSourceStub(filename);

            using var drawable = await service.GetDrawableAsync(imageSource, Platform.DefaultContext);

            var bitmapDrawable = Assert.IsType <BitmapDrawable>(drawable.Value);

            var bitmap = bitmapDrawable.Bitmap;

            var expectedColor = Color.FromArgb(colorHex);

            bitmap.AssertColorAtCenter(expectedColor.ToPlatform());
        }
Beispiel #11
0
        public async Task GetDrawableAsyncWithFile(string colorHex)
        {
            var expectedColor = Color.FromArgb(colorHex);

            var service = new FileImageSourceService();

            var filename    = CreateBitmapFile(100, 100, expectedColor);
            var imageSource = new FileImageSourceStub(filename);

            using var result = await service.GetDrawableAsync(imageSource, MauiProgram.DefaultContext);

            var bitmapDrawable = Assert.IsType <BitmapDrawable>(result.Value);

            var bitmap = bitmapDrawable.Bitmap;

            bitmap.AssertColorAtCenter(expectedColor.ToPlatform());
        }