+ /* Write two of the same value. */
+ val[1] = val[0];
+ htable_obj_add(&ht, &val[0]);
+ htable_obj_add(&ht, &val[1]);
+ i = 0;
+
+ result = htable_obj_getfirst(&ht, &i, &iter);
+ ok1(result == &val[0] || result == &val[1]);
+ if (result == &val[0]) {
+ ok1(htable_obj_getnext(&ht, &i, &iter) == &val[1]);
+ ok1(htable_obj_getnext(&ht, &i, &iter) == NULL);
+
+ /* Deleting first should make us iterate over the other. */
+ ok1(htable_obj_del(&ht, &val[0]));
+ ok1(htable_obj_getfirst(&ht, &i, &iter) == &val[1]);
+ ok1(htable_obj_getnext(&ht, &i, &iter) == NULL);
+ } else {
+ ok1(htable_obj_getnext(&ht, &i, &iter) == &val[0]);
+ ok1(htable_obj_getnext(&ht, &i, &iter) == NULL);
+
+ /* Deleting first should make us iterate over the other. */
+ ok1(htable_obj_del(&ht, &val[1]));
+ ok1(htable_obj_getfirst(&ht, &i, &iter) == &val[0]);
+ ok1(htable_obj_getnext(&ht, &i, &iter) == NULL);
+ }
+
+ htable_obj_clear(&ht);
+ htable_obj_clear(&ht2);