Example #1
0
        public void TestUsingOnlySources()
        {
            IBusinessObject obj = new BusinessObject();
            BindingPairHolder bindingPairHolder = new BindingPairHolder();

            using (BindingScope scope = new BindingScope(bindingPairHolder))
            {
                IBusinessObject source = scope.CreateSource(obj);

                Assert.IsNull(bindingPairHolder.ConsumeBindingPair());

                string name = source.Name;

                BindingPair pair = bindingPairHolder.ConsumeBindingPair();
                Assert.IsNotNull(pair);
                Assert.AreEqual(obj, pair.Object);
                Assert.AreEqual("Name", pair.Member);

                short number = source.ShortValue;

                BindingPair anotherPair = bindingPairHolder.ConsumeBindingPair();
                Assert.IsNotNull(anotherPair);
                Assert.AreEqual(obj, anotherPair.Object);
                Assert.AreEqual("ShortValue", anotherPair.Member);
            }
        }
Example #2
0
        public void TestTwoWayBindingWithPropertyChangeNotification()
        {
            IBusinessObject businessObject = new BusinessObject();
            businessObject.Name = "Foo";

            CheckBox checkbox = new CheckBox();
            checkbox.CreateControl();
            checkbox.BindingContext = new BindingContext();

            using (BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(businessObject);
                CheckBox bindableTarget = scope.CreateTarget(checkbox);

                scope.Bind(bindableSource.Name).To(bindableTarget.Text);

                Assert.AreEqual(1, checkbox.DataBindings.Count);

                Assert.AreSame(businessObject, checkbox.DataBindings[0].DataSource);

                Assert.AreEqual(businessObject.Name, checkbox.Text);

                checkbox.Text = "Bar";
                checkbox.DataBindings[0].WriteValue();

                Assert.AreEqual(checkbox.Text, businessObject.Name);

                businessObject.Name = "Baz";

                Assert.AreEqual(businessObject.Name, checkbox.Text);
            }
        }
Example #3
0
        public void TestUsingSourceOutsideScopeShouldFail()
        {
            IBusinessObject obj = new BusinessObject();

            IBusinessObject source;

            using (BindingScope scope = new BindingScope())
            {
                source = scope.CreateSource(obj);
            }

            string name = source.Name;
        }
