2016-03-01 3 views
0

У меня есть перечисление, которое упорядочено, представляя разделы продуктового магазина в том порядке, в котором я их пересекаю.Unit Testing Order of Enum

enum Departments { Produce=0, Bulk=1, Deli=2, Frozen=3, NonFood=4, Bakery=5, DryGoods=6 } 

Теперь у меня есть некоторый класс, представляющие элементы, чтобы получить, что имеет имя и отдел:

class GroceryItem : IComparable<GroceryItem> 
{ 
    string Name; 
    Departments Department; 
} 

правильная функция сортировки сортирует список покупок в алфавитном порядке Департамента, так что я могу минимизировать свой обход магазин.

Было бы ценным, чтобы подразделение тестировало это перечисление для заказа, или я должен использовать какую-либо другую структуру данных для хранения отдела?

+0

Является ли порядок перечисления значительным? Это, похоже, не связано с алфавитным типом, который вы делаете позже. – Rob

+0

Да, возможно, я неправильно задал порядок сортировки, я хочу сортировать предметы по их отделу, а затем в алфавитном порядке, поэтому [Хлеб (хлебобулочные изделия), Корм ​​для собак (Массовая), Морковь (Производство), Апельсины (Продукция)] сортируется по [Морковь, Апельсины, корм для собак, хлеб] – Somkun

ответ

0

Если сортировка является бизнес-требованием, я бы написал тест для метода, производя (и, возможно, отображая) отсортированные результаты. Передайте неупорядоченную коллекцию GroceryItem s и проверьте правильность заказа.

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

Они будут все незамеченными:

groceryItems.OrderBy(g => g.Name).ThenBy(g => g.Department); 

groceryItems.OrderByDescending(g => g.Department).ThenBy(g => g.Department); 

groceryItems.OrderBy(g => g.Name); 

groceryItems.OrderBy(g => g.Department); 

Даже если перечисление правильно отсортирован.

+0

Поскольку я использую IComparable, мне нужно протестировать коллекцию, содержащую 1 объект для каждого отдела, отсортировать его, а затем убедиться, что они находятся в правильном порядке послесловия? – Somkun

+0

В значительной степени - да. Хотя у меня было бы два/три элемента для каждого отдела, чтобы проверить, что сортировка «ThenBy» также работает – Rob