--- /dev/null
+# SPDX-FileCopyrightText: 2024 Brent Rubell for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
+import pytest
+import board
+import digitalio
+
+# Digital output pins
+
+
+def test_Dx_OUTPUT_TRUE():
+ """Test digital output pin functionality."""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_out = digitalio.DigitalInOut(board.Dx_OUTPUT)
+ pin_out.direction = digitalio.Direction.OUTPUT
+ # Test setting the value and reading it back
+ pin_out.value = True
+ assert pin_out.value == True
+ pin_out.value = False
+ assert pin_out.value == True
+ pin_out.deinit()
+
+
+# Digital Input Pins
+
+
+def test_Dx_INPUT_TRUE():
+ """Test digital input pin Dx_INPUT_TRUE."""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_true = digitalio.DigitalInOut(board.Dx_INPUT_TRUE)
+ pin_true.direction = digitalio.Direction.INPUT
+ assert pin_true.value == True
+ assert pin_true.value == True # Test subsequent call does not change value
+ pin_true.deinit()
+
+
+def test_Dx_INPUT_TRUE_PULL_DOWN():
+ """Test digital input pin Dx_INPUT_TRUE w/pull down."""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_true = digitalio.DigitalInOut(board.Dx_INPUT_TRUE)
+ pin_true.direction = digitalio.Direction.INPUT
+ assert pin_true.value == True
+ assert pin_true.value == True # Test subsequent call does not change value
+ pin_true.pull = digitalio.Pull.DOWN
+ assert pin_true.value == False
+ pin_true.deinit()
+
+
+def test_Dx_INPUT_FALSE_PULL_UP():
+ """Test digital input pin Dx_INPUT_FALSE w/pull up."""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_false = digitalio.DigitalInOut(board.Dx_INPUT_FALSE)
+ pin_false.direction = digitalio.Direction.INPUT
+ assert pin_false.value == False
+ assert pin_false.value == False # Test subsequent call does not change value
+ pin_false.pull = digitalio.Pull.UP
+ assert pin_false.value == False
+ pin_false.deinit()
+
+
+def test_Dx_INPUT_FALSE():
+ """Test digital input pin Dx_INPUT_FALSE"""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_false = digitalio.DigitalInOut(board.Dx_INPUT_FALSE)
+ pin_false.direction = digitalio.Direction.INPUT
+ assert pin_false.value == False
+ assert pin_false.value == False # Test subsequent call does not change value
+ pin_false.deinit()
+
+
+def test_Dx_INPUT_TOGGLE():
+ """Test digital input pin Dx_INPUT_TOGGLE"""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_toggle = digitalio.DigitalInOut(board.Dx_INPUT_TOGGLE)
+ pin_toggle.direction = digitalio.Direction.INPUT
+ assert pin_toggle.value == True
+ assert (
+ pin_toggle.value == False
+ ) # Test subsequent call does change value for this pin
+ pin_toggle.deinit()