如何在C中失败的快速迭代器失败

时间:2013-12-03 11:22:32

标签: c design-patterns iterator

我想在C中实现一个故障快速迭代器,即如果列表它应该失败 在迭代时被修改。

失败的位置肯定会在hasNext和next方法中,我将检查自迭代器创建以来的修改次数。所以我想我知道什么时候应该失败但我不知道它应该如何失败。

我想过assert(),但它只适用于调试,所以可以吗?以及如何进行单元测试? 我最关心的是找到一种单元测试此功能的方法。

// List Methods
List* List_new(void);
void List_delete(List** self);
int List_add(List* self, void* data);
size_t List_size(List* self);
void* List_head(List* self);
int List_removeHead(List* self);
ListIterator* iterator(List* self);

// ListIterator Methods
bool ListIterator_hasNext(ListIterator* self);
void* ListIterator_next(ListIterator* self);

1 个答案:

答案 0 :(得分:1)

这取决于你希望程序在这个例子中做什么(或能够做什么)。

断言可能很糟糕,因为它会杀死程序,我怀疑这是合适的。

您可以将大部分返回值移动到输出参数中,然后返回一个bool,指示操作是否有效,然后您可以在单元测试中断言。