Example #4
0
        public void TestOneWayBinding()
        {
            IBusinessObject businessObject = new BusinessObject();
            businessObject.Name = "Foo";

            TextBox textbox = new TextBox();
            textbox.CreateControl();
            textbox.BindingContext = new BindingContext();

            using (BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(businessObject);
                TextBox bindableTarget = scope.CreateTarget(textbox);
            }
        }
        public void TestBindingToContainerControl()
        {
            ContainerControl control = new ContainerControl();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                ContainerControl bindableTarget = scope.CreateTarget(control);
                int dataBindingsBeforeAccessibleDefaultActionDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDefaultActionDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDefaultActionDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                int dataBindingsBeforeAccessibleDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                int dataBindingsBeforeAccessibleName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleName);

                Assert.AreEqual(dataBindingsBeforeAccessibleName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleName, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleName, obj.Name);

                int dataBindingsBeforeHeight = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Height);

                Assert.AreEqual(dataBindingsBeforeHeight + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Height, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Height, obj.IntValue);

                int dataBindingsBeforeLeft = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Left);

                Assert.AreEqual(dataBindingsBeforeLeft + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Left, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Left, obj.IntValue);

                int dataBindingsBeforeName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Name);

                Assert.AreEqual(dataBindingsBeforeName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Name, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Name, obj.Name);

                int dataBindingsBeforeTabIndex = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TabIndex);

                Assert.AreEqual(dataBindingsBeforeTabIndex + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                int dataBindingsBeforeText = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Text);

                Assert.AreEqual(dataBindingsBeforeText + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Text, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Text, obj.Name);

                int dataBindingsBeforeTop = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Top);

                Assert.AreEqual(dataBindingsBeforeTop + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Top, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Top, obj.IntValue);

                int dataBindingsBeforeWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Width);

                Assert.AreEqual(dataBindingsBeforeWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Width, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Width, obj.IntValue);

            }
        }
        public void TestBindingToTrackBar()
        {
            TrackBar control = new TrackBar();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                TrackBar bindableTarget = scope.CreateTarget(control);
                int dataBindingsBeforeLargeChange = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.LargeChange);

                Assert.AreEqual(dataBindingsBeforeLargeChange + 1, control.DataBindings.Count);

                Assert.AreEqual(control.LargeChange, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.LargeChange, obj.IntValue);

                int dataBindingsBeforeMaximum = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Maximum);

                Assert.AreEqual(dataBindingsBeforeMaximum + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Maximum, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Maximum, obj.IntValue);

                int dataBindingsBeforeMinimum = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Minimum);

                Assert.AreEqual(dataBindingsBeforeMinimum + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Minimum, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Minimum, obj.IntValue);

                int dataBindingsBeforeSmallChange = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.SmallChange);

                Assert.AreEqual(dataBindingsBeforeSmallChange + 1, control.DataBindings.Count);

                Assert.AreEqual(control.SmallChange, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.SmallChange, obj.IntValue);

                int dataBindingsBeforeText = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Text);

                Assert.AreEqual(dataBindingsBeforeText + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Text, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Text, obj.Name);

                int dataBindingsBeforeTickFrequency = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TickFrequency);

                Assert.AreEqual(dataBindingsBeforeTickFrequency + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TickFrequency, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TickFrequency, obj.IntValue);

                int dataBindingsBeforeValue = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Value);

                Assert.AreEqual(dataBindingsBeforeValue + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Value, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Value, obj.IntValue);

                int dataBindingsBeforeAccessibleDefaultActionDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDefaultActionDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDefaultActionDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                int dataBindingsBeforeAccessibleDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                int dataBindingsBeforeAccessibleName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleName);

                Assert.AreEqual(dataBindingsBeforeAccessibleName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleName, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleName, obj.Name);

                int dataBindingsBeforeLeft = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Left);

                Assert.AreEqual(dataBindingsBeforeLeft + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Left, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Left, obj.IntValue);

                int dataBindingsBeforeName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Name);

                Assert.AreEqual(dataBindingsBeforeName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Name, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Name, obj.Name);

                int dataBindingsBeforeTabIndex = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TabIndex);

                Assert.AreEqual(dataBindingsBeforeTabIndex + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                int dataBindingsBeforeTop = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Top);

                Assert.AreEqual(dataBindingsBeforeTop + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Top, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Top, obj.IntValue);

                int dataBindingsBeforeWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Width);

                Assert.AreEqual(dataBindingsBeforeWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Width, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Width, obj.IntValue);

            }
        }
        public void TestBindingToToolStripDropDownMenu()
        {
            ToolStripDropDownMenu control = new ToolStripDropDownMenu();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                ToolStripDropDownMenu bindableTarget = scope.CreateTarget(control);

            }
        }
        public void TestBindingToComboBox()
        {
            ComboBox control = new ComboBox();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                ComboBox bindableTarget = scope.CreateTarget(control);
                int dataBindingsBeforeDropDownWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.DropDownWidth);

                Assert.AreEqual(dataBindingsBeforeDropDownWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.DropDownWidth, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.DropDownWidth, obj.IntValue);

                int dataBindingsBeforeDropDownHeight = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.DropDownHeight);

                Assert.AreEqual(dataBindingsBeforeDropDownHeight + 1, control.DataBindings.Count);

                Assert.AreEqual(control.DropDownHeight, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.DropDownHeight, obj.IntValue);

                int dataBindingsBeforeMaxDropDownItems = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.MaxDropDownItems);

                Assert.AreEqual(dataBindingsBeforeMaxDropDownItems + 1, control.DataBindings.Count);

                Assert.AreEqual(control.MaxDropDownItems, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.MaxDropDownItems, obj.IntValue);

                int dataBindingsBeforeMaxLength = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.MaxLength);

                Assert.AreEqual(dataBindingsBeforeMaxLength + 1, control.DataBindings.Count);

                Assert.AreEqual(control.MaxLength, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.MaxLength, obj.IntValue);

                int dataBindingsBeforeText = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Text);

                Assert.AreEqual(dataBindingsBeforeText + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Text, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Text, obj.Name);

                int dataBindingsBeforeDisplayMember = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.DisplayMember);

                Assert.AreEqual(dataBindingsBeforeDisplayMember + 1, control.DataBindings.Count);

                Assert.AreEqual(control.DisplayMember, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.DisplayMember, obj.Name);

                int dataBindingsBeforeFormatString = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.FormatString);

                Assert.AreEqual(dataBindingsBeforeFormatString + 1, control.DataBindings.Count);

                Assert.AreEqual(control.FormatString, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.FormatString, obj.Name);

                int dataBindingsBeforeValueMember = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.ValueMember);

                Assert.AreEqual(dataBindingsBeforeValueMember + 1, control.DataBindings.Count);

                Assert.AreEqual(control.ValueMember, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.ValueMember, obj.Name);

                int dataBindingsBeforeAccessibleDefaultActionDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDefaultActionDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDefaultActionDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                int dataBindingsBeforeAccessibleDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                int dataBindingsBeforeAccessibleName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleName);

                Assert.AreEqual(dataBindingsBeforeAccessibleName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleName, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleName, obj.Name);

                int dataBindingsBeforeLeft = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Left);

                Assert.AreEqual(dataBindingsBeforeLeft + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Left, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Left, obj.IntValue);

                int dataBindingsBeforeName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Name);

                Assert.AreEqual(dataBindingsBeforeName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Name, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Name, obj.Name);

                int dataBindingsBeforeTabIndex = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TabIndex);

                Assert.AreEqual(dataBindingsBeforeTabIndex + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                int dataBindingsBeforeTop = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Top);

                Assert.AreEqual(dataBindingsBeforeTop + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Top, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Top, obj.IntValue);

                int dataBindingsBeforeWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Width);

                Assert.AreEqual(dataBindingsBeforeWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Width, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Width, obj.IntValue);

            }
        }
        public void TestBindingToRichTextBox()
        {
            RichTextBox control = new RichTextBox();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                RichTextBox bindableTarget = scope.CreateTarget(control);
                int dataBindingsBeforeBulletIndent = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.BulletIndent);

                Assert.AreEqual(dataBindingsBeforeBulletIndent + 1, control.DataBindings.Count);

                Assert.AreEqual(control.BulletIndent, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.BulletIndent, obj.IntValue);

                int dataBindingsBeforeMaxLength = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.MaxLength);

                Assert.AreEqual(dataBindingsBeforeMaxLength + 1, control.DataBindings.Count);

                Assert.AreEqual(control.MaxLength, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.MaxLength, obj.IntValue);

                int dataBindingsBeforeRightMargin = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.RightMargin);

                Assert.AreEqual(dataBindingsBeforeRightMargin + 1, control.DataBindings.Count);

                Assert.AreEqual(control.RightMargin, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.RightMargin, obj.IntValue);

                int dataBindingsBeforeSelectionCharOffset = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.SelectionCharOffset);

                Assert.AreEqual(dataBindingsBeforeSelectionCharOffset + 1, control.DataBindings.Count);

                Assert.AreEqual(control.SelectionCharOffset, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.SelectionCharOffset, obj.IntValue);

                int dataBindingsBeforeSelectionHangingIndent = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.SelectionHangingIndent);

                Assert.AreEqual(dataBindingsBeforeSelectionHangingIndent + 1, control.DataBindings.Count);

                Assert.AreEqual(control.SelectionHangingIndent, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.SelectionHangingIndent, obj.IntValue);

                int dataBindingsBeforeSelectionIndent = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.SelectionIndent);

                Assert.AreEqual(dataBindingsBeforeSelectionIndent + 1, control.DataBindings.Count);

                Assert.AreEqual(control.SelectionIndent, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.SelectionIndent, obj.IntValue);

                int dataBindingsBeforeSelectionRightIndent = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.SelectionRightIndent);

                Assert.AreEqual(dataBindingsBeforeSelectionRightIndent + 1, control.DataBindings.Count);

                Assert.AreEqual(control.SelectionRightIndent, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.SelectionRightIndent, obj.IntValue);

                int dataBindingsBeforeText = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Text);

                Assert.AreEqual(dataBindingsBeforeText + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Text, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Text, obj.Name);

                int dataBindingsBeforeZoomFactor = control.DataBindings.Count;

                scope.Bind(bindableSource.FloatValue).To(bindableTarget.ZoomFactor);

                Assert.AreEqual(dataBindingsBeforeZoomFactor + 1, control.DataBindings.Count);

                Assert.AreEqual(control.ZoomFactor, obj.FloatValue);

                obj.ChangeFloatValue();

                Assert.AreEqual(control.ZoomFactor, obj.FloatValue);

                int dataBindingsBeforeHeight = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Height);

                Assert.AreEqual(dataBindingsBeforeHeight + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Height, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Height, obj.IntValue);

                int dataBindingsBeforeLeft = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Left);

                Assert.AreEqual(dataBindingsBeforeLeft + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Left, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Left, obj.IntValue);

                int dataBindingsBeforeName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Name);

                Assert.AreEqual(dataBindingsBeforeName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Name, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Name, obj.Name);

                int dataBindingsBeforeTabIndex = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TabIndex);

                Assert.AreEqual(dataBindingsBeforeTabIndex + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                int dataBindingsBeforeTop = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Top);

                Assert.AreEqual(dataBindingsBeforeTop + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Top, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Top, obj.IntValue);

                int dataBindingsBeforeWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Width);

                Assert.AreEqual(dataBindingsBeforeWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Width, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Width, obj.IntValue);

            }
        }
        public void TestBindingToProgressBar()
        {
            ProgressBar control = new ProgressBar();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                ProgressBar bindableTarget = scope.CreateTarget(control);
                int dataBindingsBeforeMarqueeAnimationSpeed = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.MarqueeAnimationSpeed);

                Assert.AreEqual(dataBindingsBeforeMarqueeAnimationSpeed + 1, control.DataBindings.Count);

                Assert.AreEqual(control.MarqueeAnimationSpeed, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.MarqueeAnimationSpeed, obj.IntValue);

                int dataBindingsBeforeMaximum = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Maximum);

                Assert.AreEqual(dataBindingsBeforeMaximum + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Maximum, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Maximum, obj.IntValue);

                int dataBindingsBeforeMinimum = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Minimum);

                Assert.AreEqual(dataBindingsBeforeMinimum + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Minimum, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Minimum, obj.IntValue);

                int dataBindingsBeforeStep = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Step);

                Assert.AreEqual(dataBindingsBeforeStep + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Step, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Step, obj.IntValue);

                int dataBindingsBeforeText = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Text);

                Assert.AreEqual(dataBindingsBeforeText + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Text, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Text, obj.Name);

                int dataBindingsBeforeValue = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Value);

                Assert.AreEqual(dataBindingsBeforeValue + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Value, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Value, obj.IntValue);

                int dataBindingsBeforeAccessibleDefaultActionDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDefaultActionDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDefaultActionDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                int dataBindingsBeforeAccessibleDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                int dataBindingsBeforeAccessibleName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleName);

                Assert.AreEqual(dataBindingsBeforeAccessibleName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleName, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleName, obj.Name);

                int dataBindingsBeforeHeight = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Height);

                Assert.AreEqual(dataBindingsBeforeHeight + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Height, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Height, obj.IntValue);

                int dataBindingsBeforeLeft = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Left);

                Assert.AreEqual(dataBindingsBeforeLeft + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Left, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Left, obj.IntValue);

                int dataBindingsBeforeName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Name);

                Assert.AreEqual(dataBindingsBeforeName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Name, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Name, obj.Name);

                int dataBindingsBeforeTabIndex = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TabIndex);

                Assert.AreEqual(dataBindingsBeforeTabIndex + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                int dataBindingsBeforeTop = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Top);

                Assert.AreEqual(dataBindingsBeforeTop + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Top, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Top, obj.IntValue);

                int dataBindingsBeforeWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Width);

                Assert.AreEqual(dataBindingsBeforeWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Width, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Width, obj.IntValue);

            }
        }
        public void TestBindingToPrintPreviewDialog()
        {
            PrintPreviewDialog control = new PrintPreviewDialog();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                PrintPreviewDialog bindableTarget = scope.CreateTarget(control);

            }
        }
        public void TestBindingToNumericUpDown()
        {
            NumericUpDown control = new NumericUpDown();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                NumericUpDown bindableTarget = scope.CreateTarget(control);
                int dataBindingsBeforeDecimalPlaces = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.DecimalPlaces);

                Assert.AreEqual(dataBindingsBeforeDecimalPlaces + 1, control.DataBindings.Count);

                Assert.AreEqual(control.DecimalPlaces, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.DecimalPlaces, obj.IntValue);

                int dataBindingsBeforeIncrement = control.DataBindings.Count;

                scope.Bind(bindableSource.DecimalValue).To(bindableTarget.Increment);

                Assert.AreEqual(dataBindingsBeforeIncrement + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Increment, obj.DecimalValue);

                obj.ChangeDecimalValue();

                Assert.AreEqual(control.Increment, obj.DecimalValue);

                int dataBindingsBeforeMaximum = control.DataBindings.Count;

                scope.Bind(bindableSource.DecimalValue).To(bindableTarget.Maximum);

                Assert.AreEqual(dataBindingsBeforeMaximum + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Maximum, obj.DecimalValue);

                obj.ChangeDecimalValue();

                Assert.AreEqual(control.Maximum, obj.DecimalValue);

                int dataBindingsBeforeMinimum = control.DataBindings.Count;

                scope.Bind(bindableSource.DecimalValue).To(bindableTarget.Minimum);

                Assert.AreEqual(dataBindingsBeforeMinimum + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Minimum, obj.DecimalValue);

                obj.ChangeDecimalValue();

                Assert.AreEqual(control.Minimum, obj.DecimalValue);

                int dataBindingsBeforeValue = control.DataBindings.Count;

                scope.Bind(bindableSource.DecimalValue).To(bindableTarget.Value);

                Assert.AreEqual(dataBindingsBeforeValue + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Value, obj.DecimalValue);

                obj.ChangeDecimalValue();

                Assert.AreEqual(control.Value, obj.DecimalValue);

                int dataBindingsBeforeAccessibleDefaultActionDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDefaultActionDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDefaultActionDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                int dataBindingsBeforeAccessibleDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                int dataBindingsBeforeAccessibleName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleName);

                Assert.AreEqual(dataBindingsBeforeAccessibleName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleName, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleName, obj.Name);

                int dataBindingsBeforeLeft = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Left);

                Assert.AreEqual(dataBindingsBeforeLeft + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Left, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Left, obj.IntValue);

                int dataBindingsBeforeName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Name);

                Assert.AreEqual(dataBindingsBeforeName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Name, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Name, obj.Name);

                int dataBindingsBeforeTabIndex = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TabIndex);

                Assert.AreEqual(dataBindingsBeforeTabIndex + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                int dataBindingsBeforeTop = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Top);

                Assert.AreEqual(dataBindingsBeforeTop + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Top, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Top, obj.IntValue);

                int dataBindingsBeforeWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Width);

                Assert.AreEqual(dataBindingsBeforeWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Width, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Width, obj.IntValue);

            }
        }
        public void TestBindingToMonthCalendar()
        {
            MonthCalendar control = new MonthCalendar();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                MonthCalendar bindableTarget = scope.CreateTarget(control);
                int dataBindingsBeforeMaxSelectionCount = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.MaxSelectionCount);

                Assert.AreEqual(dataBindingsBeforeMaxSelectionCount + 1, control.DataBindings.Count);

                Assert.AreEqual(control.MaxSelectionCount, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.MaxSelectionCount, obj.IntValue);

                int dataBindingsBeforeScrollChange = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.ScrollChange);

                Assert.AreEqual(dataBindingsBeforeScrollChange + 1, control.DataBindings.Count);

                Assert.AreEqual(control.ScrollChange, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.ScrollChange, obj.IntValue);

                int dataBindingsBeforeText = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Text);

                Assert.AreEqual(dataBindingsBeforeText + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Text, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Text, obj.Name);

                int dataBindingsBeforeAccessibleDefaultActionDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDefaultActionDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDefaultActionDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                int dataBindingsBeforeAccessibleDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                int dataBindingsBeforeAccessibleName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleName);

                Assert.AreEqual(dataBindingsBeforeAccessibleName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleName, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleName, obj.Name);

                int dataBindingsBeforeLeft = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Left);

                Assert.AreEqual(dataBindingsBeforeLeft + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Left, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Left, obj.IntValue);

                int dataBindingsBeforeName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Name);

                Assert.AreEqual(dataBindingsBeforeName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Name, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Name, obj.Name);

                int dataBindingsBeforeTabIndex = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TabIndex);

                Assert.AreEqual(dataBindingsBeforeTabIndex + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                int dataBindingsBeforeTop = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Top);

                Assert.AreEqual(dataBindingsBeforeTop + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Top, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Top, obj.IntValue);

            }
        }
        public void TestBindingToMaskedTextBox()
        {
            MaskedTextBox control = new MaskedTextBox();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                MaskedTextBox bindableTarget = scope.CreateTarget(control);
                int dataBindingsBeforeMask = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Mask);

                Assert.AreEqual(dataBindingsBeforeMask + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Mask, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Mask, obj.Name);

                int dataBindingsBeforeText = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Text);

                Assert.AreEqual(dataBindingsBeforeText + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Text, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Text, obj.Name);

                int dataBindingsBeforeLeft = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Left);

                Assert.AreEqual(dataBindingsBeforeLeft + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Left, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Left, obj.IntValue);

                int dataBindingsBeforeName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Name);

                Assert.AreEqual(dataBindingsBeforeName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Name, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Name, obj.Name);

                int dataBindingsBeforeTabIndex = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TabIndex);

                Assert.AreEqual(dataBindingsBeforeTabIndex + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                int dataBindingsBeforeTop = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Top);

                Assert.AreEqual(dataBindingsBeforeTop + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Top, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Top, obj.IntValue);

                int dataBindingsBeforeWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Width);

                Assert.AreEqual(dataBindingsBeforeWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Width, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Width, obj.IntValue);

            }
        }
        public void TestBindingToForm()
        {
            Form control = new Form();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                Form bindableTarget = scope.CreateTarget(control);

            }
        }
        public void TestBindingToDataGridView()
        {
            DataGridView control = new DataGridView();
            IBusinessObject obj = new BusinessObject();

            using(BindingScope scope = new BindingScope())
            {
                IBusinessObject bindableSource = scope.CreateSource(obj);

                if(control is Control)
                    ((Control)control).CreateControl();
                control.BindingContext = new BindingContext();

                DataGridView bindableTarget = scope.CreateTarget(control);
                int dataBindingsBeforeColumnCount = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.ColumnCount);

                Assert.AreEqual(dataBindingsBeforeColumnCount + 1, control.DataBindings.Count);

                Assert.AreEqual(control.ColumnCount, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.ColumnCount, obj.IntValue);

                int dataBindingsBeforeColumnHeadersHeight = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.ColumnHeadersHeight);

                Assert.AreEqual(dataBindingsBeforeColumnHeadersHeight + 1, control.DataBindings.Count);

                Assert.AreEqual(control.ColumnHeadersHeight, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.ColumnHeadersHeight, obj.IntValue);

                int dataBindingsBeforeDataMember = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.DataMember);

                Assert.AreEqual(dataBindingsBeforeDataMember + 1, control.DataBindings.Count);

                Assert.AreEqual(control.DataMember, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.DataMember, obj.Name);

                int dataBindingsBeforeHorizontalScrollingOffset = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.HorizontalScrollingOffset);

                Assert.AreEqual(dataBindingsBeforeHorizontalScrollingOffset + 1, control.DataBindings.Count);

                Assert.AreEqual(control.HorizontalScrollingOffset, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.HorizontalScrollingOffset, obj.IntValue);

                int dataBindingsBeforeRowCount = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.RowCount);

                Assert.AreEqual(dataBindingsBeforeRowCount + 1, control.DataBindings.Count);

                Assert.AreEqual(control.RowCount, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.RowCount, obj.IntValue);

                int dataBindingsBeforeRowHeadersWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.RowHeadersWidth);

                Assert.AreEqual(dataBindingsBeforeRowHeadersWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.RowHeadersWidth, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.RowHeadersWidth, obj.IntValue);

                int dataBindingsBeforeText = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Text);

                Assert.AreEqual(dataBindingsBeforeText + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Text, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Text, obj.Name);

                int dataBindingsBeforeAccessibleDefaultActionDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDefaultActionDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDefaultActionDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDefaultActionDescription, obj.Name);

                int dataBindingsBeforeAccessibleDescription = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleDescription);

                Assert.AreEqual(dataBindingsBeforeAccessibleDescription + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleDescription, obj.Name);

                int dataBindingsBeforeAccessibleName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.AccessibleName);

                Assert.AreEqual(dataBindingsBeforeAccessibleName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.AccessibleName, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.AccessibleName, obj.Name);

                int dataBindingsBeforeHeight = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Height);

                Assert.AreEqual(dataBindingsBeforeHeight + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Height, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Height, obj.IntValue);

                int dataBindingsBeforeLeft = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Left);

                Assert.AreEqual(dataBindingsBeforeLeft + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Left, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Left, obj.IntValue);

                int dataBindingsBeforeName = control.DataBindings.Count;

                scope.Bind(bindableSource.Name).To(bindableTarget.Name);

                Assert.AreEqual(dataBindingsBeforeName + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Name, obj.Name);

                obj.ChangeName();

                Assert.AreEqual(control.Name, obj.Name);

                int dataBindingsBeforeTabIndex = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.TabIndex);

                Assert.AreEqual(dataBindingsBeforeTabIndex + 1, control.DataBindings.Count);

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.TabIndex, obj.IntValue);

                int dataBindingsBeforeTop = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Top);

                Assert.AreEqual(dataBindingsBeforeTop + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Top, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Top, obj.IntValue);

                int dataBindingsBeforeWidth = control.DataBindings.Count;

                scope.Bind(bindableSource.IntValue).To(bindableTarget.Width);

                Assert.AreEqual(dataBindingsBeforeWidth + 1, control.DataBindings.Count);

                Assert.AreEqual(control.Width, obj.IntValue);

                obj.ChangeIntValue();

                Assert.AreEqual(control.Width, obj.IntValue);

            }
        }