diff options
Diffstat (limited to 'Xamarin.Forms.Pages.UnitTests/DataSourceListTests.cs')
-rw-r--r-- | Xamarin.Forms.Pages.UnitTests/DataSourceListTests.cs | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Xamarin.Forms.Pages.UnitTests/DataSourceListTests.cs b/Xamarin.Forms.Pages.UnitTests/DataSourceListTests.cs new file mode 100644 index 00000000..4585e0d6 --- /dev/null +++ b/Xamarin.Forms.Pages.UnitTests/DataSourceListTests.cs @@ -0,0 +1,81 @@ +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Net.NetworkInformation; +using System.Threading.Tasks; +using NUnit.Framework; + +namespace Xamarin.Forms.Pages.UnitTests +{ + [TestFixture] + public class DataSourceListTests + { + public class TestDataSource : BaseDataSource + { + public ObservableCollection<IDataItem> DataItems { get; } = new ObservableCollection<IDataItem> (); + + protected override Task<IList<IDataItem>> GetRawData () + { + return Task.FromResult<IList<IDataItem>> (DataItems); + } + + protected override object GetValue (string key) + { + var target = DataItems.FirstOrDefault (d => d.Name == key); + if (target == null) + throw new KeyNotFoundException (); + return target.Value; + } + + protected override bool SetValue (string key, object value) + { + var target = DataItems.FirstOrDefault (d => d.Name == key); + if (target == null) + DataItems.Add (new DataItem (key, value)); + else if (target.Value == value) + return false; + else + target.Value = value; + return true; + } + } + + [Test] + public void DataSourceListIndexer () + { + var source = new TestDataSource (); + IDataSource s = source; + source.DataItems.Add (new DataItem ("Foo", "Bar")); + + Assert.AreEqual ("Bar", s["Foo"]); + + Assert.AreEqual ("Bar", s.Data[0].Value); + } + + [Test] + public void CompoundListPrepend () + { + var source = new TestDataSource (); + IDataSource s = source; + source.DataItems.Add (new DataItem ("Foo1", "Bar1")); + source.DataItems.Add (new DataItem ("Foo2", "Bar2")); + + var compoundList = new CompoundCollection { + MainList = s.Data + }; + var prependItem = new DataItem ("Pre1", "Val1"); + compoundList.PrependList.Add (prependItem); + + Assert.AreEqual (prependItem, compoundList[0]); + Assert.AreEqual (source.DataItems[0], s.Data[0]); + Assert.AreEqual (source.DataItems[1], s.Data[1]); + + Assert.AreEqual (source.DataItems[0], compoundList[1]); + Assert.AreEqual (source.DataItems[1], compoundList[2]); + + s.MaskKey ("Foo1"); + + Assert.AreEqual (source.DataItems[1], compoundList[1]); + } + } +}
\ No newline at end of file |