Question

J'ai un type de collection personnalisée des données. Ces données sont triées par trois propriétés dans l'ordre, par exemple Prenons l'exemple suivant:

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

La collection doit maintenir l'ordre de A, B, C, par exemple:.

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

Je voudrais écrire des tests pour faire en sorte que cet ordre est maintenu dans la collection à travers le Ajouter Usual Suspect et supprimer des opérations. J'utilise Gallio et MbUnit 3, et je pense qu'il doit y avoir un moyen facile de le faire avec leurs attributs, je ne comprends pas en ce moment. Toutes les idées?

Était-ce utile?

La solution

MbUnit v3 a un nouveau utile Assert.Sorted . Vous avez juste besoin de passer l'instance de recensement pour évaluer. Si les objets énumérés met en œuvre IEquatable, alors tout est automatique.

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

Dans le cas contraire, vous avez encore la possibilité de spécifier un critère de comparaison personnalisé (avec la nouvelle pratique comparateur d'égalité structurelle, par exemple).

[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 }
   });
}

Jetez un oeil à la Gallio / MbUnit API référence doc pour plus de détails.

Autres conseils

Yann Trevin travaille sur un "CollectionContract" pour MbUnit v3. Je ne pense pas qu'il peut gérer des collections ordonnées en ce moment mais je suis sûr qu'il serait intéressé à ajouter cette capacité donnée un délégué de comparaison appropriée pour décrire l'invariant de commande.

Vous trouverez un exemple dans l'appareil « SampleCollectionTest » du projet MbUnit.Samples dans MbUnit v3.0.6.

Je recommande que vous publiez votre idée à la liste de diffusion de mbunitdev où il va le voir: http: //groups.google.com/group/mbunitdev

Dans MbUnit v2, vous pouvez utiliser CollectionOrderFixture .. ne peut pas trouver ce qu'il MbUnit v3 si

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top