コード例 #1
0
        public void SearchSubstitutedRoles()
        {
            var searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService> ();
            var args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments> ();

            BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null);
            BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute> ().AddService(
                typeof(SubstitutionPropertiesSearchService), searchServiceStub);
            var substitutionClass       = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Substitution));
            var substitutedRoleProperty = (IBusinessObjectReferenceProperty)substitutionClass.GetPropertyDefinition("SubstitutedRole");

            Assert.That(substitutedRoleProperty, Is.Not.Null);

            Substitution substitution = Substitution.NewObject();
            var          expected     = new[] { MockRepository.GenerateStub <IBusinessObject> () };

            searchServiceStub.Stub(stub => stub.SupportsProperty(substitutedRoleProperty)).Return(true);
            searchServiceStub.Stub(stub => stub.Search(substitution, substitutedRoleProperty, args)).Return(expected);

            Assert.That(substitutedRoleProperty.SupportsSearchAvailableObjects, Is.True);

            var actual = substitutedRoleProperty.SearchAvailableObjects(substitution, args);

            Assert.That(actual, Is.SameAs(expected));
        }
コード例 #2
0
        public void UseBindableObjectProvider_WithBaseClass()
        {
            IBusinessObjectReferenceProperty property = new ReferenceProperty(
                new PropertyBase.Parameters(
                    _bindableObjectProvider,
                    GetPropertyInfo(typeof(ClassWithReferenceToClassDerivedFromBindableObjectBase), "ScalarReference"),
                    typeof(ClassDerivedFromBindableObjectBase),
                    new Lazy <Type> (() => typeof(ClassDerivedFromBindableObjectBase)),
                    null,
                    false,
                    false,
                    new BindableObjectDefaultValueStrategy(),
                    MockRepository.GenerateStub <IBindablePropertyReadAccessStrategy>(),
                    MockRepository.GenerateStub <IBindablePropertyWriteAccessStrategy>(),
                    SafeServiceLocator.Current.GetInstance <BindableObjectGlobalizationService>()));

            Assert.That(property.ReferenceClass, Is.SameAs(BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(ClassDerivedFromBindableObjectBase))));
            Assert.That(
                property.BusinessObjectProvider,
                Is.SameAs(BindableObjectProvider.GetProviderForBindableObjectType(typeof(ClassWithReferenceToClassDerivedFromBindableObjectBase))));
            Assert.That(
                property.ReferenceClass.BusinessObjectProvider,
                Is.SameAs(BindableObjectProvider.GetProviderForBindableObjectType(typeof(ClassDerivedFromBindableObjectBase))));
            Assert.That(property.ReferenceClass.BusinessObjectProvider, Is.SameAs(property.BusinessObjectProvider));
        }
コード例 #3
0
        public override void SetUp()
        {
            base.SetUp();

            _values    = new IBusinessObject[5];
            _values[0] = (IBusinessObject)TypeWithString.Create("0", "A");
            _values[1] = (IBusinessObject)TypeWithString.Create("1", "A");
            _values[2] = (IBusinessObject)TypeWithString.Create("2", "B");
            _values[3] = (IBusinessObject)TypeWithString.Create("3", "B");
            _values[4] = (IBusinessObject)TypeWithString.Create("4", "C");

            _newValues    = new IBusinessObject[2];
            _newValues[0] = (IBusinessObject)TypeWithString.Create("5", "C");
            _newValues[1] = (IBusinessObject)TypeWithString.Create("6", "D");

            _typeWithStringClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithString));

            _typeWithStringFirstValuePath  = BusinessObjectPropertyPath.CreateStatic(_typeWithStringClass, "FirstValue");
            _typeWithStringSecondValuePath = BusinessObjectPropertyPath.CreateStatic(_typeWithStringClass, "SecondValue");

            _typeWithStringFirstValueSimpleColumn = new BocSimpleColumnDefinition();
            _typeWithStringFirstValueSimpleColumn.SetPropertyPath(_typeWithStringFirstValuePath);

            _typeWithStringSecondValueSimpleColumn = new BocSimpleColumnDefinition();
            _typeWithStringSecondValueSimpleColumn.SetPropertyPath(_typeWithStringSecondValuePath);

            _bocList    = new BocListMock();
            _bocList.ID = "BocList";
            NamingContainer.Controls.Add(_bocList);

            _bocList.LoadUnboundValue(_values, false);
            _bocList.SwitchListIntoEditMode();

            Assert.That(_bocList.IsListEditModeActive, Is.True);
        }
