public void GetItemsReturnsASingleNullDataRowIfThereAreNoDataSetsRegistered() { DataBindingContext context = new DataBindingContext(Mocks.Stub<IConverter>()); List<IDataItem> items = new List<IDataItem>(context.GetItems(false)); Assert.Count(1, items); Assert.AreSame(NullDataItem.Instance, items[0]); }
public void RegisteredBindingsAreFetchedByItemsAccordingToStrategy() { ItemSequenceDataSet dataSet1 = new ItemSequenceDataSet(new IDataItem[] { new ScalarDataItem<int>(1, null, false), new ScalarDataItem<int>(2, null, false) }, 1); ItemSequenceDataSet dataSet2 = new ItemSequenceDataSet(new IDataItem[] { new ScalarDataItem<int>(10, null, false), new ScalarDataItem<int>(20, null, false) }, 1); DataBindingContext context = new DataBindingContext(new NullConverter()); IDataAccessor accessor1 = context.RegisterBinding(dataSet1, new DataBinding(0, null)); IDataAccessor accessor2 = context.RegisterBinding(dataSet2, new DataBinding(0, null)); List<IDataItem> combinatorialItems = new List<IDataItem>(context.GetItems(true)); Assert.Count(4, combinatorialItems); Assert.AreEqual(1, accessor1.GetValue(combinatorialItems[0])); Assert.AreEqual(10, accessor2.GetValue(combinatorialItems[0])); Assert.AreEqual(1, accessor1.GetValue(combinatorialItems[1])); Assert.AreEqual(20, accessor2.GetValue(combinatorialItems[1])); Assert.AreEqual(2, accessor1.GetValue(combinatorialItems[2])); Assert.AreEqual(10, accessor2.GetValue(combinatorialItems[2])); Assert.AreEqual(2, accessor1.GetValue(combinatorialItems[3])); Assert.AreEqual(20, accessor2.GetValue(combinatorialItems[3])); context.Strategy = SequentialJoinStrategy.Instance; List<IDataItem> sequentialItems = new List<IDataItem>(context.GetItems(true)); Assert.Count(2, sequentialItems); Assert.AreEqual(1, accessor1.GetValue(sequentialItems[0])); Assert.AreEqual(10, accessor2.GetValue(sequentialItems[0])); Assert.AreEqual(2, accessor1.GetValue(sequentialItems[1])); Assert.AreEqual(20, accessor2.GetValue(sequentialItems[1])); }
public void AccessorObtainsAValueFromTheRow() { DataBinding binding = new DataBinding(0, null); ScalarDataBinder binder = new ScalarDataBinder(binding, "name"); IDataSourceResolver resolver = Mocks.StrictMock<IDataSourceResolver>(); DataBindingContext context = new DataBindingContext(new NullConverter()); DataSource source = new DataSource("name"); source.AddDataSet(new ItemSequenceDataSet(new IDataItem[] { new ScalarDataItem<int>(42, null, false), new ScalarDataItem<string>("42", null, false) }, 1)); using (Mocks.Record()) { Expect.Call(resolver.ResolveDataSource("name")).Return(source); } using (Mocks.Playback()) { IDataAccessor accessor = binder.Register(context, resolver); Assert.IsTrue(context.DataSets.Contains(source), "The data sets list should contain the source that was resolved during binder registration."); List<IDataItem> items = new List<IDataItem>(context.GetItems(true)); Assert.Count(2, items); Assert.AreEqual(42, accessor.GetValue(items[0])); Assert.AreEqual("42", accessor.GetValue(items[1])); } }