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])); } }
/// <inheritdoc /> protected override IDataAccessor RegisterImpl(DataBindingContext context, IDataSourceResolver resolver) { IDataSet dataSet = resolver.ResolveDataSource(sourceName); if (dataSet == null) throw new DataBindingException(String.Format("The data binder was unable to resolve a data source named '{0}'.", sourceName)); return context.RegisterBinding(dataSet, binding); }
/// <inheritdoc /> public IDataAccessor Register(DataBindingContext context, IDataSourceResolver resolver) { if (context == null) throw new ArgumentNullException("context"); if (resolver == null) throw new ArgumentNullException("resolver"); return RegisterImpl(context, resolver); }
/// <inheritdoc /> protected override IDataAccessor RegisterImpl(DataBindingContext context, IDataSourceResolver resolver) { IDataSet dataSet = resolver.ResolveDataSource(sourceName); if (dataSet == null) { throw new DataBindingException(String.Format("The data binder was unable to resolve a data source named '{0}'.", sourceName)); } return(context.RegisterBinding(dataSet, binding)); }
/// <inheritdoc /> protected override IDataAccessor RegisterImpl(DataBindingContext context, IDataSourceResolver resolver) { var slotAccessors = new List <KeyValuePair <ISlotInfo, IDataAccessor> >(slotBinders.Count); foreach (KeyValuePair <ISlotInfo, IDataBinder> slotBinder in slotBinders) { IDataAccessor accessor = slotBinder.Value.Register(context, resolver); slotAccessors.Add(new KeyValuePair <ISlotInfo, IDataAccessor>(slotBinder.Key, accessor)); } return(new Accessor(type, slotAccessors, context.Converter)); }
/// <inheritdoc /> protected override IDataAccessor RegisterImpl(DataBindingContext context, IDataSourceResolver resolver) { var slotAccessors = new List<KeyValuePair<ISlotInfo,IDataAccessor>>(slotBinders.Count); foreach (KeyValuePair<ISlotInfo, IDataBinder> slotBinder in slotBinders) { IDataAccessor accessor = slotBinder.Value.Register(context, resolver); slotAccessors.Add(new KeyValuePair<ISlotInfo, IDataAccessor>(slotBinder.Key, accessor)); } return new Accessor(type, slotAccessors, context.Converter); }
/// <inheritdoc /> public IDataAccessor Register(DataBindingContext context, IDataSourceResolver resolver) { if (context == null) { throw new ArgumentNullException("context"); } if (resolver == null) { throw new ArgumentNullException("resolver"); } return(RegisterImpl(context, resolver)); }
public void RegisteredDataSetsAppearExactlyOnceInDataSetsList() { IDataSet dataSet1 = Mocks.Stub<IDataSet>(); IDataSet dataSet2 = Mocks.Stub<IDataSet>(); IConverter converter = Mocks.Stub<IConverter>(); DataBindingContext context = new DataBindingContext(converter); context.RegisterBinding(dataSet1, new DataBinding(0, null)); context.RegisterBinding(dataSet2, new DataBinding(0, null)); context.RegisterBinding(dataSet1, new DataBinding(0, null)); Assert.AreElementsEqual(new IDataSet[] { dataSet1, dataSet2 }, context.DataSets); }
public void RegisterThrowsIfTheDataSourceCannotBeResolvedByName() { ScalarDataBinder binder = new ScalarDataBinder( new DataBinding(0, null), "name"); IDataSourceResolver resolver = Mocks.StrictMock<IDataSourceResolver>(); using (Mocks.Record()) { Expect.Call(resolver.ResolveDataSource("name")).Return(null); } using (Mocks.Playback()) { DataBindingContext context = new DataBindingContext(new NullConverter()); Assert.Throws<DataBindingException>(delegate { binder.Register(context, resolver); }); } }
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 RegisterBindingThrowsIfBindingIsNull() { IConverter converter = Mocks.Stub<IConverter>(); DataBindingContext context = new DataBindingContext(converter); context.RegisterBinding(Mocks.Stub<IDataSet>(), null); }
public void RegisterBindingThrowsIfDataSetIsNull() { IConverter converter = Mocks.Stub<IConverter>(); DataBindingContext context = new DataBindingContext(converter); context.RegisterBinding(null, new DataBinding(0, null)); }
public void InitialDataSetsArrayIsEmpty() { IConverter converter = Mocks.Stub<IConverter>(); DataBindingContext context = new DataBindingContext(converter); Assert.Count(0, context.DataSets); }
public void DefaultJoinStrategyIsCombinatorial() { IConverter converter = Mocks.Stub<IConverter>(); DataBindingContext context = new DataBindingContext(converter); Assert.AreSame(CombinatorialJoinStrategy.Instance, context.Strategy); }
public void ConverterPropertyContainsSameValueAsSpecifiedInTheConstructor() { IConverter converter = Mocks.Stub<IConverter>(); DataBindingContext context = new DataBindingContext(converter); Assert.AreSame(converter, context.Converter); }
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 DataBindingAccessorThrowsIfItemIsNull() { ItemSequenceDataSet dataSet = new ItemSequenceDataSet(new IDataItem[] { }, 1); DataBindingContext context = new DataBindingContext(Mocks.Stub<IConverter>()); IDataAccessor accessor = context.RegisterBinding(dataSet, new DataBinding(0, null)); Assert.Throws<ArgumentNullException>(delegate { accessor.GetValue(null); }); }
/// <summary> /// Implementation of <see cref="Register" />. /// </summary> /// <param name="context">The data binding context, not null.</param> /// <param name="resolver">The data source resolver, not null.</param> /// <returns>The data binding accessor.</returns> protected abstract IDataAccessor RegisterImpl(DataBindingContext context, IDataSourceResolver resolver);
/// <summary> /// Creates an initial test state object. /// </summary> /// <param name="primaryTestStep">The primary test step.</param> /// <param name="testActions">The test actions.</param> /// <param name="converter">The converter for data binding.</param> /// <param name="formatter">The formatter for data binding.</param> /// <param name="isExplicit">True if the test was selected explicitly.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="primaryTestStep"/>, /// <paramref name="testActions"/>, <paramref name="converter"/> /// or <paramref name="formatter"/> is null.</exception> internal PatternTestState(PatternTestStep primaryTestStep, PatternTestActions testActions, IConverter converter, IFormatter formatter, bool isExplicit) { if (primaryTestStep == null) throw new ArgumentNullException("primaryTestStep"); if (testActions == null) throw new ArgumentNullException("testActions"); if (converter == null) throw new ArgumentNullException("converter"); if (formatter == null) throw new ArgumentNullException("formatter"); this.primaryTestStep = primaryTestStep; this.testActions = testActions; this.converter = converter; this.formatter = formatter; this.isExplicit = isExplicit; bindingContext = new DataBindingContext(converter); testParameterDataAccessors = new Dictionary<PatternTestParameter, IDataAccessor>(); data = new UserDataCollection(); }