Structured Basic Test のパターン数 - 単体テスト

/*****************************************************************************
        PM_HotKeyCallback関数は、ホットキー押下時に呼び出されます。
        Author: Takao Tamura / Technology Center 
*****************************************************************************/
LRESULT CALLBACK
PM_HotKeyCallback(
    HWND    hWnd,                                /* ウィンドウハンドル */
    UINT    uMsg,                                /* メッセージのタイプ */
    WPARAM  wParam,                              /* 仮想キーコード */
    LPARAM  lParam                               /* 付加情報2 */
)
{----------------------------------->ルーチンそのものの開始を「1」とする
    LRESULT lResult = 0;
    HWND hWndNowActive;
    HTASK hTaskNowActive;
    char szCmdLineNowActive[257];
    LPSTR lpszCmdLineNextActivate;
    LPSTR lpszCmdLinePtrSave;
    HWND hWndNextActivate;
    SWITCHTASKRET fSwitchTask;

    /* 現在アクティブなタスクとそのコマンドラインを求める。*/
    hWndNowActive = GetActiveWindow();
    hTaskNowActive = GetWindowTask(hWndNowActive);
    PM_QueryCmdLineByTask(hTaskNowActive, szCmdLineNowActive);

    /*
     * 上で求めたアクティブになっているアプリケーションは
     * そのキーの切替対象になっているか
     */
    if (SwitchTask_QueryExistCmdLine(m_SwitchTask,  --------> if で2とする
                (WORD)wParam, szCmdLineNowActive) != SWTASK_NOERR) {
        /* なっていなきゃ何もしない */
        return lResult;
    }

    lpszCmdLineNextActivate = 
        SwitchTask_QueryNextActive(m_SwitchTask, (WORD)wParam, &fSwitchTask);

    if (lpszCmdLineNextActivate == NULL) {          --------> if で3とする
        /* 切替候補がいないなら何もしない */
        return lResult;
    }

    lpszCmdLinePtrSave = lpszCmdLineNextActivate;

    for (;;) { ----------------------------------------> for で本来は4とする
                                        でも、ここでは判定が入らないので、
                                        3のままである。
        /* コマンドラインからウィンドウハンドルに変換 */
        hWndNextActivate = 
                PM_QueryMainWindowByCmdLine(lpszCmdLineNextActivate);

        if (hWndNextActivate != NULL) ----------------------> if で4とする
            /* 切替対象発見 */
            break;
        }

        /* 切替候補が実行されていないなら次を */
        lpszCmdLineNextActivate = 
                SwitchTask_QueryNextActive(m_SwitchTask, 
                                            (WORD)wParam, &fSwitchTask);

        if (lpszCmdLineNextActivate == lpszCmdLinePtrSave) { ->if で5とする
            break;
        }
    }

    if (hWndNextActivate == NULL) { -----------------------> if で6とする
        /* 切替候補がいないなら何もしない */
        return lResult;
    }

    PM_SwitchToWindow(hWndNextActivate);

    return lResult;
}
このルーチンのStructured Basid Test パターン数は6となります。
もちろん、if の中に and や or があれば、その都度パターン数が増えることになります。

単体テストへ戻る _ Top of Site

Copyright (c) 2000 Takao Tamura