chiark / gitweb /
tests: add test for fdset_iterate
authorRonny Chevalier <chevalier.ronny@gmail.com>
Sat, 16 Aug 2014 12:19:08 +0000 (14:19 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 18 Aug 2014 16:43:52 +0000 (18:43 +0200)
src/test/test-fdset.c

index 3b77415c3a65304f857029c81f53da0ce4fee373..91df7eb6631fe2ee26e0921a51e7f44c97e3f4b5 100644 (file)
@@ -126,12 +126,41 @@ static void test_fdset_remove(void) {
         unlink(name);
 }
 
+static void test_fdset_iterate(void) {
+        int fd = -1;
+        FDSet *fdset = NULL;
+        char name[] = "/tmp/test-fdset_iterate.XXXXXX";
+        Iterator i;
+        int c = 0;
+        int a;
+
+        fd = mkostemp_safe(name, O_RDWR|O_CLOEXEC);
+        assert_se(fd >= 0);
+
+        fdset = fdset_new();
+        assert_se(fdset);
+        assert_se(fdset_put(fdset, fd) >= 0);
+        assert_se(fdset_put(fdset, fd) >= 0);
+        assert_se(fdset_put(fdset, fd) >= 0);
+
+        FDSET_FOREACH(a, fdset, i) {
+                c++;
+                assert_se(a == fd);
+        }
+        assert_se(c == 1);
+
+        fdset_free(fdset);
+
+        unlink(name);
+}
+
 int main(int argc, char *argv[]) {
         test_fdset_new_fill();
         test_fdset_put_dup();
         test_fdset_cloexec();
         test_fdset_close_others();
         test_fdset_remove();
+        test_fdset_iterate();
 
         return 0;
 }