質問

カスタムコレクションタイプのデータがあります。このデータは、3 つのプロパティによってその順序で並べ替えられます。次の例を見てみましょう。

class Data
{
  public int PropertyA() { get; set; }
  public int PropertyB() { get; set; }
  public int PropertyC() { get; set; }
}

コレクションは A、B、C の順序を維持する必要があります。例:

[A, B, C]
[1, 2, 5]
[1, 3, 3]
[1, 3, 4]
[1, 4, 1]
[2, 1, 2]
[3, 3, 1]
[3, 4, 2]

通常の疑わしい追加操作と削除操作を通じて、この順序がコレクション内で維持されていることを確認するテストをいくつか作成したいと思います。私は Gallio と MbUnit 3 を使用しています。これらの属性を使用してこれを行う簡単な方法があるはずだと思いますが、今はそれがわかりません。何か案は?

役に立ちましたか?

解決

MbUnitのV3 の<のhref = "http://www.gallio.org新しい便利を持っています/api/html/Overload_MbUnit_Framework_Assert_Sorted.htm」REL = "nofollowをnoreferrer">の Assert.Sorted のの方法。あなただけ評価するために、列挙インスタンスを渡す必要があります。列挙されたオブジェクトがIEquatableを実装している場合、そのすべてが自動的に行われます。

[Test]
public void MySimpleTest
{
   var array = new int[] { 1, 5, 9, 12, 26 };
   Assert.Sorted(array);
}

そうでなければ、あなたはまだカスタムの比較基準(新しい便利で<のhref =「http://www.gallio.org/api/html/T_MbUnit_Framework_StructuralEqualityComparer_1.htm」のrel =「nofollowをnoreferrer」を指定する可能性を持っています>構造等値比較に、)例えば

[Test]
public void MyComplexTest
{
   var array = new Foo[] { new Foo(123), new Foo(456), new Foo(789) };
   Assert.Sorted(array, new StructuralEqualityComparer<Foo>
   {
      { x => x.Value }
   });
}

詳細はガッリオ/ MbUnitの APIドキュメントを参照するを見てください。

他のヒント

ヤンTrevinはMbUnitのv3のための "CollectionContract" に取り組んできました。私はそれが今注文したコレクションを扱うことができるとは思わないが、私は彼が注文不変を記述するための適切な比較デリゲートを与えられたその機能を追加することに興味があるだろうと確信しています。

あなたはMbUnitのv3.0.6の中MbUnit.Samplesプロジェクトの「SampleCollectionTest」固定具にこの例を見つけることができます。

私はあなたが、彼はそれを見ることができますmbunitdevメーリングリストにあなたのアイデアを投稿することをお勧めします:ます。http: //groups.google.com/group/mbunitdevする

MbUnit v2 では、次のように使用できます。 コレクション注文備品..MbUnit v3 が見つかりません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top