LGBTQのシンボル

2012年8月28日火曜日

MSTest で関数の戻り値のprivateなメンバにアクセスする

たとえば次のような場合は自動生成されるクラス(Man_Accessor)によって簡単にアクセスできますよね。
class Man {
    private int age;
}

class ManTest {
    [TestMethod()]
    void AgeTest() {
        var man = new Man_Accessor();
        Assert.IsTrue(man.age >= 20);
    }
}

でも関数やプロパティの戻り値のオブジェクトのprivateなメンバを検査したかったら…?
次のようにすればいいらしいです。
class State {
    private int StateFlag;
    public State(int state) {
        StateFlag = state;
    }
}
class Man {
    public State State { get { return new State(0); } }
}

class ManTest {
    [TestMethod()]
    void AgeTest() {
        var stateObject = new PrivateObject(new Man().State);
        var state = new State_Accessor(stateObject);
        Assert.AreEqual(state.StateFlag, 0);
    }
}

2012年8月7日火曜日

XMLを自動整形するテキストエディタMeryのマクロ

MeryのAlapaバージョンで変更されたXML整形機能、今のところ、登録されたタグ(htmlタグ)以外の物が入ってたりすると整形できないようなので登録などをしなくてもいいXMLを整形できるマクロを作りました。そのかわりオプションは全くありません。すべておまかせです。マクロを使うためには.net 4.0の導入が必要です。

ダウンロード

こちらからどうぞ[xmlFormatter.zip]

マクロの修正

マクロはMeryのとの受け渡しに使っているだけでXMLのフォーマット自体は別途実行ファイルを使っています。そのため、実行には実行ファイルのフルパスを書く必要があります。
(前略)
var wsh = new ActiveXObject("WScript.Shell");
wsh.Run("cmd /c D:\\Desktop\\xmlformatter.exe "+tmpFilePath,0,true);

//フォーマット結果の読み込み
try{
(後略)
ここのxmlformatter.exeまでのパスをフルパスで書いてください。\は\\と重ねて書く必要があります。日本語やスペースがあるディレクトリは使うことができません。

2012年8月4日土曜日

管理者権限不要のキーボード配列変更ソフト


レジストリを使わない常駐タイプのキーボード配列変更ソフトを作ってみました。レジストリを使わないので終了させたらすぐに元に戻りますし、管理者権限がなくても使い慣れたキー配列でストレスなく作業をすることができます。ダウンロードファイルには常駐用のソフトと設定エディターが含まれています。設定ファイルはXMLファイルなのでテキストエディタで作ることもできます。また常駐ソフトは.NET 2.0以上で稼働するので.NET4.0が入ってなくても安心です。

今回はreadme.txtも含めて全部英語で作ってみました。何となくw UIもエディターは無駄にWPFでリボン使ってみたりしているので(私が楽しい)遊び的な要素が多いです。つまり今回も誰得?俺得!!なわけです。そういうわけでわりとてけとーです。何かありましたらtwitter:@kassyiか、コメントまでどうぞ。

ダウンロード

こちらからどうぞ[KLC.zip]

ソースはこちらから[KLC -src.zip]

制限事項

・編集&保存しても設定が古いまま→設定ファイルエディターに於いて、プルダウンから選択した後どこか他のセルを選択してドロップダウンが表示されない状態にしてください。ドロップダウンが表示されたままだと確定となっておらず、保存しても編集結果が反映されません。

更新履歴

2012/09/06
  • 設定ファイルの不正を検出しない問題を修正
  • 設定ファイルを読み込んでもプログラムで使われない致命的なバグを修正
  • ソースを公開