switch-hal 0.4.0

HAL and basic implementations for input and output switches (buttons, switches, leds, transistors)
Documentation
extern crate switch_hal;

use switch_hal::mock::{Pin, State};
use switch_hal::{InputSwitch, Switch};

mod active_high_switch {
    use super::*;

    use switch_hal::ActiveHigh;

    mod is_active {
        use super::*;

        #[test]
        fn true_when_pin_high() {
            let pin = Pin::with_state(State::High);

            let button = Switch::<_, ActiveHigh>::new(pin);
            assert_eq!(true, button.is_active().unwrap());
        }

        #[test]
        fn false_when_pin_low() {
            let pin = Pin::with_state(State::Low);

            let button = Switch::<_, ActiveHigh>::new(pin);
            assert_eq!(false, button.is_active().unwrap());
        }

        #[test]
        fn propogates_errors_from_pin() {
            let pin = Pin::new();
            let button = Switch::<_, ActiveHigh>::new(pin);
            button.is_active().expect_err("Expected unitialized error");
        }
    }
}

mod active_low_switch {
    use super::*;

    use switch_hal::ActiveLow;

    mod is_active {
        use super::*;

        #[test]
        fn false_when_pin_high() {
            let pin = Pin::with_state(State::High);

            let button = Switch::<_, ActiveLow>::new(pin);
            assert_eq!(false, button.is_active().unwrap());
        }

        #[test]
        fn true_when_pin_low() {
            let pin = Pin::with_state(State::Low);

            let button = Switch::<_, ActiveLow>::new(pin);
            assert_eq!(true, button.is_active().unwrap());
        }

        #[test]
        fn propogates_errors_from_pin() {
            let pin = Pin::new();
            let button = Switch::<_, ActiveLow>::new(pin);
            button.is_active().expect_err("Expected unitialized error");
        }
    }
}