public void EnsureTemplatePartsThroughProperties()
        {
            DataFormApp_LayoutProperties dataFormApp = new DataFormApp_LayoutProperties();

            dataFormApp.dataForm.FontFamily  = new FontFamily("Arial");
            dataFormApp.dataForm.FontSize    = 15;
            this.DataFormAppBase             = dataFormApp;
            dataFormApp.dataForm.ItemsSource = DataClassList.GetDataClassList(3, ListOperations.All);

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                ButtonBase newItemButton     = this.GetTemplatePart <ButtonBase>("NewItemButton");
                ButtonBase deleteItemButton  = this.GetTemplatePart <ButtonBase>("DeleteItemButton");
                ButtonBase cancelButton      = this.GetTemplatePart <ButtonBase>("CancelButton");
                ButtonBase editButton        = this.GetTemplatePart <ButtonBase>("EditButton");
                ButtonBase commitButton      = this.GetTemplatePart <ButtonBase>("CommitButton");
                ContentControl headerElement = this.GetTemplatePart <ContentControl>("HeaderElement");

                Assert.AreEqual(Visibility.Collapsed, newItemButton.Visibility);
                Assert.AreEqual(Visibility.Visible, deleteItemButton.Visibility);
                Assert.AreEqual(Visibility.Collapsed, editButton.Visibility);
                Assert.AreEqual("Cancel button", cancelButton.Content);
                Assert.AreEqual("Commit button", commitButton.Content);
                Assert.AreEqual(15, headerElement.FontSize);
                Assert.AreEqual("Arial", headerElement.FontFamily.Source);

                Assert.IsNotNull(dataFormApp.dataForm.ValidationSummary);
                Assert.IsNotNull(dataFormApp.dataForm.ValidationSummary.Style);
                Assert.AreEqual(20, dataFormApp.dataForm.ValidationSummary.FontSize);
            });

            this.EnqueueTestComplete();
        }
        public void TestFallbackNoEditOrInsertTemplate()
        {
            DataFormApp_Templates dataFormApp = new DataFormApp_Templates();

            this.DataFormAppBase = dataFormApp;
            dataFormApp.dataForm.EditTemplate    = null;
            dataFormApp.dataForm.NewItemTemplate = null;
            dataFormApp.dataForm.ItemsSource     = DataClassList.GetDataClassList(1, ListOperations.All);
            ContentPresenter contentPresenter = null;

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                contentPresenter         = this.GetTemplatePart <ContentPresenter>("ContentPresenter");
                ButtonBase editButton    = this.GetTemplatePart <ButtonBase>("EditButton");
                ButtonBase newItemButton = this.GetTemplatePart <ButtonBase>("NewItemButton");
                TextBox textBox          = contentPresenter.Content as TextBox;
                Assert.IsNotNull(textBox);
                Assert.AreEqual("Display Template", textBox.Text);
                Assert.IsTrue(dataFormApp.dataForm.EffectiveIsReadOnly);
                Assert.IsFalse(editButton.IsEnabled);
                Assert.IsFalse(newItemButton.IsEnabled);
            });

            this.EnqueueTestComplete();
        }
        public void TestFallbackNoTemplates()
        {
            DataFormApp_Templates dataFormApp = new DataFormApp_Templates();

            this.DataFormAppBase = dataFormApp;
            dataFormApp.dataForm.NewItemTemplate  = null;
            dataFormApp.dataForm.EditTemplate     = null;
            dataFormApp.dataForm.ReadOnlyTemplate = null;
            dataFormApp.dataForm.ItemsSource      = DataClassList.GetDataClassList(1, ListOperations.All);
            ContentPresenter contentPresenter = null;

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                contentPresenter         = this.GetTemplatePart <ContentPresenter>("ContentPresenter");
                ButtonBase newItemButton = this.GetTemplatePart <ButtonBase>("NewItemButton");

                this.ExpectCurrentItemChange();
                InvokeButton(newItemButton);
            });

            this.WaitForCurrentItemChange();

            this.EnqueueCallback(() =>
            {
                TextBox textBox = contentPresenter.Content as TextBox;
                Assert.IsNotNull(textBox);
                Assert.AreEqual("Direct Content", textBox.Text);
                Assert.AreEqual(dataFormApp.dataForm.Content, textBox);
            });

            this.EnqueueTestComplete();
        }
 /// <summary>
 /// Initializes the test framework.
 /// </summary>
 public override void Initialize()
 {
     base.Initialize();
     this.DataFormAppBase      = new DataFormApp_Standard();
     this.dataClassList        = DataClassList.GetDataClassList(3, ListOperations.All);
     this.DataForm.ItemsSource = this.dataClassList;
 }
 /// <summary>
 /// Initializes the test framework.
 /// </summary>
 public override void Initialize()
 {
     base.Initialize();
     this.DataFormAppBase = new DataFormApp_Standard();
     this.dataClassList = DataClassList.GetDataClassList(3, ListOperations.All);
     this.DataForm.ItemsSource = this.dataClassList;
 }
        public void SetValuesWithAutomationPeers()
        {
            DataClass       dataClass = null;
            IInvokeProvider invokeProvider;

            this.EnqueueCallback(() =>
            {
                dataClass = DataClassList.GetDataClassList(1, ListOperations.All)[0];
                this.DataForm.CurrentItem = dataClass;
            });

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                this.GetAutomationPeer();
                this.GetChildAutomationPeers();

                Assert.AreEqual(true, dataClass.BoolProperty);
                Assert.AreEqual("test string 0", dataClass.StringProperty);
                invokeProvider = this._editButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectContentLoaded();
                invokeProvider.Invoke();
            });

            this.WaitForContentLoaded();

            this.EnqueueCallback(() =>
            {
                this.GetChildAutomationPeers();

                IToggleProvider toggleProvider = (this._inputControlAutomationPeers[0] as CheckBoxAutomationPeer).GetPattern(PatternInterface.Toggle) as IToggleProvider;
                IValueProvider valueProvider   = (this._inputControlAutomationPeers[2] as TextBoxAutomationPeer).GetPattern(PatternInterface.Value) as IValueProvider;

                toggleProvider.Toggle();
                valueProvider.SetValue("new string");

                invokeProvider = this._commitButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectContentLoaded();
                invokeProvider.Invoke();
            });

            this.WaitForContentLoaded();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(false, dataClass.BoolProperty);
                Assert.AreEqual("new string", dataClass.StringProperty);
            });

            this.EnqueueTestComplete();
        }
