NREMENTによるシーケンス順序のアサート


私は最近のNREMENT COREへの小さな追加をしました.そして、私は、特定の種類のテストを誰にとっても少し簡単にすることを望みます.
簡単な例
[Test]
public void ShouldAssertSimpleOrder()
{
    // Arrange
    var numbers = new[] { 4, 2, 5, 1 };

    // Act
    var ascending = numbers.OrderBy(x => x).ToArray();
    var descending = numbers.OrderByDescending(x => x).ToArray();

    // Assert
    Expect(ascending)
        .To.Be.Ordered.Ascending();
    Expect(descending)
        .To.Be.Ordered.Descending();
}
それで、あなたは考えているかもしれません:「これはすべて良いです、しかし、私が数より複雑なタイプのコレクションの注文を主張したいならば、どうですか?」
そこに取ることができるいくつかの戦略があります.最初に、上記のアサーションの基礎となるロジックはIComparable<T>インターフェースに依存するComparer.Defaultを利用します.
多くのタイプはalready supportedです
  • あなたの複雑なタイプにIComparable<T>を実装することができて、LINQ
  • とどこでもそれを注文することができます
  • 、あなたは面白いビットから.Selectを缶詰にして、その
  • の上で断言することができます
    ( 3 )おそらくあなたの試みになるでしょう.
    [Test]
    public void ShouldAssertOrderedAscending()
    {
        // Arrange
        var doggos = new[]
        {
            new { id = 1, name = "Rex", adopted = new DateTime(2020, 1, 1) },
            new { id = 2, name = "Spot", adopted = new DateTime(2019, 5, 6) },
            new { id = 3, name = "Woofles", adopted = new DateTime(2020, 4, 5) }
        };
        Expect(doggos.Select(d => d.id))
            .To.Be.Ordered.Ascending();
        // Act
        var orderedByAdoption = doggos.OrderBy(d => d.adopted);
        // Assert
        Expect(orderedByAdoption.Select(d => d.adopted))
            .To.Be.Ordered.Ascending();
    }
    
    上記の、そして、IOrderedEnumerable<T>のための一流のサポートは、nexpect 1.0.181で加えられます.
    ハッピーテスト!