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."); } }
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); }); }
public void SetSlotBinderThrowsIfBinderIsNull() { ObjectDataBinder binder = new ObjectDataBinder(Mocks.Stub <ITypeInfo>()); binder.SetSlotBinder(Mocks.Stub <ISlotInfo>(), null); }
public void SetSlotBinderThrowsIfSlotIsNull() { ObjectDataBinder binder = new ObjectDataBinder(Mocks.Stub <ITypeInfo>()); binder.SetSlotBinder(null, Mocks.Stub <IDataBinder>()); }