MSTest のための Assert.Throws
まさか、1年以上投稿していなかったとは…。
さて、MSTest を使っていると、例外が発生したかのチェックには ExpectedExceptionAttribute ぐらいしか使えないの、不便ですよね?
不便でない方がいらっしゃいましたら、この記事は面白みがないので他の記事を探されるとよいかと思います。
IDisposable な Option 値を扱う
昨夜、こんな話題がありました。
https://twitter.com/unarist/status/771014982397927424
それに対する反応がこちら。
https://twitter.com/dico_leque/status/771015554727448576
https://twitter.com/unarist/status/771018817543639040
https://twitter.com/gab_km/status/771021365923110913
このあたりをさらっと見ていこうと思ったのが、今回のトピックです。
整数をビッグエンディアンのバイト配列に変換する
お仕事でC言語を触ることになりまして、日々あくせくしております。他の言語なら便利なライブラリがあるところ、C言語だと「さぁ、頑張ってみよう」みたいな感じで、自力でやらなくちゃいけないので、私のような温室育ちマンには大変ですね。
ちょうど本タイトルのようなことをやる場面に遭遇したので、備忘録がてら書き残します。
D言語のプログラムがリターンコード -8 で落ちる
はじめに
3年ぶりくらいにD言語の記事を書きます。
最近、とあるD言語のプロダクトを書いております。昨夜、新しいコミットをGitHubにプッシュしたところ、連携させているTravis-CIがテストプログラムを実行しようとして、謎のエラーを吐いて落ちました。
Job #7.1 - Gab-km/darjeeling - Travis CI
手元の環境(Windows 7/32bit/DMD 2.071.0)で動かしたときは問題ありませんでした。 Program exited with code -8 などと言われましても、果たしてこれが意味するところはいったい何なんでしょうか?
Persimmon のテストで成功と失敗の両方を扱う
前書き
Persimmon では普通のテストだけでなく、いわゆるパラメタライズド・テストを書くことも出来ます。パラメタライズド・テストは皆さんご存じの通り、パラメータをテストの外から渡すことにより、1つのテストで複数のテストケースに対応することが出来ます。
let ``your nice test`` =
let parameterizedTest(input, expected) = test {
let actual = fut input (* fut はテスト対象の関数 *)
assertEquals expected actual
}
parameterize {
case ("F#!F#!", true) (* ここのタプルが、下でrunしているテスト関数の引数になる *)
case ("Fortlan", false)
run parameterizedTest
}
たいていのケースでは問題にならないんですが、あるパラメータでは例外が発生してほしい、というようなニーズ(そういう設計が良いかどうか、は今回議論しません)がある場合もあります。Persimmon では trap コンピュテーション式でテスト対象が投げた例外を取得することが出来ます。しかし、別のパラメータでは例外が発生しないようなテストケースを用意していた場合、テスト対象が例外を投げないとテスト失敗になってしまいます。
PowerShell で使う認証情報を設定する
自由なインターネットを謳歌出来ない方向けの記事です。具体的には、認証付きプロキシの内側からインターネットの大海原に漕ぎ出さなければならない方(私を含む)用の記事となります。
PowerShell を使う上で、System.Net.WebClient などを使うことはよくあると思います。しかし、プロキシの壁があると、以前書いたこの記事のように、System.Net.WebProxy などを用意する必要があります。
毎回こんなことをやるのは手間ですし、第一 Invoke-Expression などで Web 上のスクリプトをダウンロードして実行しようとすると、スクリプト上の WebClient がプロキシを持ってなくて407が返ってくるというケースもよくあります。
じゃあどうするかというと、あらかじめデフォルトの認証情報を設定しておけば良いのです。
C# での Using 関数
C# でファイルなどのリソースを上手く管理するには、皆さんもちろん using 句(VB であれば Using 句ですね)を使うことだろうと思います:
using (var sr = new System.IO.StreamReader("hoge.txt"))
{
// StreamReaderインスタンスを使って何かする
DoSomethingWith(sr);
}
同じ.NET言語で、F# でも同じようなことが出来て、例えば use 束縛があります:
use sr = new System.IO.StreamReader("hoge.txt")
// StreamReaderインスタンスを使って何かする
DoSomethingWith sr
一方、F# では using 関数というのもあって、こちらも同じような用途に使うことが出来ます:
using (System.IO.StreamReader("hoge.txt")) DoSomethingWith
ほとんどの C# ユーザーは現状で問題ないと思いますが、ごく一部の C#er (私を含む)には欲しい機能かもしれません。
自前で assertSeqEquals を定義する
まえがき
全世界1,600(万…ではない)人の Persimmon ユーザの皆さん、こんばんは。
Persimmon 2.0に向けた開発が(僕以外の人で)進められています。そこにおそらく入るであろう機能に、 assertSeqEquals があります。何故これが必要かというと、今の Persimmon は seq<'T> 型の値同士をアサートすると上手くいかないという問題があります。seq<'T> 型の値を使うことは少なくないので、アサートできて欲しいです。
seq同士を比較したい · Issue #73 · persimmon-projects/Persimmon
assertSeqEquals が導入されるのを待つという選択肢もありますが、私はよくこの issue にぶち当たってしまうので、出来れば今すぐ解決したい。その場合はというと、自前で assertSeqEquals を実装する、という手段をとることになります。
Persimmon合宿に行ってきた
3/12~13の2日間、神奈川県は湯河原にて、通称「柿」こと Persimmon のための開発合宿に行ってきました。
この開発合宿の目的は確か2点あって、
- 次期 Persimmon (いわゆる Persimmon 2.0)に向けてモデルの再設計を行う
- Persimmon 用のVS拡張を作る
というのを合宿で頑張ろうということになっていました。
なっていました、というのは、目的その2がほぼほぼ解決しつつあるためです。
けきょー先輩がVSテストエクスプローラなど、VS拡張周りの重い部分に電撃戦を敢行してくれたおかげで、むしろ合宿でやることがなくなったのでした。(一部動作がアレしてるところがあったようですが、そこは某社内で情報展開がなされるはず…?)
なので、本開発合宿は目的その1にフォーカスして実施されました。