summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/DataTemplateTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/DataTemplateTests.cs')
-rw-r--r--Xamarin.Forms.Core.UnitTests/DataTemplateTests.cs119
1 files changed, 119 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/DataTemplateTests.cs b/Xamarin.Forms.Core.UnitTests/DataTemplateTests.cs
new file mode 100644
index 00000000..24bf6a06
--- /dev/null
+++ b/Xamarin.Forms.Core.UnitTests/DataTemplateTests.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+
+namespace Xamarin.Forms.Core.UnitTests
+{
+ [TestFixture]
+ public class DataTemplateTests : BaseTestFixture
+ {
+ [Test]
+ public void CtorInvalid()
+ {
+ Assert.Throws<ArgumentNullException> (() => new DataTemplate ((Func<object>)null),
+ "Allowed null creator delegate");
+
+ Assert.Throws<ArgumentNullException> (() => new DataTemplate ((Type)null),
+ "Allowed null type");
+ }
+
+ [Test]
+ public void CreateContent()
+ {
+ var template = new DataTemplate (() => new MockBindable());
+ object obj = template.CreateContent();
+
+ Assert.IsNotNull (obj);
+ Assert.That (obj, Is.InstanceOf<MockBindable>());
+ }
+
+ [Test]
+ public void CreateContentType()
+ {
+ var template = new DataTemplate (typeof (MockBindable));
+ object obj = template.CreateContent();
+
+ Assert.IsNotNull (obj);
+ Assert.That (obj, Is.InstanceOf<MockBindable>());
+ }
+
+ [Test]
+ public void CreateContentValues()
+ {
+ var template = new DataTemplate (typeof (MockBindable)) {
+ Values = { { MockBindable.TextProperty, "value" } }
+ };
+
+ MockBindable bindable = (MockBindable)template.CreateContent();
+ Assert.That (bindable.GetValue (MockBindable.TextProperty), Is.EqualTo ("value"));
+ }
+
+ [Test]
+ public void CreateContentBindings()
+ {
+ var template = new DataTemplate (() => new MockBindable()) {
+ Bindings = { { MockBindable.TextProperty, new Binding (".") } }
+ };
+
+ MockBindable bindable = (MockBindable)template.CreateContent();
+ bindable.BindingContext = "text";
+ Assert.That (bindable.GetValue (MockBindable.TextProperty), Is.EqualTo ("text"));
+ }
+
+ [Test]
+ public void SetBindingInvalid()
+ {
+ var template = new DataTemplate (typeof (MockBindable));
+ Assert.That (() => template.SetBinding (null, new Binding (".")), Throws.InstanceOf<ArgumentNullException>());
+ Assert.That (() => template.SetBinding (MockBindable.TextProperty, null), Throws.InstanceOf<ArgumentNullException>());
+ }
+
+ [Test]
+ public void SetBindingOverridesValue()
+ {
+ var template = new DataTemplate (typeof (MockBindable));
+ template.SetValue (MockBindable.TextProperty, "value");
+ template.SetBinding (MockBindable.TextProperty, new Binding ("."));
+
+ MockBindable bindable = (MockBindable) template.CreateContent();
+ Assume.That (bindable.GetValue (MockBindable.TextProperty), Is.EqualTo (bindable.BindingContext));
+
+ bindable.BindingContext = "binding";
+ Assert.That (bindable.GetValue (MockBindable.TextProperty), Is.EqualTo ("binding"));
+ }
+
+ [Test]
+ public void SetValueOverridesBinding()
+ {
+ var template = new DataTemplate (typeof (MockBindable));
+ template.SetBinding (MockBindable.TextProperty, new Binding ("."));
+ template.SetValue (MockBindable.TextProperty, "value");
+
+ MockBindable bindable = (MockBindable) template.CreateContent();
+ Assert.That (bindable.GetValue (MockBindable.TextProperty), Is.EqualTo ("value"));
+ bindable.BindingContext = "binding";
+ Assert.That (bindable.GetValue (MockBindable.TextProperty), Is.EqualTo ("value"));
+ }
+
+ [Test]
+ public void SetValueInvalid()
+ {
+ var template = new DataTemplate (typeof (MockBindable));
+ Assert.That (() => template.SetValue (null, "string"), Throws.InstanceOf<ArgumentNullException>());
+ }
+
+ [Test]
+ public void SetValueAndBinding ()
+ {
+ var template = new DataTemplate (typeof (TextCell)) {
+ Bindings = {
+ {TextCell.TextProperty, new Binding ("Text")}
+ },
+ Values = {
+ {TextCell.TextProperty, "Text"}
+ }
+ };
+ Assert.That (() => template.CreateContent (), Throws.InstanceOf<InvalidOperationException> ());
+ }
+ }
+}