Beispiel #7
0
 public void ItemsSource()
 {
     VerifyDependencyPropertyWithName(
         "ItemsSource",
         typeof(IEnumerable),
         true /* expectGet */,
         true /* expectSet */,
         true /* hasCallback */,
         this.dataForm,
         new Collection <string>(),
         new List <int>(),
         DataClassList.GetDataClassList(10, ListOperations.All));
 }
        public void EnsureUIUpdatedAfterEditDirectContent()
        {
            DataFormApp_DirectContent dataFormApp = new DataFormApp_DirectContent();

            this.DataFormAppBase             = dataFormApp;
            dataFormApp.dataForm.ItemsSource = DataClassList.GetDataClassList(1, ListOperations.All);
            ContentPresenter contentPresenter = null;

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                contentPresenter = this.GetTemplatePart <ContentPresenter>("ContentPresenter");

                ButtonBase editButton = this.GetTemplatePart <ButtonBase>("EditButton");

                this.ExpectBeginEdit();
                InvokeButton(editButton);
            });

            this.WaitForBeginEdit();

            this.EnqueueCallback(() =>
            {
                ButtonBase commitButton = this.GetTemplatePart <ButtonBase>("CommitButton");

                TextBox textBox = contentPresenter.Content as TextBox;
                Assert.IsNotNull(textBox);
                Assert.AreEqual(dataFormApp.dataForm.Content, textBox);
                Assert.AreEqual(DataFormMode.Edit, dataFormApp.dataForm.Mode);
                textBox.Text = "new string";

                this.ExpectEditEnded();
                InvokeButton(commitButton);
            });

            this.WaitForEditEnded();

            this.EnqueueCallback(() =>
            {
                TextBox textBox = contentPresenter.Content as TextBox;
                Assert.IsNotNull(textBox);
                Assert.AreEqual(dataFormApp.dataForm.Content, textBox);
                Assert.AreEqual(DataFormMode.ReadOnly, dataFormApp.dataForm.Mode);
                Assert.AreEqual("new string", textBox.Text);
            });

            this.EnqueueTestComplete();
        }
        public void TestIsControlElement()
        {
            this.EnqueueCallback(() =>
            {
                this.DataForm.CurrentItem = DataClassList.GetDataClassList(1, ListOperations.All)[0];
            });

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                this.GetAutomationPeer();
                Assert.IsTrue(this._dataFormAutomationPeer.IsControlElement());
            });

            this.EnqueueTestComplete();
        }
        public void EnsureClassNameIsCorrect()
        {
            this.EnqueueCallback(() =>
            {
                this.DataForm.CurrentItem = DataClassList.GetDataClassList(1, ListOperations.All)[0];
            });

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                this.GetAutomationPeer();
                Assert.AreEqual("DataForm", this._dataFormAutomationPeer.GetClassName());
            });

            this.EnqueueTestComplete();
        }
        public void EnsureCannotInsertWithIsReadOnly()
        {
            this.dataClassList        = DataClassList.GetDataClassList(3, ListOperations.All);
            this.DataForm.IsReadOnly  = true;
            this.DataForm.ItemsSource = this.dataClassList;
            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                Assert.IsFalse(this.DataForm.CanAddItems);

                ButtonBase newItemButton = this.GetTemplatePart <ButtonBase>("NewItemButton");

                Assert.IsFalse(newItemButton.IsEnabled);
            });

            this.EnqueueTestComplete();
        }
        public void AutoGeneratingField()
        {
            DataFormApp_AutoGeneration dataFormApp = new DataFormApp_AutoGeneration();

            this.DataFormAppBase             = dataFormApp;
            dataFormApp.dataForm.ItemsSource = DataClassList.GetDataClassList(2, ListOperations.All);

            this.EnqueueCallback(() =>
            {
                this.ExpectEvent <DataFormAutoGeneratingFieldEventArgs>("AutoGeneratingField");
                dataFormApp.dataForm.AutoGenerateFields = true;
            });

            this.AddToPanelAndWaitForLoad();
            this.WaitForAllEvents();

            this.EnqueueTestComplete();
        }
        public void TestIsKeyboardFocusable()
        {
            this.EnqueueCallback(() =>
            {
                this.DataForm.CurrentItem = DataClassList.GetDataClassList(1, ListOperations.All)[0];
            });

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                this.GetAutomationPeer();
                Assert.IsTrue(this._dataFormAutomationPeer.IsKeyboardFocusable());
                this.DataForm.IsEnabled = false;
                Assert.IsFalse(this._dataFormAutomationPeer.IsKeyboardFocusable());
            });

            this.EnqueueTestComplete();
        }
        public void EnsureCanAddAndDeleteWithInitialAutoEdit()
        {
            DataFormApp_FieldsWithInitialAutoEdit dataFormApp = new DataFormApp_FieldsWithInitialAutoEdit();

            this.DataFormAppBase             = dataFormApp;
            this.dataClassList               = DataClassList.GetDataClassList(5, ListOperations.All);
            dataFormApp.dataForm.CurrentItem = this.dataClassList[0];
            dataFormApp.dataForm.ItemsSource = this.dataClassList;

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                dataFormApp.dataForm.BeginEdit();
                Assert.IsTrue(dataFormApp.dataForm.CanAddItems);
                Assert.IsTrue(dataFormApp.dataForm.CanDeleteItems);
            });

            this.EnqueueTestComplete();
        }
        public void EnsureElementNameBindingWorks()
        {
            DataFormApp_TemplatesWithElementNameBinding dataFormApp = new DataFormApp_TemplatesWithElementNameBinding();

            this.DataFormAppBase             = dataFormApp;
            dataFormApp.dataForm.ItemsSource = DataClassList.GetDataClassList(1, ListOperations.All);
            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                ContentPresenter contentPresenter = this.GetTemplatePart <ContentPresenter>("ContentPresenter");
                StackPanel stackPanel             = contentPresenter.Content as StackPanel;
                Label fieldLabel = stackPanel.Children[0] as Label;
                Assert.AreEqual("String Property", fieldLabel.Content);
                DescriptionViewer descriptionViewer = stackPanel.Children[2] as DescriptionViewer;
                Assert.AreEqual("String Property Description", descriptionViewer.Description);
            });

            this.EnqueueTestComplete();
        }
        public void EnsureCanCancelAfterAddWithAutoEdit()
        {
            this.DataForm.ItemsSource = DataClassList.GetDataClassList(1, ListOperations.All);
            this.DataForm.AutoEdit    = true;
            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                this.ExpectContentLoaded();
                this.DataForm.AddNewItem();
            });

            this.WaitForContentLoaded();

            this.EnqueueCallback(() =>
            {
                Assert.IsTrue(this.GetTemplatePart <ButtonBase>("CancelButton").IsEnabled);
            });

            this.EnqueueTestComplete();
        }
        /// <summary>
        /// Returns a new <see cref="DataClass"/> entity list.
        /// </summary>
        /// <param name="count">The number of items to be put in the list.</param>
        /// <param name="supportedOperations">The supported operations for the list.</param>
        /// <returns>The entity list.</returns>
        public static DataClassList GetDataClassList(int count, ListOperations supportedOperations)
        {
            DataClassList dataClassList = new DataClassList();

            for (int i = 0; i < count; i++)
            {
                DataClass dataClass = new DataClass()
                {
                    BoolProperty     = (i % 2 == 0),
                    DateTimeProperty = new DateTime(2000 + i, 1 + (i % 12), 1 + (i % 28)),
                    IntProperty      = i * 3,
                    IntPropertyWithoutAutoGenerateField = (i * 3) + 1,
                    NonGeneratedIntProperty             = (i * 3) + 2,
                    StringProperty = "test string " + i.ToString(CultureInfo.CurrentCulture)
                };

                dataClass.AcceptChanges();
                dataClassList.Add(dataClass);
            }

            dataClassList.supportedOperations = supportedOperations;
            return(dataClassList);
        }
        public void EnsureCannotInsertWithIsReadOnly()
        {
            this.dataClassList = DataClassList.GetDataClassList(3, ListOperations.All);
            this.DataForm.IsReadOnly = true;
            this.DataForm.ItemsSource = this.dataClassList;
            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                Assert.IsFalse(this.DataForm.CanAddItems);

                ButtonBase newItemButton = this.GetTemplatePart<ButtonBase>("NewItemButton");

                Assert.IsFalse(newItemButton.IsEnabled);
            });

            this.EnqueueTestComplete();
        }
        public void EnsureCanAddAndDeleteWithInitialAutoEdit()
        {
            DataFormApp_FieldsWithInitialAutoEdit dataFormApp = new DataFormApp_FieldsWithInitialAutoEdit();
            this.DataFormAppBase = dataFormApp;
            this.dataClassList = DataClassList.GetDataClassList(5, ListOperations.All);
            dataFormApp.dataForm.CurrentItem = this.dataClassList[0];
            dataFormApp.dataForm.ItemsSource = this.dataClassList;

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                dataFormApp.dataForm.BeginEdit();
                Assert.IsTrue(dataFormApp.dataForm.CanAddItems);
                Assert.IsTrue(dataFormApp.dataForm.CanDeleteItems);
            });

            this.EnqueueTestComplete();
        }
        /// <summary>
        /// Returns a new <see cref="DataClass"/> entity list.
        /// </summary>
        /// <param name="count">The number of items to be put in the list.</param>
        /// <param name="supportedOperations">The supported operations for the list.</param>
        /// <returns>The entity list.</returns>
        public static DataClassList GetDataClassList(int count, ListOperations supportedOperations)
        {
            DataClassList dataClassList = new DataClassList();

            for (int i = 0; i < count; i++)
            {
                DataClass dataClass = new DataClass()
                {
                    BoolProperty = (i % 2 == 0),
                    DateTimeProperty = new DateTime(2000 + i, 1 + (i % 12), 1 + (i % 28)),
                    IntProperty = i * 3,
                    IntPropertyWithoutAutoGenerateField = (i * 3) + 1,
                    NonGeneratedIntProperty = (i * 3) + 2,
                    StringProperty = "test string " + i.ToString(CultureInfo.CurrentCulture)
                };

                dataClass.AcceptChanges();
                dataClassList.Add(dataClass);
            }

            dataClassList.supportedOperations = supportedOperations;
            return dataClassList;
        }
        public void InvokeNavigationButtons()
        {
            IInvokeProvider invokeProvider;

            this.EnqueueCallback(() =>
            {
                this.DataForm.ItemsSource = DataClassList.GetDataClassList(3, ListOperations.All);
            });

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                this.GetAutomationPeer();
                this.GetChildAutomationPeers();

                Assert.AreEqual(0, this.DataForm.CurrentIndex);
                invokeProvider = this._nextItemButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectCurrentItemChange();
                invokeProvider.Invoke();
            });

            this.WaitForCurrentItemChange();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(1, this.DataForm.CurrentIndex);
                invokeProvider = this._previousItemButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectCurrentItemChange();
                invokeProvider.Invoke();
            });

            this.WaitForCurrentItemChange();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(0, this.DataForm.CurrentIndex);
                invokeProvider = this._lastItemButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectCurrentItemChange();
                invokeProvider.Invoke();
            });

            this.WaitForCurrentItemChange();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(2, this.DataForm.CurrentIndex);
                invokeProvider = this._firstItemButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectCurrentItemChange();
                invokeProvider.Invoke();
            });

            this.WaitForCurrentItemChange();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(0, this.DataForm.CurrentIndex);
            });

            this.EnqueueTestComplete();
        }
 /// <summary>
 /// Initializes the test framework.
 /// </summary>
 /// <summary>
 /// Initializes the test framework.
 /// </summary>
 public override void Initialize()
 {
     base.Initialize();
     this.DataFormAppBase      = new DataFormApp_Templates();
     this.DataForm.ItemsSource = DataClassList.GetDataClassList(1, ListOperations.All);
 }
        public void EnsureGroupingDoesNotChangeOrder()
        {
            this.EnqueueCallback(() =>
            {
                DataClassList dataClassList = DataClassList.GetDataClassList(2, ListOperations.All);
                PagedCollectionView pcv     = new PagedCollectionView(dataClassList);
                pcv.GroupDescriptions.Add(new PropertyGroupDescription("StringProperty"));
                this.DataForm.ItemsSource = pcv;
                this.DataForm.AutoEdit    = false;
            });

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(5, this.DataForm.Fields.Count);
                Binding[] bindings = this.GetBindings();

                Assert.AreEqual("BoolProperty", bindings[0].Path.Path);
                Assert.IsTrue(bindings[0].ValidatesOnExceptions);
                Assert.IsTrue(bindings[0].NotifyOnValidationError);
                Assert.IsInstanceOfType(this.DataForm.Fields[0].Content, typeof(CheckBox));

                Assert.AreEqual("DateTimeProperty", bindings[1].Path.Path);
                Assert.IsTrue(bindings[1].ValidatesOnExceptions);
                Assert.IsTrue(bindings[1].NotifyOnValidationError);
                Assert.IsInstanceOfType(this.DataForm.Fields[1].Content, typeof(DatePicker));

                Assert.AreEqual("IntProperty", bindings[2].Path.Path);
                Assert.IsTrue(bindings[2].ValidatesOnExceptions);
                Assert.IsTrue(bindings[2].NotifyOnValidationError);
                Assert.IsInstanceOfType(this.DataForm.Fields[2].Content, typeof(TextBox));

                Assert.AreEqual("IntPropertyWithoutAutoGenerateField", bindings[3].Path.Path);
                Assert.IsTrue(bindings[3].ValidatesOnExceptions);
                Assert.IsTrue(bindings[3].NotifyOnValidationError);

                Assert.IsInstanceOfType(this.DataForm.Fields[3].Content, typeof(TextBox));

                Assert.AreEqual("StringProperty", bindings[4].Path.Path);
                Assert.IsTrue(bindings[4].ValidatesOnExceptions);
                Assert.IsTrue(bindings[4].NotifyOnValidationError);
                Assert.IsInstanceOfType(this.DataForm.Fields[4].Content, typeof(TextBox));

                this.ExpectContentLoaded();
                this.DataForm.CurrentIndex = 1;
            });

            this.WaitForContentLoaded();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(5, this.DataForm.Fields.Count);
                Binding[] bindings = this.GetBindings();

                Assert.AreEqual("BoolProperty", bindings[0].Path.Path);
                Assert.IsTrue(bindings[0].ValidatesOnExceptions);
                Assert.IsTrue(bindings[0].NotifyOnValidationError);
                Assert.IsInstanceOfType(this.DataForm.Fields[0].Content, typeof(CheckBox));

                Assert.AreEqual("DateTimeProperty", bindings[1].Path.Path);
                Assert.IsTrue(bindings[1].ValidatesOnExceptions);
                Assert.IsTrue(bindings[1].NotifyOnValidationError);
                Assert.IsInstanceOfType(this.DataForm.Fields[1].Content, typeof(DatePicker));

                Assert.AreEqual("IntProperty", bindings[2].Path.Path);
                Assert.IsTrue(bindings[2].ValidatesOnExceptions);
                Assert.IsTrue(bindings[2].NotifyOnValidationError);
                Assert.IsInstanceOfType(this.DataForm.Fields[2].Content, typeof(TextBox));

                Assert.AreEqual("IntPropertyWithoutAutoGenerateField", bindings[3].Path.Path);
                Assert.IsTrue(bindings[3].ValidatesOnExceptions);
                Assert.IsTrue(bindings[3].NotifyOnValidationError);

                Assert.IsInstanceOfType(this.DataForm.Fields[3].Content, typeof(TextBox));

                Assert.AreEqual("StringProperty", bindings[4].Path.Path);
                Assert.IsTrue(bindings[4].ValidatesOnExceptions);
                Assert.IsTrue(bindings[4].NotifyOnValidationError);
                Assert.IsInstanceOfType(this.DataForm.Fields[4].Content, typeof(TextBox));
            });

            this.EnqueueTestComplete();
        }
        public void InvokeEditButtons()
        {
            IInvokeProvider invokeProvider;

            this.EnqueueCallback(() =>
            {
                this.DataForm.ItemsSource = DataClassList.GetDataClassList(3, ListOperations.All);
            });

            this.AddToPanelAndWaitForLoad();

            this.EnqueueCallback(() =>
            {
                this.GetAutomationPeer();
                this.GetChildAutomationPeers();

                Assert.AreEqual(DataFormMode.ReadOnly, this.DataForm.Mode);
                invokeProvider = this._editButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectContentLoaded();
                invokeProvider.Invoke();
            });

            this.WaitForContentLoaded();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(DataFormMode.Edit, this.DataForm.Mode);
                DataClass dataClass      = (this.DataForm.CurrentItem as DataClass);
                dataClass.StringProperty = "new string";
                invokeProvider           = this._commitButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectContentLoaded();
                invokeProvider.Invoke();
            });

            this.WaitForContentLoaded();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(DataFormMode.ReadOnly, this.DataForm.Mode);
                invokeProvider = this._editButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectContentLoaded();
                invokeProvider.Invoke();
            });

            this.WaitForContentLoaded();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(DataFormMode.Edit, this.DataForm.Mode);
                invokeProvider = this._cancelButtonAutomationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                this.ExpectContentLoaded();
                invokeProvider.Invoke();
            });

            this.WaitForContentLoaded();

            this.EnqueueCallback(() =>
            {
                Assert.AreEqual(DataFormMode.ReadOnly, this.DataForm.Mode);
            });

            this.EnqueueTestComplete();
        }