+# SPDX-FileCopyrightText: 2024 Brent Rubell for Adafruit Industries
+#
+# SPDX-License-Identifier: MIT
import pytest
import board
import analogio
-def test_ax_input_rand_int():
- assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
- pin_random = analogio.AnalogIn(board.Ax_INPUT_RAND_INT)
- assert isinstance(pin_random.value, int)
- pin_random.deinit()
+# Analog Outputs
+def test_Ax_OUTPUT():
+ """Test analog output pin functionality."""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_out = analogio.AnalogOut(board.Ax_OUTPUT)
+
+ # Test boundaries of setting the value and reading it back
+ pin_out.value = 0
+ assert pin_out.value == 0
+ pin_out.value = 65535
+ assert pin_out.value == 65535
+
+ pin_out.deinit()
+
+
+# Analog Inputs
+
+# Values for sine wave
+# (data points = 20, amplitude=100, frequency=1)
+sine_wave = [
+ 0,
+ 31,
+ 59,
+ 81,
+ 95,
+ 100,
+ 95,
+ 81,
+ 59,
+ 31,
+ 0,
+ -31,
+ -59,
+ -81,
+ -95,
+ -100,
+ -95,
+ -81,
+ -59,
+ -31,
+]
+
+# Values for a sawtooth wave
+# (data points = 20, amplitude=100)
+sawtooth_wave = [
+ -100,
+ -80,
+ -60,
+ -40,
+ -20,
+ 0,
+ 20,
+ 40,
+ 60,
+ 80,
+ -100,
+ -80,
+ -60,
+ -40,
+ -20,
+ 0,
+ 20,
+ 40,
+ 60,
+ 80,
+]
+
+
+def test_Ax_INPUT_RAND_INT():
+ """Test random integer from pin Ax_INPUT_RAND_INT"""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_random = analogio.AnalogIn(board.Ax_INPUT_RAND_INT)
+
+ assert isinstance(pin_random.value, int)
+
+ pin_random.deinit()
+
+
+def test_Ax_INPUT_FIXED_INT_PI():
+ """Test fixed integer from pin Ax_INPUT_FIXED_INT_PI"""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_pi = analogio.AnalogIn(board.Ax_INPUT_FIXED_INT_PI)
+
+ assert pin_pi.value == 31415
+
+ pin_pi.deinit()
+
+
+def test_Ax_INPUT_WAVE_SINE():
+ """Test sine wave from pin Ax_INPUT_WAVE_SINE"""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_sine_wave = analogio.AnalogIn(board.Ax_INPUT_WAVE_SINE)
+
+ # Run through the sine wave once
+ for i in range(len(sine_wave)):
+ assert pin_sine_wave.value == sine_wave[i]
+
+ # Run through the sine wave again to ensure it loops back correctly
+ for i in range(len(sine_wave)):
+ assert pin_sine_wave.value == sine_wave[i]
+
+ pin_sine_wave.deinit()
+
+
+def test_Ax_INPUT_WAVE_SAW():
+ """Test sawtooth wave from pin Ax_INPUT_WAVE_SAW"""
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_sine_wave = analogio.AnalogIn(board.Ax_INPUT_WAVE_SAW)
+
+ # Run through the sine wave once
+ for i in range(len(sawtooth_wave)):
+ assert pin_sine_wave.value == sawtooth_wave[i]
+
+ # Run through the sine wave again to ensure it loops back correctly
+ for i in range(len(sawtooth_wave)):
+ assert pin_sine_wave.value == sawtooth_wave[i]
+
+ pin_sine_wave.deinit()