2010-07-25 16 views
24

Ho due elenchi, voglio verificare se i due elenchi sono uguali (ordine non importante) e se è lo stesso dipende dall'istanza IEqualityComparer che implemento.CollectionAssert.AreEquivalent with Custom IEqualityComparer

Il caso ideale è che posso utilizzare CollectionAssert.AreEquivalent con Custom IEqualityComparer. Tuttavia sembra che CollectionAssert.AreEquivalent non contenga alcun IEqualityComparer.

Qualche idea su come farlo in modo succinto e riutilizzabile?

risposta

28

CollectionAssert.AreEquivalent è implementato come:

Assert.That(actual, new CollectionEquivalentConstraint(expected), message, args); 

È possibile scrivere il vostro affermare in questo modo e la fornitura di un costume IEqualityComparer con Using:

Assert.That(actual, 
    new CollectionEquivalentConstraint(expected).Using(customComparer)); 

Si può anche ridurre new CollectionEquivalentConstraint-Is.EquivalentTo:

Assert.That(actual, Is.EquivalentTo(expected).Using(customComparer));