tests: drivers: gpio: direction: use new ztest api

Adjust suite to use new ztest API.

Signed-off-by: Christopher Friedt <cfriedt@fb.com>
diff --git a/tests/drivers/gpio/gpio_get_direction/prj.conf b/tests/drivers/gpio/gpio_get_direction/prj.conf
index 11186ae..3d3a27c 100644
--- a/tests/drivers/gpio/gpio_get_direction/prj.conf
+++ b/tests/drivers/gpio/gpio_get_direction/prj.conf
@@ -1,3 +1,4 @@
 CONFIG_ZTEST=y
+CONFIG_ZTEST_NEW_API=y
 CONFIG_GPIO=y
 CONFIG_GPIO_GET_DIRECTION=y
diff --git a/tests/drivers/gpio/gpio_get_direction/src/main.c b/tests/drivers/gpio/gpio_get_direction/src/main.c
index 73dd416..4b241ee 100644
--- a/tests/drivers/gpio/gpio_get_direction/src/main.c
+++ b/tests/drivers/gpio/gpio_get_direction/src/main.c
@@ -6,25 +6,50 @@
 
 #include "test_gpio_get_direction.h"
 
-static void test_disconnect(void)
+struct gpio_get_direction_fixture {
+	const struct device *port;
+	gpio_pin_t pin;
+	gpio_flags_t flags;
+};
+
+static void *gpio_get_direction_setup(void)
+{
+	static struct gpio_get_direction_fixture fixture;
+
+	fixture.pin = TEST_PIN;
+	fixture.port = device_get_binding(TEST_DEV);
+
+	return &fixture;
+}
+
+static void gpio_get_direction_before(void *arg)
+{
+	struct gpio_get_direction_fixture *fixture = (struct gpio_get_direction_fixture *)arg;
+
+	zassert_not_null(fixture->port, "device " TEST_DEV " not found");
+}
+
+static void common(struct gpio_get_direction_fixture *fixture)
 {
 	int rv;
-	const struct device *port;
-	gpio_pin_t pin = TEST_PIN;
-	gpio_flags_t flags = GPIO_DISCONNECTED;
 
-	port = device_get_binding(TEST_DEV);
-	zassert_not_null(port, "device " TEST_DEV " not found");
-
-	rv = gpio_pin_configure(port, pin, flags);
+	rv = gpio_pin_configure(fixture->port, fixture->pin, fixture->flags);
 	if (rv == -ENOTSUP) {
-		/* some drivers / gpio hw do not support disconnect */
+		/* some drivers / hw might not support e.g. input-output or disconnect */
 		ztest_test_skip();
 	}
 
-	zassert_equal(0, rv, "gpio_pin_configure() failed: %d", rv);
+	zassert_ok(rv, "gpio_pin_configure() failed: %d", rv);
+}
 
