Visual Studio 設定

VC++ ディレクトリ

プラットフォームディレクトリを表示するプロジェクトパス
Win32実行可能ファイル%ProgramFiles%\WinUnit\Bin\x86
Win32インクルードファイル%ProgramFiles%\WinUnit\Include
  • 実際には環境変数展開はしてくれないので、展開後の値を設定する必要あり。

外部ツール

項目内容備考
タイトルWinUnit(&U)
コマンド%ProgramFiles%\WinUnit\Bin\x86\WinUnit.exe
引数$(TargetName)$(TargetExt)VS2008
$(TargetPath)VS2010
初期ディレクトリ$(TargetDir)
出力ウィンドウを使用チェックする
起動時に引数を入力チェックしない
Unicodeで出力を処理するチェックしない
  • テスト用プロジェクトを選択した状態で外部ツールを起動する。

テスト用プロジェクト設定

  • 「プロジェクトの依存関係」で、「テスト用プロジェクト」の依存先の「テストされるプロジェクト」にチェックを入れておく。

共通

グループ項目内容備考
構成Release
全般構成の種類ダイナミックリンクライブラリ(.dll)
リンカ/全般追加のライブラリディレクトリ"$(OutDir)"DLLをテストしたい場合
リンカ/入力追加の依存ファイル$(SolutionName).libDLLをテストしたい場合

Visual Studio 2008

グループ項目内容
ビルドイベント/
ビルド後のイベント
コマンドラインcd /d "$(TargetDir)"
WinUnit "$(TargetName)$(TargetExt)"
説明単体テスト
ビルドから除外いいえ

Visual Studio 2010

グループ項目内容
ビルドイベント/
ビルド後のイベント
コマンドラインcd /d "$(TargetDir)"
WinUnit "$(TargetPath)"
説明単体テスト
ビルドで使用はい

注意

テストコードサンプル

unicode.h をテスト

test_unicode.cpp

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
|
!
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
!
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
!
 
 
 
-
|
|
|
|
|
|
|
|
|
|
!
 
 
 
-
|
|
|
|
|
|
|
|
|
|
!
 
 
 
-
|
|
|
|
|
|
|
|
|
|
!
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
!
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
!
 
 
 
// test_unicode.cpp : DLL アプリケーション用にエクスポートされる関数を定義します。
//
 
#include "stdafx.h"
#pragma warning(push)
// warning C4793(ネイティブ関数としてコンパイルされました) を抑制
#pragma warning(disable: 4793)
#include <WinUnit.h>
#pragma warning(pop)
 
#include <string.h>
#include "../WCS2MBS/unicode.h"
#include "../WCS2MBS/strdump.h"
 
BEGIN_TEST(101_w2m_NULL)
{
    const wchar_t *wcs = NULL;
    char *expect_mbs = NULL;
    errno_t    expect_err = EINVAL;
    WIN_TRACE( L"function: w2m\n" );
    WIN_TRACE( L"in:     [NULL]\n" );
    WIN_TRACE( L"expect: [NULL], [%d]\n", expect_err );
    char *actual_mbs = w2m( wcs );
    errno_t    actual_err = GetLastError();
    WIN_ASSERT_EQUAL( expect_mbs, actual_mbs );
    WIN_ASSERT_EQUAL( expect_err, actual_err );
}
END_TEST
 
BEGIN_TEST(102_w2m_ASCII)
{
    const wchar_t *wcs = L"ABC";
    char *expect_mbs = "ABC";
    errno_t    expect_err = 0;
    WIN_TRACE( L"function: w2m\n" );
    WIN_TRACE( L"in:     [%s](%s)\n", wcs, dumpW(wcs) );
    WIN_TRACE( L"expect: [%s](%s), [%d]\n", wcs, dumpW(expect_mbs), expect_err );
    char *actual_mbs = w2m( wcs );
    errno_t    actual_err = GetLastError();
    WIN_ASSERT_ZERO( strcmp(expect_mbs, actual_mbs), 
        L"expect=[%s], actual=[%s]", dumpW(expect_mbs), dumpW(actual_mbs) );
    WIN_ASSERT_EQUAL( expect_err, actual_err );
}
END_TEST
 
BEGIN_TEST(103_w2m_SJIS)
{
    const wchar_t *wcs = L"あいう高髙崎﨑";
    char *expect_mbs = "あいう高髙崎﨑";
    errno_t    expect_err = 0;
    WIN_TRACE( L"function: w2m\n" );
    WIN_TRACE( L"in:     [%s](%s)\n", wcs, dumpW(wcs) );
    WIN_TRACE( L"expect: [%s](%s), [%d]\n", wcs, dumpW(expect_mbs), expect_err );
    char *actual_mbs = w2m( wcs );
    errno_t    actual_err = GetLastError();
    WIN_ASSERT_ZERO( strcmp(expect_mbs, actual_mbs), 
        L"expect=[%s], actual=[%s]", dumpW(expect_mbs), dumpW(actual_mbs) );
    WIN_ASSERT_EQUAL( expect_err, actual_err );
}
END_TEST
 
