From 1ca0eee92c521061b4a32f7a1a2380a6abdf7658 Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski Date: Thu, 2 Mar 2017 17:25:43 +0100 Subject: [PATCH] tests: new test case for chip iterators Verify that we can correctly break a loop in gpiod_foreach_chip(). Signed-off-by: Bartosz Golaszewski --- tests/unit/tests-iter.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/unit/tests-iter.c b/tests/unit/tests-iter.c index f727d6c..00d63ba 100644 --- a/tests/unit/tests-iter.c +++ b/tests/unit/tests-iter.c @@ -88,6 +88,36 @@ GU_DEFINE_TEST(chip_iter_noclose, "gpiod_chip_iter - simple loop, noclose variant", GU_LINES_UNNAMED, { 8, 8, 8 }); +static void chip_iter_break(void) +{ + GU_CLEANUP(gu_free_chip_iter) struct gpiod_chip_iter *iter = NULL; + struct gpiod_chip *chip; + int i = 0; + + iter = gpiod_chip_iter_new(); + GU_ASSERT_NOT_NULL(iter); + + gpiod_foreach_chip(iter, chip) { + GU_ASSERT(!gpiod_chip_iter_err(iter)); + + if ((strcmp(gpiod_chip_label(chip), "gpio-mockup-A") == 0) || + (strcmp(gpiod_chip_label(chip), "gpio-mockup-B") == 0) || + (strcmp(gpiod_chip_label(chip), "gpio-mockup-C") == 0)) + i++; + + if (i == 3) + break; + } + + gpiod_chip_iter_free(iter); + iter = NULL; + + GU_ASSERT_EQ(i, 3); +} +GU_DEFINE_TEST(chip_iter_break, + "gpiod_chip_iter - break", + GU_LINES_UNNAMED, { 8, 8, 8, 8, 8 }); + static void line_iter(void) { GU_CLEANUP(gu_close_chip) struct gpiod_chip *chip = NULL; -- 2.30.2