コード例 #4
0
        public void GetBusinessObjectClass_WithValidType()
        {
            _dataSource.Type = typeof(SimpleBusinessObjectClass);
            Type type = typeof(SimpleBusinessObjectClass);

            ArgumentUtility.CheckNotNull("type", type);
            Assert.That(_dataSource.BusinessObjectClass, Is.SameAs(BindableObjectProviderTestHelper.GetBindableObjectClass(type)));
        }
コード例 #5
0
        public override void SetUp()
        {
            base.SetUp();

            _searchService = new GroupTypePropertyTypeSearchService();
            IBusinessObjectClass groupClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Group));

            _property = (IBusinessObjectReferenceProperty)groupClass.GetPropertyDefinition("GroupType");
            Assert.That(_property, Is.Not.Null);
        }
コード例 #6
0
        public override void SetUp()
        {
            base.SetUp();

            _searchService = new GroupPropertyTypeSearchService();
            IBusinessObjectClass userClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(User));

            _tenantProperty = (IBusinessObjectReferenceProperty)userClass.GetPropertyDefinition("Tenant");
            Assert.That(_tenantProperty, Is.Not.Null);
        }
コード例 #7
0
        public override void SetUp()
        {
            base.SetUp();

            _searchService = new SubstitutionPropertiesSearchService();
            IBusinessObjectClass substitutionClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Substitution));

            _otherProperty = (IBusinessObjectReferenceProperty)substitutionClass.GetPropertyDefinition("SubstitutedUser");
            Assert.That(_otherProperty, Is.Not.Null);
        }
コード例 #8
0
        private ReferenceProperty CreateProperty(string propertyName)
        {
            PropertyBase.Parameters propertyParameters =
                GetPropertyParameters(GetPropertyInfo(typeof(ClassWithBusinessObjectProperties), propertyName), _bindableObjectProviderForDeclaringType);
            ReferenceProperty property = new ReferenceProperty(propertyParameters);

            property.SetReflectedClass(BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(ClassWithBusinessObjectProperties)));

            return(property);
        }
コード例 #9
0
        public virtual void SetUp()
        {
            _stringValueClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithString));

            _stringValuePropertyPath = BusinessObjectPropertyPath.CreateStatic(_stringValueClass, "FirstValue");

            _stringValueColumn = new BocSimpleColumnDefinition();
            _stringValueColumn.SetPropertyPath(_stringValuePropertyPath);

            _factory = EditableRowControlFactory.CreateEditableRowControlFactory();
        }
コード例 #10
0
        public override void SetUp()
        {
            base.SetUp();

            _searchService = new RolePropertiesSearchService();

            IBusinessObjectClass roleClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role));

            _positionProperty = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("Position");
            Assert.That(_positionProperty, Is.Not.Null);
        }
コード例 #11
0
        public override void SetUp()
        {
            base.SetUp();

            _aceClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(AccessControlEntry));

            _testHelper = new AccessControlTestHelper();
            _testHelper.Transaction.EnterNonDiscardingScope();

            _ace = AccessControlEntry.NewObject();
        }
コード例 #12
0
        public override void SetUp()
        {
            base.SetUp();

            _searchService = new SubstitutionPropertiesSearchService();
            IBusinessObjectClass substitutionClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Substitution));

            _substitutedRoleProperty = (IBusinessObjectReferenceProperty)substitutionClass.GetPropertyDefinition("SubstitutedRole");
            Assert.That(_substitutedRoleProperty, Is.Not.Null);

            _user = User.FindByUserName("group0/user1");
            Assert.That(_user, Is.Not.Null);
        }
コード例 #13
0
        public override void SetUp()
        {
            base.SetUp();

            _testHelper = new OrganizationalStructureTestHelper();
            _testHelper.Transaction.EnterNonDiscardingScope();

            _searchService = new AbstractRoleDefinitionPropertyTypeSearchService();
            IBusinessObjectClass aceClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(AccessControlEntry));

            _property = (IBusinessObjectReferenceProperty)aceClass.GetPropertyDefinition("AccessControlList");
            Assert.That(_property, Is.Not.Null);
        }