BEGIN_TEST(104_w2m_OutOfShiftJIS)
{
    const wchar_t *wcs = L"剥\x525D填\x5861頬\x9830";
    char *expect_mbs = NULL;
    errno_t    expect_err = EILSEQ;
    WIN_TRACE( L"function: w2m\n" );
    WIN_TRACE( L"in:     [%s](%s)\n", wcs, dumpW(wcs) );
    WIN_TRACE( L"expect: [NULL], [%d]\n", expect_err );
    char *actual_mbs = w2m( wcs );
    errno_t    actual_err = GetLastError();
    WIN_ASSERT_EQUAL( expect_mbs, actual_mbs );
    WIN_ASSERT_EQUAL( expect_err, actual_err );
}
END_TEST
 
BEGIN_TEST(105_w2m_SurrogatePairs)
{
    const wchar_t *wcs = L"吉\xd842\xdfb7";    // 土吉(U+20BB7)
    char *expect_mbs = NULL;
    errno_t    expect_err = EILSEQ;
    WIN_TRACE( L"function: w2m\n" );
    WIN_TRACE( L"in:     [%s](%s)\n", wcs, dumpW(wcs) );
    WIN_TRACE( L"expect: [NULL], [%d]\n", expect_err );
    char *actual_mbs = w2m( wcs );
    errno_t    actual_err = GetLastError();
    WIN_ASSERT_EQUAL( expect_mbs, actual_mbs );
    WIN_ASSERT_EQUAL( expect_err, actual_err );
}
END_TEST
 
BEGIN_TEST(201_m2w_NULL)
{
    const char *mbs = NULL;
    wchar_t *expect_wcs = NULL;
    errno_t    expect_err = EINVAL;
    WIN_TRACE( L"function: m2w\n" );
    WIN_TRACE( L"in:     [NULL]\n" );
    WIN_TRACE( L"expect: [NULL], [%d]\n", expect_err );
    const wchar_t *actual_wcs = m2w( mbs );
    errno_t    actual_err = GetLastError();
    WIN_ASSERT_EQUAL( expect_wcs, actual_wcs );
    WIN_ASSERT_EQUAL( expect_err, actual_err );
}
END_TEST
 
BEGIN_TEST(202_m2w_ASCII)
{
    const char *mbs = "ABC";
    wchar_t *expect_wcs = L"ABC";
    errno_t    expect_err = 0;
    WIN_TRACE( "function: m2w\n" );
    WIN_TRACE( "in:     [%s](%s)\n", mbs, dumpA(mbs) );
    WIN_TRACE( "expect: [%s](%s), [%d]\n", mbs, dumpA(expect_wcs), expect_err );
    const wchar_t *actual_wcs = m2w( mbs );
    errno_t    actual_err = GetLastError();
    WIN_ASSERT_ZERO( wcscmp(expect_wcs, actual_wcs), 
        L"expect=[%s], actual=[%s]", dumpW(expect_wcs), dumpW(actual_wcs) );
    WIN_ASSERT_EQUAL( expect_err, actual_err );
}
END_TEST
 
BEGIN_TEST(203_m2w_SJIS)
{
    const char *mbs = "あいう高髙崎﨑";
    wchar_t *expect_wcs = L"あいう高髙崎﨑";
    errno_t    expect_err = 0;
    WIN_TRACE( "function: m2w\n" );
    WIN_TRACE( "in:     [%s](%s)\n", mbs, dumpA(mbs) );
    WIN_TRACE( "expect: [%s](%s), [%d]\n", mbs, dumpA(expect_wcs), expect_err );
    const wchar_t *actual_wcs = m2w( mbs );
    errno_t    actual_err = GetLastError();
    WIN_ASSERT_ZERO( wcscmp(expect_wcs, actual_wcs), 
        L"expect=[%s], actual=[%s]", dumpW(expect_wcs), dumpW(actual_wcs) );
    WIN_ASSERT_EQUAL( expect_err, actual_err );
}
END_TEST
 
// EOF

テスト結果

Processing [test_unicode.dll]...
(101_w2m_NULL)
function: w2m
in:     [NULL]
expect: [NULL], [22]
(102_w2m_ASCII)
function: w2m
in:     [ABC](UTF16LE: 0041 0042 0043)
expect: [ABC](SJIS: 41 42 43), [0]
(103_w2m_SJIS)
function: w2m
in:     [あいう高髙崎﨑](UTF16LE: 3042 3044 3046 9ad8 9ad9 5d0e fa11)
expect: [あいう高髙崎﨑](SJIS: 82 a0 82 a2 82 a4 8d 82 fb fc 8d e8 fa b1), [0]
(104_w2m_OutOfShiftJIS)
function: w2m
in:     [剥?填?頬?](UTF16LE: 5265 525d 586b 5861 982c 9830)
expect: [NULL], [42]
(105_w2m_SurrogatePairs)
function: w2m
in:     [吉??](UTF16LE: 5409 d842 dfb7)
expect: [NULL], [42]
(201_m2w_NULL)
function: m2w
in:     [NULL]
expect: [NULL], [22]
(202_m2w_ASCII)
function: m2w
in:     [ABC](SJIS: 41 42 43)
expect: [ABC](UTF16LE: 0041 0042 0043), [0]
(203_m2w_SJIS)
function: m2w
in:     [あいう高髙崎﨑](SJIS: 82 a0 82 a2 82 a4 8d 82 fb fc 8d e8 fa b1)
expect: [あいう高髙崎﨑](UTF16LE: 3042 3044 3046 9ad8 9ad9 5d0e fa11), [0]
[test_unicode.dll] SUCCEEDED.  Tests run: 8; Failures: 0.

All tests passed.
Tests run: 8; Failed: 0.

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Thu, 19 Dec 2013 10:58:24 JST (1672d)