blob: 1aaa6b44ed63779611a38050b3fa340813477961 [file] [log] [blame]
// SPDX-License-Identifier: Apache-2.0 OR BSD-3-Clause
// SPDX-FileCopyrightText: 2022 Linaro Ltd.
// SPDX-FileCopyrightText: 2022 Viresh Kumar <viresh.kumar@linaro.org>
mod common;
mod line_settings {
use std::time::Duration;
use libgpiod::line::{
self, Bias, Direction, Drive, Edge, EventClock, SettingKind, SettingVal, Value,
};
#[test]
fn direction() {
let mut lsettings = line::Settings::new().unwrap();
assert_eq!(
lsettings.prop(SettingKind::Direction).unwrap(),
SettingVal::Direction(Direction::AsIs)
);
lsettings.set_direction(Direction::Input).unwrap();
assert_eq!(
lsettings.prop(SettingKind::Direction).unwrap(),
SettingVal::Direction(Direction::Input)
);
lsettings.set_direction(Direction::Output).unwrap();
assert_eq!(
lsettings.prop(SettingKind::Direction).unwrap(),
SettingVal::Direction(Direction::Output)
);
}
#[test]
fn edge_detection() {
let mut lsettings = line::Settings::new().unwrap();
assert_eq!(
lsettings.prop(SettingKind::EdgeDetection).unwrap(),
SettingVal::EdgeDetection(None)
);
lsettings.set_edge_detection(Some(Edge::Both)).unwrap();
assert_eq!(
lsettings.prop(SettingKind::EdgeDetection).unwrap(),
SettingVal::EdgeDetection(Some(Edge::Both))
);
lsettings.set_edge_detection(Some(Edge::Rising)).unwrap();
assert_eq!(
lsettings.prop(SettingKind::EdgeDetection).unwrap(),
SettingVal::EdgeDetection(Some(Edge::Rising))
);
lsettings.set_edge_detection(Some(Edge::Falling)).unwrap();
assert_eq!(
lsettings.prop(SettingKind::EdgeDetection).unwrap(),
SettingVal::EdgeDetection(Some(Edge::Falling))
);
}
#[test]
fn bias() {
let mut lsettings = line::Settings::new().unwrap();
assert_eq!(
lsettings.prop(SettingKind::Bias).unwrap(),
SettingVal::Bias(None)
);
lsettings.set_bias(Some(Bias::PullDown)).unwrap();
assert_eq!(
lsettings.prop(SettingKind::Bias).unwrap(),
SettingVal::Bias(Some(Bias::PullDown))
);
lsettings.set_bias(Some(Bias::PullUp)).unwrap();
assert_eq!(
lsettings.prop(SettingKind::Bias).unwrap(),
SettingVal::Bias(Some(Bias::PullUp))
);
}
#[test]
fn drive() {
let mut lsettings = line::Settings::new().unwrap();
assert_eq!(
lsettings.prop(SettingKind::Drive).unwrap(),
SettingVal::Drive(Drive::PushPull)
);
lsettings.set_drive(Drive::PushPull).unwrap();
assert_eq!(
lsettings.prop(SettingKind::Drive).unwrap(),
SettingVal::Drive(Drive::PushPull)
);
lsettings.set_drive(Drive::OpenDrain).unwrap();
assert_eq!(
lsettings.prop(SettingKind::Drive).unwrap(),
SettingVal::Drive(Drive::OpenDrain)
);
lsettings.set_drive(Drive::OpenSource).unwrap();
assert_eq!(
lsettings.prop(SettingKind::Drive).unwrap(),
SettingVal::Drive(Drive::OpenSource)
);
}
#[test]
fn active_low() {
let mut lsettings = line::Settings::new().unwrap();
assert_eq!(
lsettings.prop(SettingKind::ActiveLow).unwrap(),
SettingVal::ActiveLow(false)
);
lsettings.set_active_low(true);
assert_eq!(
lsettings.prop(SettingKind::ActiveLow).unwrap(),
SettingVal::ActiveLow(true)
);
lsettings.set_active_low(false);
assert_eq!(
lsettings.prop(SettingKind::ActiveLow).unwrap(),
SettingVal::ActiveLow(false)
);
}
#[test]
fn debounce_period() {
let mut lsettings = line::Settings::new().unwrap();
assert_eq!(
lsettings.prop(SettingKind::DebouncePeriod).unwrap(),
SettingVal::DebouncePeriod(Duration::from_millis(0))
);
lsettings.set_debounce_period(Duration::from_millis(5));
assert_eq!(
lsettings.prop(SettingKind::DebouncePeriod).unwrap(),
SettingVal::DebouncePeriod(Duration::from_millis(5))
);
}
#[test]
fn event_clock() {
let mut lsettings = line::Settings::new().unwrap();
assert_eq!(
lsettings.prop(SettingKind::EventClock).unwrap(),
SettingVal::EventClock(EventClock::Monotonic)
);
lsettings.set_event_clock(EventClock::Realtime).unwrap();
assert_eq!(
lsettings.prop(SettingKind::EventClock).unwrap(),
SettingVal::EventClock(EventClock::Realtime)
);
lsettings.set_event_clock(EventClock::Monotonic).unwrap();
assert_eq!(
lsettings.prop(SettingKind::EventClock).unwrap(),
SettingVal::EventClock(EventClock::Monotonic)
);
}
#[test]
#[ignore]
fn event_clock_hte() {
let mut lsettings = line::Settings::new().unwrap();
assert_eq!(
lsettings.prop(SettingKind::EventClock).unwrap(),
SettingVal::EventClock(EventClock::Monotonic)
);
lsettings.set_event_clock(EventClock::HTE).unwrap();
assert_eq!(
lsettings.prop(SettingKind::EventClock).unwrap(),
SettingVal::EventClock(EventClock::HTE)
);
}
#[test]
fn output_value() {
let mut lsettings = line::Settings::new().unwrap();
assert_eq!(
lsettings.prop(SettingKind::OutputValue).unwrap(),
SettingVal::OutputValue(Value::InActive)
);
lsettings.set_output_value(Value::Active).unwrap();
assert_eq!(
lsettings.prop(SettingKind::OutputValue).unwrap(),
SettingVal::OutputValue(Value::Active)
);
lsettings.set_output_value(Value::InActive).unwrap();
assert_eq!(
lsettings.prop(SettingKind::OutputValue).unwrap(),
SettingVal::OutputValue(Value::InActive)
);
}
}