Exemplo n.º 1
0
        public void AccessorCreatesNewObjectsThroughSlotBinding()
        {
            DataSource source = new DataSource("data");

            source.AddDataSet(new ItemSequenceDataSet(new IDataItem[] { new ListDataItem <object>(new object[] { 42, typeof(int) }, null, false) }, 2));

            IDataSourceResolver resolver = Mocks.StrictMock <IDataSourceResolver>();

            using (Mocks.Record())
            {
                Expect.Call(resolver.ResolveDataSource("data")).Repeat.Twice().Return(source);
            }

            using (Mocks.Playback())
            {
                ITypeInfo        type        = Reflector.Wrap(typeof(Holder <>));
                IConstructorInfo constructor = type.GetConstructors(BindingFlags.Instance | BindingFlags.Public)[0];
                ISlotInfo        valueSlot   = constructor.Parameters[0];
                ISlotInfo        typeSlot    = (IGenericParameterInfo)type.GenericArguments[0];

                DataBindingContext context = new DataBindingContext(new NullConverter());

                ObjectDataBinder binder = new ObjectDataBinder(type);
                binder.SetSlotBinder(valueSlot, new ScalarDataBinder(new DataBinding(0, null), "data"));
                binder.SetSlotBinder(typeSlot, new ScalarDataBinder(new DataBinding(1, null), "data"));

                IDataAccessor    accessor = binder.Register(context, resolver);
                List <IDataItem> items    = new List <IDataItem>(context.GetItems(true));
                Assert.Count(1, items);

                Holder <int> holder = (Holder <int>)accessor.GetValue(items[0]);
                Assert.AreEqual(42, holder.Value, "Should have set the value via the constructor parameter.");
            }
        }
Exemplo n.º 2
0
        public void AccessorThrowsIfItemIsNull()
        {
            ObjectDataBinder binder   = new ObjectDataBinder(Mocks.Stub <ITypeInfo>());
            IDataAccessor    accessor = binder.Register(new DataBindingContext(Mocks.Stub <IConverter>()), Mocks.Stub <IDataSourceResolver>());

            Assert.Throws <ArgumentNullException>(delegate { accessor.GetValue(null); });
        }
Exemplo n.º 3
0
        public void SetSlotBinderThrowsIfBinderIsNull()
        {
            ObjectDataBinder binder = new ObjectDataBinder(Mocks.Stub <ITypeInfo>());

            binder.SetSlotBinder(Mocks.Stub <ISlotInfo>(), null);
        }
Exemplo n.º 4
0
        public void SetSlotBinderThrowsIfSlotIsNull()
        {
            ObjectDataBinder binder = new ObjectDataBinder(Mocks.Stub <ITypeInfo>());

            binder.SetSlotBinder(null, Mocks.Stub <IDataBinder>());
        }