MbUnit: тестирование заказной коллекции - PullRequest
1 голос
/ 31 марта 2009

У меня есть пользовательский тип сбора данных. Эти данные сортируются по трем свойствам в их порядке, например, возьмите следующий пример:

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

Коллекция должна поддерживать порядок A, B, C, например ::100100

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

Я хотел бы написать несколько тестов, чтобы убедиться, что этот порядок поддерживается в коллекции с помощью обычных подозрительных операций добавления и удаления. Я использую Gallio и MbUnit 3, и я думаю, что должен быть простой способ сделать это с их атрибутами, я просто не понимаю этого прямо сейчас. Есть идеи?

Ответы [ 3 ]

1 голос
/ 01 апреля 2009

Ян Тревин работает над «CollectionContract» для MbUnit v3. Я не думаю, что он может обрабатывать упорядоченные коллекции прямо сейчас, но я уверен, что ему было бы интересно добавить эту возможность с учетом соответствующего делегата сравнения для описания инварианта упорядочения.

Пример этого вы найдете в приспособлении «SampleCollectionTest» проекта MbUnit.Samples в MbUnit v3.0.6.

Я рекомендую вам опубликовать вашу идею в списке рассылки mbunitdev, где он ее увидит: http://groups.google.com/group/mbunitdev

1 голос
/ 02 июня 2009

MbUnit v3 имеет новый полезный Assert.Sorted метод. Вам просто нужно передать экземпляр перечисления для оценки. Если перечисляемые объекты реализуют IEquatable, то все происходит автоматически.

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

В противном случае у вас все еще есть возможность указать пользовательский критерий сравнения (например, с новым удобным компаратором структурного равенства ).

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

Для получения более подробной информации ознакомьтесь со справочной документацией по API Gallio / MbUnit .

0 голосов
/ 31 марта 2009

В MbUnit v2 вы можете использовать CollectionOrderFixture .. не может найти его MbUnit v3, хотя

...