コード例 #14
0
        public override void SetUp()
        {
            base.SetUp();

            _searchService = new UserPropertyTypeSearchService();
            IBusinessObjectClass roleClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role));

            _property = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("User");
            Assert.That(_property, Is.Not.Null);

            var user = User.FindByUserName("group0/user1");

            Assert.That(user, Is.Not.Null);

            _tenantConstraint = new TenantConstraint(user.Tenant.GetHandle());
        }
コード例 #15
0
        public override void SetUp()
        {
            base.SetUp();

            _searchService = new GroupPropertyTypeSearchService();
            IBusinessObjectClass roleClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role));

            _property = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("Group");
            Assert.That(_property, Is.Not.Null);

            var group = Group.FindByUnqiueIdentifier("UID: group0");

            Assert.That(group, Is.Not.Null);

            _tenantConstraint = new TenantConstraint(group.Tenant.GetHandle());
        }
コード例 #16
0
        public override void SetUp()
        {
            base.SetUp();

            _editModeHost                           = new FakeEditModeHost();
            _editModeHost.ID                        = "BocList";
            _editModeHost.RowIDProvider             = new FakeRowIDProvider();
            _editModeHost.EditModeControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();
            _editModeHost.EditModeDataSourceFactory = new EditableRowDataSourceFactory();

            _editableRow    = new EditableRow(_editModeHost);
            _editableRow.ID = "Row";
            NamingContainer.Controls.Add(_editableRow);

            _value01 = (IBusinessObject)TypeWithAllDataTypes.Create("A", 1);

            _typeWithAllDataTypesClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithAllDataTypes));

            _typeWithAllDataTypesStringValuePath = BusinessObjectPropertyPath.CreateStatic(_typeWithAllDataTypesClass, "String");
            _typeWithAllDataTypesInt32ValuePath  = BusinessObjectPropertyPath.CreateStatic(_typeWithAllDataTypesClass, "Int32");

            _typeWithAllDataTypesStringValueSimpleColumn = new BocSimpleColumnDefinition();
            _typeWithAllDataTypesStringValueSimpleColumn.SetPropertyPath(_typeWithAllDataTypesStringValuePath);

            _typeWithAllDataTypesStringValueSimpleColumnAsDynamic = new BocSimpleColumnDefinition();
            _typeWithAllDataTypesStringValueSimpleColumnAsDynamic.SetPropertyPath(BusinessObjectPropertyPath.CreateDynamic("StringValue"));
            _typeWithAllDataTypesStringValueSimpleColumnAsDynamic.IsDynamic = true;

            _typeWithAllDataTypesInt32ValueSimpleColumn = new BocSimpleColumnDefinition();
            _typeWithAllDataTypesInt32ValueSimpleColumn.SetPropertyPath(_typeWithAllDataTypesInt32ValuePath);

            _typeWithAllDataTypesStringValueFirstValueCompoundColumn = new BocCompoundColumnDefinition();
            _typeWithAllDataTypesStringValueFirstValueCompoundColumn.PropertyPathBindings.Add(
                new PropertyPathBinding(_typeWithAllDataTypesStringValuePath));
            _typeWithAllDataTypesStringValueFirstValueCompoundColumn.PropertyPathBindings.Add(
                new PropertyPathBinding(_typeWithAllDataTypesStringValuePath));
            _typeWithAllDataTypesStringValueFirstValueCompoundColumn.FormatString = "{0}, {1}";

            _typeWithAllDataTypesStringValueCustomColumn = new BocCustomColumnDefinition();
            _typeWithAllDataTypesStringValueCustomColumn.SetPropertyPath(_typeWithAllDataTypesStringValuePath);
            _typeWithAllDataTypesStringValueCustomColumn.IsSortable = true;

            _commandColumn      = new BocCommandColumnDefinition();
            _rowEditModeColumn  = new BocRowEditModeColumnDefinition();
            _dropDownMenuColumn = new BocDropDownMenuColumnDefinition();
        }
        public void Compare_List()
        {
            var valueAA = TypeWithString.Create();

            valueAA.StringArray = new[] { "A", "A" };

            var valueBA = TypeWithString.Create();

            valueBA.StringArray = new[] { "B", "A" };

            var valueAB = TypeWithString.Create();

            valueAB.StringArray = new[] { "A", "B" };

            var valueNull = TypeWithString.Create();

            valueNull.StringArray = null;

            var valueEmpty = TypeWithString.Create();

            valueEmpty.StringArray = new string[0];

            var bindableObjectClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithString));

            var propertyPath = BusinessObjectPropertyPath.CreateStatic(bindableObjectClass, "StringArray");
            var comparer     = new BusinessObjectPropertyPathBasedComparer(propertyPath);

            CompareEqualValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueAA);
            CompareEqualValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueAB);
            CompareEqualValues(comparer, (IBusinessObject)valueNull, (IBusinessObject)valueNull);
            CompareEqualValues(comparer, (IBusinessObject)valueEmpty, (IBusinessObject)valueEmpty);

            CompareAscendingValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueBA);
            CompareAscendingValues(comparer, (IBusinessObject)valueNull, (IBusinessObject)valueAA);
            CompareAscendingValues(comparer, (IBusinessObject)valueEmpty, (IBusinessObject)valueAA);
            CompareAscendingValues(comparer, (IBusinessObject)valueNull, (IBusinessObject)valueEmpty);

            CompareDescendingValues(comparer, (IBusinessObject)valueBA, (IBusinessObject)valueAA);
            CompareDescendingValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueNull);
            CompareDescendingValues(comparer, (IBusinessObject)valueAA, (IBusinessObject)valueEmpty);
            CompareDescendingValues(comparer, (IBusinessObject)valueEmpty, (IBusinessObject)valueNull);
        }
        public void Compare_ReferenceValues()
        {
            var valueA = TypeWithReference.Create();

            valueA.ReferenceValue = TypeWithReference.Create("A");

            var valueB = TypeWithReference.Create();

            valueB.ReferenceValue = TypeWithReference.Create("B");

            var valueNull = TypeWithReference.Create();

            valueNull.ReferenceValue = null;

            var bindableObjectClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithReference));

            var propertyPath = BusinessObjectPropertyPath.CreateStatic(bindableObjectClass, "ReferenceValue");
            var comparer     = new BusinessObjectPropertyPathBasedComparer(propertyPath);

            AssertCompare(comparer, valueA, valueB, valueNull);
        }
        public void Compare_StringValues()
        {
            var valueA = TypeWithAllDataTypes.Create();

            valueA.String = "A";

            var valueB = TypeWithAllDataTypes.Create();

            valueB.String = "B";

            var valueNull = TypeWithAllDataTypes.Create();

            valueNull.String = null;

            var bindableObjectClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithAllDataTypes));

            var propertyPath = BusinessObjectPropertyPath.CreateStatic(bindableObjectClass, "String");
            var comparer     = new BusinessObjectPropertyPathBasedComparer(propertyPath);

            AssertCompare(comparer, valueA, valueB, valueNull);
        }
