summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/WebViewUnitTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/WebViewUnitTests.cs')
-rw-r--r--Xamarin.Forms.Core.UnitTests/WebViewUnitTests.cs93
1 files changed, 93 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/WebViewUnitTests.cs b/Xamarin.Forms.Core.UnitTests/WebViewUnitTests.cs
new file mode 100644
index 00000000..d441f4b8
--- /dev/null
+++ b/Xamarin.Forms.Core.UnitTests/WebViewUnitTests.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using NUnit.Framework;
+
+namespace Xamarin.Forms.Core.UnitTests
+{
+ [TestFixture]
+ public class WebViewUnitTests : BaseTestFixture
+ {
+ [Test]
+ public void TestSourceImplicitConversion ()
+ {
+ var web = new WebView ();
+ Assert.Null (web.Source);
+ web.Source = "http://www.google.com";
+ Assert.NotNull (web.Source);
+ Assert.True (web.Source is UrlWebViewSource);
+ Assert.AreEqual ("http://www.google.com", ((UrlWebViewSource)web.Source).Url);
+ }
+
+ [Test]
+ public void TestSourceChangedPropagation ()
+ {
+ var source = new UrlWebViewSource {Url ="http://www.google.com"};
+ var web = new WebView { Source = source };
+ bool signaled = false;
+ web.PropertyChanged += (sender, args) => {
+ if (args.PropertyName == WebView.SourceProperty.PropertyName)
+ signaled = true;
+ };
+ Assert.False (signaled);
+ source.Url = "http://www.xamarin.com";
+ Assert.True (signaled);
+ }
+
+ [Test]
+ public void TestSourceDisconnected ()
+ {
+ var source = new UrlWebViewSource {Url="http://www.google.com"};
+ var web = new WebView { Source = source };
+ web.Source = new UrlWebViewSource {Url="Foo"};
+ bool signaled = false;
+ web.PropertyChanged += (sender, args) => {
+ if (args.PropertyName == WebView.SourceProperty.PropertyName)
+ signaled = true;
+ };
+ Assert.False (signaled);
+ source.Url = "http://www.xamarin.com";
+ Assert.False (signaled);
+ }
+
+ class ViewModel
+ {
+ public string HTML { get; set; } = "<html><body><p>This is a WebView!</p></body></html>";
+
+ public string URL { get; set; } = "http://xamarin.com";
+
+ }
+
+ [Test]
+ public void TestBindingContextPropagatesToSource ()
+ {
+ var htmlWebView = new WebView {
+ };
+ var urlWebView = new WebView {
+ };
+
+ var htmlSource = new HtmlWebViewSource ();
+ htmlSource.SetBinding (HtmlWebViewSource.HtmlProperty, "HTML");
+ htmlWebView.Source = htmlSource;
+
+ var urlSource = new UrlWebViewSource ();
+ urlSource.SetBinding (UrlWebViewSource.UrlProperty, "URL");
+ urlWebView.Source = urlSource;
+
+ var viewModel = new ViewModel ();
+
+ var container = new StackLayout {
+ BindingContext = viewModel,
+ Padding = new Size (20, 20),
+ Children = {
+ htmlWebView,
+ urlWebView
+ }
+ };
+
+ Assert.AreEqual ("<html><body><p>This is a WebView!</p></body></html>", htmlSource.Html);
+ Assert.AreEqual ("http://xamarin.com", urlSource.Url);
+ }
+ }
+}