2016-03-01 77 views
0

我有一个排序的枚举,代表我遍历它们的顺序的一个杂货店的部分。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

enum的顺序是否显着?它似乎与您以后要做的字母排序有关。 – Rob

+0

是的,也许我误解了排序顺序,我想根据他们的部门按字母顺序排列项目,所以[面包(面包店),狗食(散装),胡萝卜(生产),橙子(生产)]分类为[胡萝卜,桔子,狗粮,面包] – Somkun

回答

0

如果排序是业务需求,我会为生成(并可能显示)排序结果的方法编写一个测试。将其传递给GroceryItem的无序集合,并验证订单是否正确。

对测试只有上的枚举可能是错误的方式去(虽然你可以做两个测试)。我说的原因是,你不能保证你的代码实际上按部门排序。

这些都要去未被发现:

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