コード例 #20
0
        public override void SetUp()
        {
            base.SetUp();

            _mocks = new MockRepository();
            _mockSecurityProvider = (ISecurityProvider)_mocks.StrictMock(typeof(ISecurityProvider));
            SetupResult.For(_mockSecurityProvider.IsNull).Return(false);
            _mockPrincipalProvider          = (IPrincipalProvider)_mocks.StrictMock(typeof(IPrincipalProvider));
            _stubFunctionalSecurityStrategy = _mocks.StrictMock <IFunctionalSecurityStrategy>();

            var serviceLocator = DefaultServiceLocator.Create();

            serviceLocator.RegisterSingle(() => _stubFunctionalSecurityStrategy);
            serviceLocator.RegisterSingle(() => _mockSecurityProvider);
            serviceLocator.RegisterSingle(() => _mockPrincipalProvider);
            _serviceLocatorScope = new ServiceLocatorScope(serviceLocator);

            _searchService = new RolePropertiesSearchService();

            IBusinessObjectClass roleClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role));

            _positionProperty = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("Position");
            Assert.That(_positionProperty, Is.Not.Null);
        }
コード例 #21
0
        public void SearchPositions()
        {
            ISearchAvailableObjectsService   searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService> ();
            ISearchAvailableObjectsArguments args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments> ();

            BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null);
            BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute>()
            .AddService(typeof(RolePropertiesSearchService), searchServiceStub);
            IBusinessObjectClass             roleClass        = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Role));
            IBusinessObjectReferenceProperty positionProperty = (IBusinessObjectReferenceProperty)roleClass.GetPropertyDefinition("Position");

            Assert.That(positionProperty, Is.Not.Null);

            Role role     = Role.NewObject();
            var  expected = new[] { MockRepository.GenerateStub <IBusinessObject> () };

            searchServiceStub.Stub(stub => stub.SupportsProperty(positionProperty)).Return(true);
            searchServiceStub.Stub(stub => stub.Search(role, positionProperty, args)).Return(expected);

            Assert.That(positionProperty.SupportsSearchAvailableObjects, Is.True);

            IBusinessObject[] actual = positionProperty.SearchAvailableObjects(role, args);
            Assert.That(actual, Is.SameAs(expected));
        }
