public void GetTrackedIDs()
        {
            Invoker.InitRecursive();

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[3];
            columns[0] = _typeWithAllDataTypesStringValueSimpleColumn;
            columns[1] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[2] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);

            IBusinessObjectReferenceDataSource dataSource = _editableRow.GetDataSource();

            dataSource.LoadValues(false);

            string id = "NamingContainer_Row_{0}_Value";

            string[] trackedIDs = new string[2];
            trackedIDs[0] = string.Format(id, 0);
            trackedIDs[1] = string.Format(id, 1);

            Assert.That(_editableRow.GetTrackedClientIDs(), Is.EqualTo(trackedIDs));
        }
        public void HasValidatorsWithoutCreateControls()
        {
            Invoker.InitRecursive();

            Assert.That(_editableRow.HasValidators(), Is.False);
            Assert.That(_editableRow.HasValidators(0), Is.False);
            Assert.That(_editableRow.HasValidators(1), Is.False);

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            _editableRow.EnsureValidatorsRestored();

            Assert.That(_editableRow.HasValidators(), Is.False);
            Assert.That(_editableRow.HasValidators(0), Is.False);
            Assert.That(_editableRow.HasValidators(1), Is.False);

            BocColumnDefinition[] columns = new BocColumnDefinition[2];
            columns[0] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[1] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);

            Assert.That(_editableRow.HasValidators(), Is.True);
            Assert.That(_editableRow.HasValidators(0), Is.True);
            Assert.That(_editableRow.HasValidators(1), Is.False);

            _editableRow.EnsureValidatorsRestored();

            Assert.That(_editableRow.HasValidators(), Is.True);
            Assert.That(_editableRow.HasValidators(0), Is.True);
            Assert.That(_editableRow.HasValidators(1), Is.False);
        }
        public void SaveValue()
        {
            Invoker.InitRecursive();

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[2];
            columns[0] = _typeWithAllDataTypesStringValueSimpleColumn;
            columns[1] = _typeWithAllDataTypesInt32ValueSimpleColumn;

            _editableRow.CreateControls(_value01, columns);

            IBusinessObjectReferenceDataSource dataSource = _editableRow.GetDataSource();

            dataSource.LoadValues(false);

            BocTextValue textBoxStringValue = (BocTextValue)_editableRow.GetEditControl(0);
            BocTextValue textBoxInt32Value  = (BocTextValue)_editableRow.GetEditControl(1);

            Assert.That(textBoxStringValue.Value, Is.EqualTo("A"));
            Assert.That(textBoxInt32Value.Value, Is.EqualTo(1));

            textBoxStringValue.Value = "New Value A";
            textBoxInt32Value.Value  = "100";

            dataSource.SaveValues(false);

            Assert.That(((TypeWithAllDataTypes)_value01).String, Is.EqualTo("New Value A"));
            Assert.That(((TypeWithAllDataTypes)_value01).Int32, Is.EqualTo(100));
        }
        public void GetEditControl()
        {
            Invoker.InitRecursive();

            Assert.That(_editableRow.HasEditControls(), Is.False);
            Assert.That(_editableRow.HasEditControl(0), Is.False);
            Assert.That(_editableRow.HasEditControl(0), Is.False);

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[2];
            columns[0] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[1] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);

            Assert.That(_editableRow.HasEditControls(), Is.True);
            Assert.That(_editableRow.HasEditControl(0), Is.True);
            Assert.That(_editableRow.HasEditControl(1), Is.False);

            IBusinessObjectBoundEditableWebControl control = _editableRow.GetEditControl(0);

            Assert.That(control, Is.Not.Null);
            Assert.That(control is BocTextValue, Is.True);

            Assert.That(_editableRow.GetEditControl(1), Is.Null);
        }
        public void PrepareValidation()
        {
            Invoker.InitRecursive();

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[3];
            columns[0] = _typeWithAllDataTypesStringValueSimpleColumn;
            columns[1] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[2] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);
            _editableRow.EnsureValidatorsRestored();

            IBusinessObjectReferenceDataSource dataSource = _editableRow.GetDataSource();

            dataSource.LoadValues(false);

            BocTextValue stringValueField = (BocTextValue)_editableRow.GetEditControl(0);
            BocTextValue int32ValueField  = (BocTextValue)_editableRow.GetEditControl(1);

            _editableRow.PrepareValidation();

            Assert.That(stringValueField.Text, Is.EqualTo(stringValueField.Text));
            Assert.That(int32ValueField.Text, Is.EqualTo(int32ValueField.Text));
        }
        public void IsDirty()
        {
            Invoker.InitRecursive();

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[3];
            columns[0] = _typeWithAllDataTypesStringValueSimpleColumn;
            columns[1] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[2] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);

            IBusinessObjectReferenceDataSource dataSource = _editableRow.GetDataSource();

            dataSource.LoadValues(false);

            Assert.That(_editableRow.IsDirty(), Is.False);

            BocTextValue textBoxStringValue = (BocTextValue)_editableRow.GetEditControl(0);

            textBoxStringValue.Value = "a";

            Assert.That(_editableRow.IsDirty(), Is.True);
        }
        public void GetValidatorsWithoutCreateControls()
        {
            Invoker.InitRecursive();

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            _editableRow.EnsureValidatorsRestored();

            BocColumnDefinition[] columns = new BocColumnDefinition[2];
            columns[0] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[1] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);
            _editableRow.EnsureValidatorsRestored();

            Assert.That(_editableRow.HasValidators(), Is.True);
            Assert.That(_editableRow.HasValidators(0), Is.True);
            Assert.That(_editableRow.HasValidators(1), Is.False);

            ControlCollection validators = _editableRow.GetValidators(0);

            Assert.That(validators, Is.Not.Null);
            Assert.That(validators.Count, Is.EqualTo(2));
            Assert.That(validators[0] is RequiredFieldValidator, Is.True);
            Assert.That(validators[1] is NumericValidator, Is.True);

            Assert.That(_editableRow.GetValidators(1), Is.Null);
        }
        public void CreateControlsWithColumns()
        {
            Invoker.InitRecursive();

            Assert.That(_editableRow.HasEditControls(), Is.False);
            Assert.That(_editableRow.HasValidators(), Is.False);
            Assert.That(_editableRow.HasEditControl(0), Is.False);

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[8];
            columns[0] = _typeWithAllDataTypesStringValueSimpleColumn;
            columns[1] = _typeWithAllDataTypesStringValueFirstValueCompoundColumn;
            columns[2] = _typeWithAllDataTypesStringValueCustomColumn;
            columns[3] = _commandColumn;
            columns[4] = _rowEditModeColumn;
            columns[5] = _dropDownMenuColumn;
            columns[6] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[7] = _typeWithAllDataTypesStringValueSimpleColumnAsDynamic;

            _editableRow.CreateControls(_value01, columns);

            Assert.That(_editableRow.HasEditControls(), Is.True);
            Assert.That(_editableRow.HasValidators(), Is.True);

            Assert.That(_editableRow.DataSourceFactory, Is.Not.Null);
            Assert.That(_editableRow.ControlFactory, Is.Not.Null);

            IBusinessObjectReferenceDataSource dataSource = _editableRow.GetDataSource();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.BusinessObject, Is.SameAs(_value01));

            Assert.That(_editableRow.HasEditControl(0), Is.True);
            Assert.That(_editableRow.HasEditControl(1), Is.False);
            Assert.That(_editableRow.HasEditControl(2), Is.False);
            Assert.That(_editableRow.HasEditControl(3), Is.False);
            Assert.That(_editableRow.HasEditControl(4), Is.False);
            Assert.That(_editableRow.HasEditControl(5), Is.False);
            Assert.That(_editableRow.HasEditControl(6), Is.True);
            Assert.That(_editableRow.HasEditControl(7), Is.False);

            IBusinessObjectBoundEditableWebControl textBoxFirstValue = _editableRow.GetEditControl(0);

            Assert.That(textBoxFirstValue is BocTextValue, Is.True);
            Assert.That(textBoxFirstValue.DataSource, Is.SameAs(dataSource));
            Assert.That(textBoxFirstValue.Property, Is.SameAs(_typeWithAllDataTypesStringValuePath.Properties.Last()));

            IBusinessObjectBoundEditableWebControl textBoxSecondValue = _editableRow.GetEditControl(6);

            Assert.That(textBoxSecondValue is BocTextValue, Is.True);
            Assert.That(textBoxSecondValue.DataSource, Is.SameAs(dataSource));
            Assert.That(textBoxSecondValue.Property, Is.SameAs(_typeWithAllDataTypesInt32ValuePath.Properties.Last()));
        }
        public virtual void SetUp()
        {
            _stringValueClass = BindableObjectProviderTestHelper.GetBindableObjectClass(typeof(TypeWithString));

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

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

            _factory = EditableRowControlFactory.CreateEditableRowControlFactory();
        }
        public void GetFactoriesFromOwnerControl()
        {
            EditModeHost.EditModeDataSourceFactory = new EditableRowDataSourceFactory();
            EditModeHost.EditModeControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            Invoker.InitRecursive();
            Controller.SwitchRowIntoEditMode(0, Columns);
            EditableRow row = (EditableRow)Controller.Controls[0];

            Assert.That(row.DataSourceFactory, Is.SameAs(EditModeHost.EditModeDataSourceFactory));
            Assert.That(row.ControlFactory, Is.SameAs(EditModeHost.EditModeControlFactory));
        }
        public void GetEditControlWithIndexOutOfPositiveRange()
        {
            Invoker.InitRecursive();

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[2];
            columns[0] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[1] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);

            _editableRow.HasEditControl(3);
        }
        public void GetValidatorsWithNegativeIndex()
        {
            Invoker.InitRecursive();

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[2];
            columns[0] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[1] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);
            _editableRow.EnsureValidatorsRestored();

            _editableRow.GetValidators(-1);
        }
        public void EnsureValidatorsWithoutCreateControls()
        {
            Invoker.InitRecursive();

            Assert.That(_editableRow.HasValidators(), Is.False);

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            _editableRow.EnsureValidatorsRestored();

            Assert.That(_editableRow.HasValidators(), Is.False);

            BocColumnDefinition[] columns = new BocColumnDefinition[7];
            columns[0] = _typeWithAllDataTypesStringValueSimpleColumn;
            columns[1] = _typeWithAllDataTypesStringValueFirstValueCompoundColumn;
            columns[2] = _typeWithAllDataTypesStringValueCustomColumn;
            columns[3] = _commandColumn;
            columns[4] = _rowEditModeColumn;
            columns[5] = _dropDownMenuColumn;
            columns[6] = _typeWithAllDataTypesInt32ValueSimpleColumn;

            _editableRow.CreateControls(_value01, columns);
            _editableRow.EnsureValidatorsRestored();

            Assert.That(_editableRow.HasValidators(), Is.True);

            Assert.That(_editableRow.HasValidators(0), Is.True);
            Assert.That(_editableRow.HasValidators(1), Is.False);
            Assert.That(_editableRow.HasValidators(2), Is.False);
            Assert.That(_editableRow.HasValidators(3), Is.False);
            Assert.That(_editableRow.HasValidators(4), Is.False);
            Assert.That(_editableRow.HasValidators(5), Is.False);
            Assert.That(_editableRow.HasValidators(6), Is.True);

            ControlCollection validators0 = _editableRow.GetValidators(0);

            Assert.That(validators0, Is.Not.Null);
            Assert.That(validators0.Count, Is.EqualTo(0));

            ControlCollection validators6 = _editableRow.GetValidators(6);

            Assert.That(validators6, Is.Not.Null);
            Assert.That(validators6.Count, Is.EqualTo(2));
            Assert.That(validators6[0] is RequiredFieldValidator, Is.True);
            Assert.That(validators6[1] is NumericValidator, Is.True);
        }
        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 IsRequired()
        {
            Invoker.InitRecursive();

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[3];
            columns[0] = _typeWithAllDataTypesStringValueSimpleColumn;
            columns[1] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[2] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);

            Assert.That(_editableRow.IsRequired(0), Is.False);
            Assert.That(_editableRow.IsRequired(1), Is.True);
            Assert.That(_editableRow.IsRequired(2), Is.False);
        }
        public void RegisterHtmlHeadContents(
            HtmlHeadAppender htmlHeadAppender, EditableRowControlFactory editableRowControlFactory)
        {
            ArgumentUtility.CheckNotNull("htmlHeadAppender", htmlHeadAppender);

            htmlHeadAppender.RegisterUtilitiesJavaScriptInclude();

            string styleFileKey = typeof(BocListRenderer).FullName + "_Style";
            var    styleUrl     = ResourceUrlFactory.CreateThemedResourceUrl(typeof(BocListRenderer), ResourceType.Html, "BocList.css");

            htmlHeadAppender.RegisterStylesheetLink(styleFileKey, styleUrl, HtmlHeadAppender.Priority.Library);

            string scriptFileKey = typeof(BocListRenderer).FullName + "_Script";
            var    scriptUrl     = ResourceUrlFactory.CreateResourceUrl(typeof(BocListRenderer), ResourceType.Html, "BocList.js");

            htmlHeadAppender.RegisterJavaScriptInclude(scriptFileKey, scriptUrl);

            editableRowControlFactory.RegisterHtmlHeadContents(htmlHeadAppender);
        }
        public void ValidateWithInvalidValues()
        {
            Invoker.InitRecursive();

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            BocColumnDefinition[] columns = new BocColumnDefinition[3];
            columns[0] = _typeWithAllDataTypesStringValueSimpleColumn;
            columns[1] = _typeWithAllDataTypesInt32ValueSimpleColumn;
            columns[2] = _commandColumn;

            _editableRow.CreateControls(_value01, columns);
            _editableRow.EnsureValidatorsRestored();

            IBusinessObjectReferenceDataSource dataSource = _editableRow.GetDataSource();

            dataSource.LoadValues(false);

            SetValues(_editableRow, "A", "");

            Assert.That(_editableRow.Validate(), Is.False);
        }
        public void CreateControlsWithEmptyColumns()
        {
            Invoker.InitRecursive();

            Assert.That(_editableRow.HasEditControls(), Is.False);
            Assert.That(_editableRow.HasValidators(), Is.False);

            _editableRow.DataSourceFactory = new EditableRowDataSourceFactory();
            _editableRow.ControlFactory    = EditableRowControlFactory.CreateEditableRowControlFactory();

            _editableRow.CreateControls(_value01, new BocColumnDefinition[0]);

            Assert.That(_editableRow.HasEditControls(), Is.True);
            Assert.That(_editableRow.HasValidators(), Is.True);

            Assert.That(_editableRow.DataSourceFactory, Is.Not.Null);
            Assert.That(_editableRow.ControlFactory, Is.Not.Null);

            IBusinessObjectReferenceDataSource dataSource = _editableRow.GetDataSource();

            Assert.That(dataSource, Is.Not.Null);
            Assert.That(dataSource.BusinessObject, Is.SameAs(_value01));
        }
        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;
        }
 public void CreateControlsDataSourceFactoryNull()
 {
     Invoker.InitRecursive();
     _editableRow.ControlFactory = EditableRowControlFactory.CreateEditableRowControlFactory();
     _editableRow.CreateControls(_value01, new BocColumnDefinition[0]);
 }