<   2004年 05月 ( 2 )   > この月の画像一覧

[CoveredCalc] 演算子の直後に =

2 人目の子供ができてから、家が戦場になって開発が全く進みません(汗)

それはそうと、電卓で演算子のボタンを押した直後に = を押すとどうなるか知ってますか?
つまり、「3 + =」というように入力するわけです。
手元にあった 3 つの電卓で試してみました。

(1) 高校くらいからプログラミングのお供として使っているお気に入り電卓
「3 + =」 → 「3.」
「3 - =」 → 「3.」
「3 × =」 → 「9.」
「3 ÷ =」 → 「1.」
加減算については表示は変わりませんが、乗除算では[×]、[÷]を入力した時点で表示されているものがそのまま入力されたと見なしているようです。どうも中途半端な感じで納得いきません。

(2) 100円ショップで購入した電卓(会社で試したので正確な数字を覚えてないのですが)
「3 + =」 → 「3.」
「3 - =」 → 「-3.」
「3 × =」 → 「9.」
「3 ÷ =」 → なにやらややこしそうな小数
全く法則がわかりません…。割り算については、その後、「× 3 =」とすると、3 に近い数字が出るので、3 に近い数字で割られたようです。

(3) Windows の Microsoft 謹製(?)電卓
「3 + =」 → 「6.」
「3 - =」 → 「0.」
「3 × =」 → 「9.」
「3 ÷ =」 → 「1.」
演算子を入力した時点で表示されているものがそのまま入力されたと見なしているようです。統一されていて気持ちがいい仕様です。

というわけで、CoveredCalc は (3) に準拠してみることにしました。
つーか、してみることにしただけで、現在はそういう動きをしてないんですが。
参考までに現在の動き:
「3 + =」 → 「3.」
「3 - =」 → 「3.」
「3 × =」 → 「0.」
「3 ÷ =」 → 演算エラー
単に 0 が入力されたと見なされているだけです。
[PR]
by hironytic | 2004-05-12 23:15 | 構想

VC7.1 で cppunit その2

しばらくいじる時間がなくて前回から間が開いてしまいました。

前回、cppunit のインストールはできたので、http://www.unittest.org/ から、河童をダウンロードし、その中の子河童(cocuppa)と子馬(couma)をビルド。これらを使って、ひな形をねつ造することにします。
が、できたひな形でビルドが通りません。

結構悩んだんですが、結局のところ、次の 2 点が重要です。(今回は、2 番目の設定ができてませんでした)
・実行時型情報(RTTI)を有効にする。(プロジェクトのプロパティの、[C/C++]→[言語]→[ランタイム型情報を有効にする] を「はい (/GR)」にする)
・マルチスレッド DLL 版のランタイムライブラリを使う。(同プロパティの、「C/C++]→[コード生成]→[ランタイム ライブラリ] を Debug 版なら「マルチスレッド デバッグ DLL (/MDd)」に、Release 版なら「マルチスレッド DLL (/MD)」にする)

main() 関数は cocuppa に作らせると、ある程度高機能なものを作ってくれるんですが、そこまで必要としないので、それを参考に必要な部分だけとってきて、自分専用なコードなどを加えました。
main() 関数の中はこんな感じ。

char OutputFile[] = "TestResult.txt";
int main(int argc, char* argv[])
{
    CppUnit::TextUi::TestRunner runner;
    runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());

    std::ofstream outputFile(OutputFile);

    CppUnit::Outputter* outputter = new CppUnit::CompilerOutputter(&runner.result(), outputFile);
    runner.setOutputter(outputter);
    bool result = runner.run();

    outputFile.close();

    ::ShellExecute(NULL, "open", OutputFile, NULL, NULL, SW_SHOWDEFAULT);
    return (result) ? 0 : 1;
}

テストケースを追加してたら、さっそくバグが見つかるし…。
[PR]
by hironytic | 2004-05-02 15:22 | 情報