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);
        }
Beispiel #4
0
        /// <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));
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #7
0
        /// <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); });
        }
Beispiel #18
0
 /// <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();
        }
 /// <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);