J'essaie de comparer le contenu de 2 collections dans un test unitaire en .NET en utilisant MSTEST. Pour rendre les choses simples, au lieu d'avoir à .Sort() et ensuite faire une boucle dans la collection et comparer les éléments un par un, j'ai trouvé la nouvelle et très cool méthode .Intersect Extension.Méthode d'extension d'intersection, la sensibilité à la casse ne fonctionne pas
Il semble fonctionner à merveille en faisant:
Assert.AreEqual(expected.Count, actual.Intersect(expected).Count)
Cependant, maintenant que j'ai un test qui doit être sensible à la casse, il se casse. J'ai essayé d'envoyer le second paramètre d'Intersect, StringComparer.Ordinal, StringComparer.InvariantCulture, et StringComparer.CurrentCulture ... pas de chance ..
Quelqu'un l'a déjà ressenti?
merci!
EDIT: voici les données:
Actual:
(0) "FOO" String
(1) "foo" String
(2) "Foo" String
(3) "fOo" String
(4) "foO" String
(5) "BAR" String
(6) "BAR" String
(7) "BAZ" String
(8) "baz" String
(9) "foo" String
Expected:
(0) "FOO" String
(1) "foo" String
(2) "Foo" String
(3) "fOo" String
(4) "foO" String
(5) "BAR" String
(6) "BAR" String
(7) "BAZ" String
(8) "baz" String
(9) "foo" String
actual.Intersect(expected, StringComparer.CurrentCulture)
(0) "FOO" String
(1) "foo" String
(2) "Foo" String
(3) "fOo" String
(4) "foO" String
(5) "BAR" String
(6) "BAZ" String
(7) "baz" String
Il semble enlever une correspondance en double 'foo', et un double correspondant 'baz'. Peut-être existe-t-il une meilleure façon d'affirmer que les collections correspondent?
_EDIT2: Je pense que Intersect() supprime les doublons, ce qui explique pourquoi cela se brise. J'ai trouvé la classe CollectionAssert. C'est exactement ce dont j'avais besoin! Merci! _
Quand vous dites « ça casse » et « pas de chance », que voulez-vous dire? Voulez-vous dire "ça casse" comme dans "ça donne le mauvais compte"? Voulez-vous dire "pas de chance" comme dans "cela donne le même mauvais résultat"? –
Aussi, êtes-vous certain que le cas insensible à la casse fonctionne correctement, et ne donne pas simplement le nombre correct par coïncidence? –
Et aussi, vous pouvez jeter un oeil à la classe CollectionAssert, qui peut être plus appropriée pour ce que vous essayez de faire. –