コード例 #22
0
        public void SearchOwningGroups()
        {
            ISearchAvailableObjectsService   searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService>();
            ISearchAvailableObjectsArguments args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments>();

            BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null);
            BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute>()
            .AddService(typeof(GroupPropertyTypeSearchService), searchServiceStub);
            IBusinessObjectClass             userClass           = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(User));
            IBusinessObjectReferenceProperty owningGroupProperty = (IBusinessObjectReferenceProperty)userClass.GetPropertyDefinition("OwningGroup");

            Assert.That(owningGroupProperty, Is.Not.Null);

            User user     = CreateUser();
            var  expected = new[] { MockRepository.GenerateStub <IBusinessObject> () };

            searchServiceStub.Stub(stub => stub.SupportsProperty(owningGroupProperty)).Return(true);
            searchServiceStub.Stub(stub => stub.Search(user, owningGroupProperty, args)).Return(expected);

            Assert.That(owningGroupProperty.SupportsSearchAvailableObjects, Is.True);

            IBusinessObject[] actual = owningGroupProperty.SearchAvailableObjects(user, args);
            Assert.That(actual, Is.SameAs(expected));
        }
コード例 #23
0
        public void SearchGroupTypes()
        {
            var searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService>();
            var args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments>();

            BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null);
            BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute>()
            .AddService(typeof(GroupTypePropertyTypeSearchService), searchServiceStub);
            var groupTypePositionClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(GroupTypePosition));
            var groupTypeProperty      = (IBusinessObjectReferenceProperty)groupTypePositionClass.GetPropertyDefinition("GroupType");

            Assert.That(groupTypeProperty, Is.Not.Null);

            var groupTypePosition = CreateGroupTypePosition();
            var expected          = new[] { MockRepository.GenerateStub <IBusinessObject> () };

            searchServiceStub.Stub(stub => stub.SupportsProperty(groupTypeProperty)).Return(true);
            searchServiceStub.Stub(stub => stub.Search(groupTypePosition, groupTypeProperty, args)).Return(expected);

            Assert.That(groupTypeProperty.SupportsSearchAvailableObjects, Is.True);

            IBusinessObject[] actual = groupTypeProperty.SearchAvailableObjects(groupTypePosition, args);
            Assert.That(actual, Is.SameAs(expected));
        }
コード例 #24
0
        public void SearchParents()
        {
            ISearchAvailableObjectsService   searchServiceStub = MockRepository.GenerateStub <ISearchAvailableObjectsService>();
            ISearchAvailableObjectsArguments args = MockRepository.GenerateStub <ISearchAvailableObjectsArguments>();

            BusinessObjectProvider.SetProvider(typeof(BindableDomainObjectProviderAttribute), null);
            BusinessObjectProvider.GetProvider <BindableDomainObjectProviderAttribute>()
            .AddService(typeof(TenantPropertyTypeSearchService), searchServiceStub);
            IBusinessObjectClass             tenantClass    = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(Tenant));
            IBusinessObjectReferenceProperty parentProperty = (IBusinessObjectReferenceProperty)tenantClass.GetPropertyDefinition("Parent");

            Assert.That(parentProperty, Is.Not.Null);

            Tenant tenant   = TestHelper.CreateTenant("TestTenant", string.Empty);
            var    expected = new[] { MockRepository.GenerateStub <IBusinessObject> () };

            searchServiceStub.Stub(stub => stub.SupportsProperty(parentProperty)).Return(true);
            searchServiceStub.Stub(stub => stub.Search(tenant, parentProperty, args)).Return(expected);

            Assert.That(parentProperty.SupportsSearchAvailableObjects, Is.True);

            IBusinessObject[] actual = parentProperty.SearchAvailableObjects(tenant, args);
            Assert.That(actual, Is.SameAs(expected));
        }
