public void TestConstructor()
 {
     //WindowControlから作成。
     {
         NativeEdit edit = new NativeEdit(testDlg.IdentifyFromDialogId(1020));
         edit.EmulateChangeText("a");
         Assert.AreEqual("a", edit.Text);
     }
     //ハンドルから作成。
     {
         NativeEdit edit = new NativeEdit(app, testDlg.IdentifyFromDialogId(1020).Handle);
         edit.EmulateChangeText("b");
         Assert.AreEqual("b", edit.Text);
     }
 }
        public void Win32()
        {
            var app = new WindowsAppFriend(Process.Start(Path.GetFullPath("../../../MFCDlg.exe")));
            var dlg = WindowControl.IdentifyFromWindowText(app, "MFCDlg");

            //ダイアログID
            const int IDOK = 1;
            const int IDCANCEL = 2;
            const int IDC_EDIT_SAMPLE = 1000;
            var buttonOK = new NativeButton(dlg.IdentifyFromDialogId(IDOK));
            var buttonCancel = new NativeButton(dlg.IdentifyFromDialogId(IDCANCEL));
            var editSample = new NativeEdit(dlg.IdentifyFromDialogId(IDC_EDIT_SAMPLE));
            editSample.EmulateChangeText("abc");

            //WindowText
            buttonOK = new NativeButton(dlg.IdentifyFromWindowText("OK"));

            //Windowクラス
            editSample = new NativeEdit(dlg.IdentifyFromWindowClass("Edit"));

            Process.GetProcessById(app.ProcessId).Kill();
        }
        public void TestEmulateChangeSelectionEventAsync()
        {
            //文字列設定 テスト対象ではないがここでもメッセージボックスが表示される。
            NativeEdit rich = new NativeEdit(testDlg.IdentifyFromDialogId(1040));
            Async async = new Async();
            rich.EmulateChangeText("abcdef", async);
            Assert.IsTrue(0 < MessageBoxUtility.CloseAll(testDlg, async));

            //EmulateChangeSelectionの非同期確認。
            async = new Async();
            rich.EmulateChangeSelection(1, 1, async);
            Assert.IsTrue(0 < MessageBoxUtility.CloseAll(testDlg, async));
        }
        public void TestEmulateChangeTextEventAsync()
        {
            NativeEdit edit = new NativeEdit(testDlg.IdentifyFromDialogId(1022));
            NativeEdit rich = new NativeEdit(testDlg.IdentifyFromDialogId(1040));

            Async async = new Async();
            edit.EmulateChangeText("abcdef", async);
            Assert.IsTrue(0 < MessageBoxUtility.CloseAll(testDlg, async));

            async = new Async();
            rich.EmulateChangeText("abcdef", async);
            Assert.IsTrue(0 < MessageBoxUtility.CloseAll(testDlg, async));
        }
        public void TestEmulateChangeSelectionEvent()
        {
            //Edit 何もイベントは発生しない。
            NativeEdit edit = new NativeEdit(testDlg.IdentifyFromDialogId(1020));
            edit.EmulateChangeText("123");
            Assert.IsTrue(EventChecker.IsSameTestEvent(testDlg,
                delegate { edit.EmulateChangeSelection(1, 2); }));

            //RitchEdit EN_SELCHANGEが発生することを確認。
            NativeEdit rich = new NativeEdit(testDlg.IdentifyFromDialogId(1038));
            rich.EmulateChangeText("123");
            Assert.IsTrue(EventChecker.IsSameTestEvent(testDlg,
                delegate { rich.EmulateChangeSelection(1, 2); },
                //無視
                new CodeInfo[] {new CodeInfo(1038, NativeMethods.WM_COMMAND, EN_UPDATE)},
                //期待値
                new CodeInfo(1038, NativeMethods.WM_NOTIFY, EN_SELCHANGE)
                ));
        }
        public void TestEmulateChangeTextEvent()
        {
            //Edit。
            NativeEdit edit = new NativeEdit(testDlg.IdentifyFromDialogId(1020));
            edit.EmulateChangeText(string.Empty);
            Assert.IsTrue(EventChecker.IsSameTestEvent(testDlg,
                delegate { edit.EmulateChangeText("a"); },
                new CodeInfo(1020, NativeMethods.WM_COMMAND, EN_UPDATE),
                new CodeInfo(1020, NativeMethods.WM_COMMAND, EN_CHANGE)
                ));

            //RitchEdit イベント発生の順番がEditと異なる。
            NativeEdit rich = new NativeEdit(testDlg.IdentifyFromDialogId(1038));
            rich.EmulateChangeText(string.Empty);
            Assert.IsTrue(EventChecker.IsSameTestEvent(testDlg,
                delegate { rich.EmulateChangeText("a"); },
                new CodeInfo(1038, NativeMethods.WM_COMMAND, EN_CHANGE),
                new CodeInfo(1038, NativeMethods.WM_COMMAND, EN_UPDATE)
                ));
        }