2010-07-25 11 views
24

Mam dwie listy, chcę sprawdzić, czy te dwie listy są takie same (zamówienie nie ważne), a to, czy jest to to samo, zależy od instancji IEqualityComparer, którą implementuję.CollectionAssert.AreEquivalent z Custom IEqualityComparer

Idealnym przypadkiem jest to, że mogę używać CollectionAssert.AreEquivalent z niestandardowym IEqualityComparer. Wydaje się jednak, że CollectionAssert.AreEquivalent nie zajmuje żadnego IEqualityComparer.

Każdy pomysł, jak to zrobić w sposób zwięzły i wielokrotnego użytku?

Odpowiedz

28

CollectionAssert.AreEquivalent jest zaimplementowany jako:

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

Możesz napisać swoje twierdzenie, że sposób i dostarczać niestandardową IEqualityComparer z Using:

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

Można także skrócić new CollectionEquivalentConstraint do Is.EquivalentTo:

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