コード例 #25
0
        public override void SetUp()
        {
            base.SetUp();

            _actualEvents = new StringCollection();

            _values    = new IBusinessObject[5];
            _values[0] = (IBusinessObject)TypeWithAllDataTypes.Create("A", 1);
            _values[1] = (IBusinessObject)TypeWithAllDataTypes.Create("B", 2);
            _values[2] = (IBusinessObject)TypeWithAllDataTypes.Create("C", 3);
            _values[3] = (IBusinessObject)TypeWithAllDataTypes.Create("D", 4);
            _values[4] = (IBusinessObject)TypeWithAllDataTypes.Create("E", 5);

            _newValues    = new IBusinessObject[2];
            _newValues[0] = (IBusinessObject)TypeWithAllDataTypes.Create("F", 6);
            _newValues[1] = (IBusinessObject)TypeWithAllDataTypes.Create("G", 7);

            _class = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithAllDataTypes));

            _stringValuePath = BusinessObjectPropertyPath.CreateStatic(_class, "String");
            _int32ValuePath  = BusinessObjectPropertyPath.CreateStatic(_class, "Int32");

            _stringValueSimpleColumn = new BocSimpleColumnDefinition();
            _stringValueSimpleColumn.SetPropertyPath(_stringValuePath);

            _int32ValueSimpleColumn = new BocSimpleColumnDefinition();
            _int32ValueSimpleColumn.SetPropertyPath(_int32ValuePath);

            _columns    = new BocColumnDefinition[2];
            _columns[0] = _stringValueSimpleColumn;
            _columns[1] = _int32ValueSimpleColumn;

            _editModeHost    = new FakeEditModeHost();
            _editModeHost.ID = "BocList";

            _controller    = new EditModeController(_editModeHost);
            _controller.ID = "Controller";
            NamingContainer.Controls.Add(_controller);

            _controllerInvoker = new ControlInvoker(_controller);

            _editModeHost.NotifyOnEditableRowChangesCanceled  = (i, o) => _actualEvents.Add(FormatChangesCanceledEventMessage(i, o));
            _editModeHost.NotifyOnEditableRowChangesCanceling = (i, o) => _actualEvents.Add(FormatChangesCancelingEventMessage(i, o));
            _editModeHost.NotifyOnEditableRowChangesSaved     = (i, o) => _actualEvents.Add(FormatChangesSavedEventMessage(i, o));
            _editModeHost.NotifyOnEditableRowChangesSaving    = (i, o) => _actualEvents.Add(FormatChangesSavingEventMessage(i, o));
            _editModeHost.NotifyAddRows =
                objects =>
            {
                var oldLength = _editModeHost.Value.Count;
                _editModeHost.Value = ((IBusinessObject[])_editModeHost.Value).Concat(objects).ToArray();
                return(((IBusinessObject[])_editModeHost.Value).Select((o, i) => new BocListRow(i, o)).Skip(oldLength).ToArray());
            };
            _editModeHost.NotifyRemoveRows =
                objects =>
            {
                var removedRows = ((IBusinessObject[])_editModeHost.Value)
                                  .Select((o, i) => new BocListRow(i, o))
                                  .Where(r => objects.Contains(r.BusinessObject))
                                  .ToArray();
                _editModeHost.Value = ((IBusinessObject[])_editModeHost.Value).Except(objects).ToArray();
                return(removedRows);
            };
            _editModeHost.NotifyEndRowEditModeCleanUp  = i => _actualEvents.Add(FormatEndRowEditModeCleanUp(i));
            _editModeHost.NotifyEndListEditModeCleanUp = () => _actualEvents.Add(FormatEndListEditModeCleanUp());
            _editModeHost.NotifyValidateEditableRows   = () => _actualEvents.Add(FormatValidateEditableRows());
            _editModeHost.Value                     = _values;
            _editModeHost.RowIDProvider             = new FakeRowIDProvider();
            _editModeHost.EditModeControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();
            _editModeHost.EditModeDataSourceFactory = new EditableRowDataSourceFactory();
            _editModeHost.EnableEditModeValidator   = true;
            _editModeHost.AreCustomCellsValid       = true;
        }