summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Pages.UnitTests/DataPageTests.cs
diff options
context:
space:
mode:
authorJason Smith <jason.smith@xamarin.com>2016-04-24 16:25:26 (GMT)
committerRui Marinho <me@ruimarinho.net>2016-04-24 16:25:26 (GMT)
commit5907152c50ee2c658b266f2804e6b383bb15a6f1 (patch)
tree9beb907623359723456c5c03b08922bebc4f41f3 /Xamarin.Forms.Pages.UnitTests/DataPageTests.cs
parentfeac1ba3ed6df5e27b3fa2076bd15c190cbacd1c (diff)
downloadxamarin-forms-5907152c50ee2c658b266f2804e6b383bb15a6f1.zip
xamarin-forms-5907152c50ee2c658b266f2804e6b383bb15a6f1.tar.gz
xamarin-forms-5907152c50ee2c658b266f2804e6b383bb15a6f1.tar.bz2
Evolve feature branch (#117)
* Initial import of evolve features * [Android] Add Xamarin.Forms.Platform.Android.AppLinks project * [iOS] Fix issues with c# 6 features on iOS AppLinks * Added naive stanza to update-docs-windows.bat to produce Pages docs. Not tested. (#69) * Update packages * Add AppLinks android nuspec and fix linker issues * Fix build * Fix nusepc * Fix nuspec * Update android support nugets to 23.2.1 * Update Xamarin.UITest * Add CardView * [iOS] Fix app link for CoreSpotlight * [Android] Update AppLinks android support libs * Add Newtonsoft.Json dependency to nuspec * Fix NRE when setting ControlTemplate to null * Move to ModernHttpClient for download * Try fix build * Preserve android app links * Fix margin issue * General coding and simple fixes
Diffstat (limited to 'Xamarin.Forms.Pages.UnitTests/DataPageTests.cs')
-rw-r--r--Xamarin.Forms.Pages.UnitTests/DataPageTests.cs165
1 files changed, 165 insertions, 0 deletions
diff --git a/Xamarin.Forms.Pages.UnitTests/DataPageTests.cs b/Xamarin.Forms.Pages.UnitTests/DataPageTests.cs
new file mode 100644
index 0000000..49fe38b
--- /dev/null
+++ b/Xamarin.Forms.Pages.UnitTests/DataPageTests.cs
@@ -0,0 +1,165 @@
+´╗┐using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using NUnit.Framework;
+using Xamarin.Forms.Core.UnitTests;
+
+namespace Xamarin.Forms.Pages.UnitTests
+{
+ [TestFixture]
+ public class DataPageTests
+ {
+ [SetUp]
+ public void Setup ()
+ {
+ Device.PlatformServices = new MockPlatformServices ();
+ }
+
+ [TearDown]
+ public void TearDown ()
+ {
+ Device.PlatformServices = null;
+ }
+
+ class TestDataPage : DataPage
+ {
+ public static readonly BindableProperty NameProperty =
+ BindableProperty.Create (nameof (Name), typeof (string), typeof (TestDataPage), null);
+
+ public string Name
+ {
+ get { return (string)GetValue (NameProperty); }
+ set { SetValue (NameProperty, value); }
+ }
+
+ public TestDataPage ()
+ {
+ SetBinding (NameProperty, new DataSourceBinding ("Name"));
+ }
+ }
+
+ class DataSource : BaseDataSource
+ {
+ ObservableCollection<IDataItem> data = new ObservableCollection<IDataItem> ();
+ protected override Task<IList<IDataItem>> GetRawData ()
+ {
+ return Task.FromResult<IList<IDataItem>> (data);
+ }
+
+ protected override object GetValue (string key)
+ {
+ var target = data.FirstOrDefault (d => d.Name == key);
+ if (target == null)
+ throw new KeyNotFoundException ();
+ return target.Value;
+ }
+
+ protected override bool SetValue (string key, object value)
+ {
+ var target = data.FirstOrDefault (d => d.Name == key);
+ if (target == null)
+ data.Add (new DataItem (key, value));
+ else if (target.Value == value)
+ return false;
+ else
+ target.Value = value;
+ return true;
+ }
+ }
+
+ [Test]
+ public void DefaultBindingsLoad ()
+ {
+ IDataSource dataSource = new DataSource ();
+ dataSource["Name"] = "Jason";
+
+ var detailpage = new TestDataPage ();
+ detailpage.Platform = new UnitPlatform ();
+ detailpage.DataSource = dataSource;
+
+ Assert.AreEqual ("Jason", detailpage.Name);
+ }
+
+ [Test]
+ public void RebindingDataSource ()
+ {
+ IDataSource dataSource = new DataSource ();
+ dataSource["UserName"] = "Jason";
+
+ var detailpage = new TestDataPage ();
+ detailpage.Platform = new UnitPlatform ();
+ detailpage.SetBinding (TestDataPage.NameProperty, new DataSourceBinding ("UserName"));
+ detailpage.DataSource = dataSource;
+
+ Assert.AreEqual ("Jason", detailpage.Name);
+ }
+
+ [Test]
+ public void RebindingDataSourceNotMasked ()
+ {
+ IDataSource dataSource = new DataSource ();
+ dataSource["UserName"] = "Jason";
+
+ var detailpage = new TestDataPage ();
+ detailpage.Platform = new UnitPlatform ();
+ detailpage.DataSource = dataSource;
+
+ detailpage.SetBinding (TestDataPage.NameProperty, new DataSourceBinding ("UserName"));
+ Assert.AreEqual ("Jason", detailpage.Name);
+
+ Assert.AreEqual (1, detailpage.DataSource.MaskedKeys.Count ());
+ }
+
+ [Test]
+ public void UpdateDataSource ()
+ {
+ IDataSource dataSource = new DataSource ();
+ dataSource["UserName"] = "Jason";
+
+ var detailpage = new TestDataPage ();
+ detailpage.Platform = new UnitPlatform ();
+ detailpage.SetBinding (TestDataPage.NameProperty, new DataSourceBinding ("UserName"));
+ detailpage.DataSource = dataSource;
+
+ dataSource["UserName"] = "Jerry";
+
+ Assert.AreEqual ("Jerry", detailpage.Name);
+ }
+
+ [Test]
+ public void MaskedItemsNotInData ()
+ {
+ IDataSource dataSource = new DataSource ();
+ dataSource["Name"] = "Jason";
+ dataSource["Other"] = "Foo";
+
+ var detailpage = new TestDataPage ();
+ detailpage.Platform = new UnitPlatform ();
+ detailpage.DataSource = dataSource;
+
+ Assert.AreEqual ("Jason", detailpage.Name);
+
+ Assert.AreEqual (1, detailpage.Data.Count ());
+ Assert.AreEqual ("Other", detailpage.Data.First ().Name);
+ }
+
+ [Test]
+ public void TwoWayDataSourceBinding ()
+ {
+ IDataSource dataSource = new DataSource ();
+ dataSource["UserName"] = "Jason";
+
+ var detailpage = new TestDataPage ();
+ detailpage.Platform = new UnitPlatform ();
+ detailpage.SetBinding (TestDataPage.NameProperty, new DataSourceBinding ("UserName", BindingMode.TwoWay));
+ detailpage.DataSource = dataSource;
+
+ ((IElementController)detailpage).SetValueFromRenderer (TestDataPage.NameProperty, "John");
+
+ Assert.AreEqual ("John", dataSource["UserName"]);
+ }
+ }
+}