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(); }
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(); }
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(); }
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(); }
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)); }
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()); }
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()); }
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()); }
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()); }
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()); }