public void TestConstructor()
 {
     //WindowControlから作成。
     {
         NativeButton checkButton = new NativeButton(testDlg.IdentifyFromDialogId(1004));
         checkButton.EmulateCheck(CheckState.Checked);
         Assert.AreEqual(CheckState.Checked, checkButton.CheckState);
     }
     //ハンドルから作成。
     {
         NativeButton checkButton = new NativeButton(app, testDlg.IdentifyFromDialogId(1004).Handle);
         checkButton.EmulateCheck(CheckState.Unchecked);
         Assert.AreEqual(CheckState.Unchecked, checkButton.CheckState);
     }
 }
 public void TestCheckException()
 {
     //イベントのテストではないのでメッセージボックスが出ないようにする。
     app[typeof(EventChecker), "ClearAsyncMsgBox"](testDlg.Handle);
     try
     {
         NativeButton radio = new NativeButton(testDlg.IdentifyFromDialogId(1044));
         radio.EmulateCheck(CheckState.Unchecked);
         Assert.Fail();
     }
     catch (FriendlyOperationException e)
     {
         Assert.IsTrue(e.Message.IndexOf("指定のチェック状態はサポートされていません。" + Environment.NewLine +
                     "ラジオボタンの場合、チェックをOFFにすることはできません。" + Environment.NewLine +
                     "他のラジオボタンのチェックをONにすることで指定のラジオボタンをOFFにしてください。") != -1);
     }
     try
     {
         NativeButton checkButton = new NativeButton(testDlg.IdentifyFromDialogId(1005));
         checkButton.EmulateCheck(CheckState.Indeterminate);
         Assert.Fail();
     }
     catch (FriendlyOperationException e)
     {
         Assert.IsTrue(e.Message.IndexOf("指定のチェック状態はサポートされていません。" + Environment.NewLine +
                     "ラジオボタンの場合、チェックをOFFにすることはできません。" + Environment.NewLine +
                     "他のラジオボタンのチェックをONにすることで指定のラジオボタンをOFFにしてください。") != -1);
     }
 }
 public void TestRadioCheck()
 {
     NativeButton radio1 = new NativeButton(testDlg.IdentifyFromDialogId(1044));
     NativeButton radio2 = new NativeButton(testDlg.IdentifyFromDialogId(1045));
     radio1.EmulateCheck(CheckState.Checked);
     Assert.AreEqual(CheckState.Unchecked, radio2.CheckState);
     radio2.EmulateCheck(CheckState.Checked);
     Assert.AreEqual(CheckState.Unchecked, radio1.CheckState);
 }
 public void TestCheckEventAsync()
 {
     NativeButton checkButton = new NativeButton(testDlg.IdentifyFromDialogId(1005));
     Async async = new Async();
     checkButton.EmulateCheck(CheckState.Checked, async);
     Assert.IsTrue(0 < MessageBoxUtility.CloseAll(testDlg, async));
 }
        public void TestCheckEvent()
        {
            NativeButton checkButton = new NativeButton(testDlg.IdentifyFromDialogId(1004));

            //同期実行。BN_CLICKEDが発生していることを確認。
            Assert.IsTrue(EventChecker.IsSameTestEvent(testDlg,
                delegate { checkButton.EmulateCheck(CheckState.Checked); },
                new CodeInfo(1004, NativeMethods.WM_COMMAND, BN_CLICKED)));

            //同じ状態であれば、BN_CLICKEDが発生しないことを確認。
            Assert.IsTrue(EventChecker.IsSameTestEvent(testDlg,
               delegate { checkButton.EmulateCheck(CheckState.Checked); }));
        }
        public void TestCheckStateValue()
        {
            //同期で実行
            NativeButton checkButton = new NativeButton(testDlg.IdentifyFromDialogId(1004));
            checkButton.EmulateCheck(CheckState.Checked);
            Assert.AreEqual(CheckState.Checked, checkButton.CheckState);
            checkButton.EmulateCheck(CheckState.Unchecked);
            Assert.AreEqual(CheckState.Unchecked, checkButton.CheckState);
            checkButton.EmulateCheck(CheckState.Indeterminate);
            Assert.AreEqual(CheckState.Indeterminate, checkButton.CheckState);

            //非同期メソッドでも同様の効果があることを確認。(内部的に間違ったメソッド呼び出しになっていないことの確認。)
            Async async = new Async();
            checkButton.EmulateCheck(CheckState.Unchecked, async);
            while (!async.IsCompleted)
            {
                Thread.Sleep(10);
            }
            Assert.AreEqual(CheckState.Unchecked, checkButton.CheckState);
        }