-	rv = gpio_pin_is_input(port, pin);
+ZTEST_F(gpio_get_direction, test_disconnect)
+{
+	int rv;
+
+	fixture->flags = GPIO_DISCONNECTED;
+	common(fixture);
+
+	rv = gpio_pin_is_input(fixture->port, fixture->pin);
 	if (rv == -ENOSYS) {
 		/* gpio_pin_direction() is not supported in the driver */
 		ztest_test_skip();
@@ -32,24 +57,18 @@
 
 	zassert_equal(false, rv, "gpio_pin_is_input() failed: %d", rv);
 
-	rv = gpio_pin_is_output(port, pin);
+	rv = gpio_pin_is_output(fixture->port, fixture->pin);
 	zassert_equal(false, rv, "gpio_pin_is_output() failed: %d", rv);
 }
 
-static void test_input(void)
+ZTEST_F(gpio_get_direction, test_input)
 {
 	int rv;
-	const struct device *port;
-	gpio_pin_t pin = TEST_PIN;
-	gpio_flags_t flags = GPIO_INPUT;
+	fixture->flags = GPIO_INPUT;
 
-	port = device_get_binding(TEST_DEV);
-	zassert_not_null(port, "device " TEST_DEV " not found");
+	common(fixture);
 
-	rv = gpio_pin_configure(port, pin, flags);
-	zassert_equal(0, rv, "gpio_pin_configure() failed: %d", rv);
-
-	rv = gpio_pin_is_input(port, pin);
+	rv = gpio_pin_is_input(fixture->port, fixture->pin);
 	if (rv == -ENOSYS) {
 		/* gpio_pin_direction() is not supported in the driver */
 		ztest_test_skip();
@@ -57,24 +76,18 @@
 
 	zassert_equal(true, rv, "gpio_pin_is_input() failed: %d", rv);
 
-	rv = gpio_pin_is_output(port, pin);
+	rv = gpio_pin_is_output(fixture->port, fixture->pin);
 	zassert_equal(false, rv, "gpio_pin_is_output() failed: %d", rv);
 }
 
-static void test_output(void)
+ZTEST_F(gpio_get_direction, test_output)
 {
 	int rv;
-	const struct device *port;
-	gpio_pin_t pin = TEST_PIN;
-	gpio_flags_t flags = GPIO_OUTPUT | GPIO_OUTPUT_INIT_LOW;
+	fixture->flags = GPIO_OUTPUT | GPIO_OUTPUT_INIT_LOW;
 
-	port = device_get_binding(TEST_DEV);
-	zassert_not_null(port, "device " TEST_DEV " not found");
+	common(fixture);
 
-	rv = gpio_pin_configure(port, pin, flags);
-	zassert_equal(0, rv, "gpio_pin_configure() failed: %d", rv);
-
-	rv = gpio_pin_is_input(port, pin);
+	rv = gpio_pin_is_input(fixture->port, fixture->pin);
 	if (rv == -ENOSYS) {
 		/* gpio_pin_direction() is not supported in the driver */
 		ztest_test_skip();
@@ -82,45 +95,28 @@
 
 	zassert_equal(false, rv, "gpio_pin_is_input() failed: %d", rv);
 
-	rv = gpio_pin_is_output(port, pin);
+	rv = gpio_pin_is_output(fixture->port, fixture->pin);
 	zassert_equal(true, rv, "gpio_pin_is_output() failed: %d", rv);
 }
 
-static void test_input_output(void)
+ZTEST_F(gpio_get_direction, test_input_output)
 {
 	int rv;
-	const struct device *port;
-	gpio_pin_t pin = TEST_PIN;
-	gpio_flags_t flags = GPIO_INPUT | GPIO_OUTPUT | GPIO_OUTPUT_INIT_LOW;
+	fixture->flags = GPIO_INPUT | GPIO_OUTPUT | GPIO_OUTPUT_INIT_LOW;
 
-	port = device_get_binding(TEST_DEV);
-	zassert_not_null(port, "device " TEST_DEV " not found");
+	common(fixture);
 
-	rv = gpio_pin_configure(port, pin, flags);
-	if (rv == -ENOTSUP) {
+	rv = gpio_pin_is_input(fixture->port, fixture->pin);
+	if (rv == -ENOSYS) {
 		/* some drivers / gpio hw do not support input-output mode */
 		ztest_test_skip();
 	}
 
-	zassert_equal(0, rv, "gpio_pin_configure() failed: %d", rv);
-
-	rv = gpio_pin_is_input(port, pin);
-	if (rv == -ENOSYS) {
-		ztest_test_skip();
-	}
-
 	zassert_equal(true, rv, "gpio_pin_is_input() failed: %d", rv);
 
-	rv = gpio_pin_is_output(port, pin);
+	rv = gpio_pin_is_output(fixture->port, fixture->pin);
 	zassert_equal(true, rv, "gpio_pin_is_output() failed: %d", rv);
 }
 
-void test_main(void)
-{
-	ztest_test_suite(gpio_get_direction,
-		ztest_unit_test(test_disconnect),
-		ztest_unit_test(test_input),
-		ztest_unit_test(test_output),
-		ztest_unit_test(test_input_output));
-	ztest_run_test_suite(gpio_get_direction);
-}
+ZTEST_SUITE(gpio_get_direction, NULL, gpio_get_direction_setup, gpio_get_direction_before, NULL,
+	    NULL);