diff options
author | Jason Smith <jason.smith@xamarin.com> | 2016-04-24 12:25:26 -0400 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-04-24 12:25:26 -0400 |
commit | 5907152c50ee2c658b266f2804e6b383bb15a6f1 (patch) | |
tree | 9beb907623359723456c5c03b08922bebc4f41f3 /Xamarin.Forms.Pages.UnitTests/DataPageTests.cs | |
parent | feac1ba3ed6df5e27b3fa2076bd15c190cbacd1c (diff) | |
download | xamarin-forms-5907152c50ee2c658b266f2804e6b383bb15a6f1.tar.gz xamarin-forms-5907152c50ee2c658b266f2804e6b383bb15a6f1.tar.bz2 xamarin-forms-5907152c50ee2c658b266f2804e6b383bb15a6f1.zip |
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.cs | 165 |
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 00000000..49fe38b2 --- /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"]); + } + } +} |