diff options
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/ImageSourceTests.cs')
-rw-r--r-- | Xamarin.Forms.Core.UnitTests/ImageSourceTests.cs | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/ImageSourceTests.cs b/Xamarin.Forms.Core.UnitTests/ImageSourceTests.cs new file mode 100644 index 00000000..95aa5131 --- /dev/null +++ b/Xamarin.Forms.Core.UnitTests/ImageSourceTests.cs @@ -0,0 +1,151 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using NUnit.Framework; +using System.IO; +using System.Threading.Tasks; +using System.Threading; + +namespace Xamarin.Forms.Core.UnitTests +{ + [TestFixture] + public class ImageSourceTests : BaseTestFixture + { + [SetUp] + public override void Setup () + { + base.Setup (); + Device.PlatformServices = new MockPlatformServices (); + } + + [Test] + public void TestConstructors () + { + var filesource = new FileImageSource { File = "File.png" }; + Assert.AreEqual ("File.png", filesource.File); + + Func<CancellationToken, Task<Stream>> stream = token => new Task<Stream> (() => new FileStream ("Foo", System.IO.FileMode.Open), token); + var streamsource = new StreamImageSource { Stream = stream }; + Assert.AreEqual (stream, streamsource.Stream); + } + + [Test] + public void TestHelpers () + { + var imagesource = ImageSource.FromFile ("File.png"); + Assert.That (imagesource, Is.TypeOf<FileImageSource> ()); + Assert.AreEqual ("File.png", ((FileImageSource)imagesource).File); + + Func<Stream> stream = () => new System.IO.FileStream ("Foo", System.IO.FileMode.Open); + var streamsource = ImageSource.FromStream (stream); + Assert.That (streamsource, Is.TypeOf<StreamImageSource> ()); + + var urisource = ImageSource.FromUri (new Uri ("http://xamarin.com/img.png")); + Assert.That (urisource, Is.TypeOf<UriImageSource> ()); + Assert.AreEqual ("http://xamarin.com/img.png", ((UriImageSource)(urisource)).Uri.AbsoluteUri); + } + + [Test] + public void TestImplicitFileConversion () + { + var image = new Image { Source = "File.png" }; + Assert.IsTrue (image.Source != null); + Assert.That (image.Source, Is.InstanceOf<FileImageSource> ()); + Assert.AreEqual ("File.png", ((FileImageSource)(image.Source)).File); + } + + [Test] + public void TestImplicitUriConversion () + { + var image = new Image { Source = new Uri ("http://xamarin.com/img.png") }; + Assert.IsTrue (image.Source != null); + Assert.That (image.Source, Is.InstanceOf<UriImageSource> ()); + Assert.AreEqual ("http://xamarin.com/img.png", ((UriImageSource)(image.Source)).Uri.AbsoluteUri); + } + + [Test] + public void TestImplicitStringUriConversion () + { + var image = new Image { Source = "http://xamarin.com/img.png" }; + Assert.IsTrue (image.Source != null); + Assert.That (image.Source, Is.InstanceOf<UriImageSource> ()); + Assert.AreEqual ("http://xamarin.com/img.png", ((UriImageSource)(image.Source)).Uri.AbsoluteUri); + } + + [Test] + public void TestSetStringValue () + { + var image = new Image (); + image.SetValue (Image.SourceProperty, "foo.png"); + Assert.IsNotNull (image.Source); + Assert.That (image.Source, Is.InstanceOf<FileImageSource> ()); + Assert.AreEqual ("foo.png", ((FileImageSource)(image.Source)).File); + } + + [Test] + public void TextBindToStringValue () + { + var image = new Image (); + image.SetBinding (Image.SourceProperty, "."); + Assert.IsNull (image.Source); + image.BindingContext = "foo.png"; + Assert.IsNotNull (image.Source); + Assert.That (image.Source, Is.InstanceOf<FileImageSource> ()); + Assert.AreEqual ("foo.png", ((FileImageSource)(image.Source)).File); + } + + [Test] + public void TextBindToStringUriValue () + { + var image = new Image (); + image.SetBinding (Image.SourceProperty, "."); + Assert.IsNull (image.Source); + image.BindingContext = "http://xamarin.com/img.png"; + Assert.IsNotNull (image.Source); + Assert.That (image.Source, Is.InstanceOf<UriImageSource> ()); + Assert.AreEqual ("http://xamarin.com/img.png", ((UriImageSource)(image.Source)).Uri.AbsoluteUri); + } + + [Test] + public void TextBindToUriValue () + { + var image = new Image (); + image.SetBinding (Image.SourceProperty, "."); + Assert.IsNull (image.Source); + image.BindingContext = new Uri("http://xamarin.com/img.png"); + Assert.IsNotNull (image.Source); + Assert.That (image.Source, Is.InstanceOf<UriImageSource> ()); + Assert.AreEqual ("http://xamarin.com/img.png", ((UriImageSource)(image.Source)).Uri.AbsoluteUri); + } + + class MockImageSource : ImageSource + { + } + + [Test] + public void TestBindingContextPropagation () + { + var context = new object (); + var image = new Image (); + image.BindingContext = context; + var source = new MockImageSource (); + image.Source = source; + Assert.AreSame (context, source.BindingContext); + + image = new Image (); + source = new MockImageSource (); + image.Source = source; + image.BindingContext = context; + Assert.AreSame (context, source.BindingContext); + } + + [Test] + public void ImplicitCastOnAbsolutePathsShouldCreateAFileImageSource () + { + var path = "/private/var/mobile/Containers/Data/Application/B1E5AB19-F815-4B4A-AB97-BD4571D53743/Documents/temp/IMG_20140603_150614_preview.jpg"; + var image = new Image { Source = path }; + Assert.That (image.Source, Is.TypeOf<FileImageSource> ()); + } + } +} |