libbladerf-rs 0.4.1

Fully Rust native BladeRF driver
use libbladerf_rs::range::{Range, RangeItem};

#[test]
fn contains_empty() {
    let r = Range::new(Vec::new());
    assert!(!r.contains(123.0));
}

#[test]
fn contains() {
    let r = Range::new(vec![
        RangeItem::Value(123.0),
        RangeItem::Interval(23.0, 42.0),
        RangeItem::Step(100.0, 110.0, 1.0, 1.0),
    ]);
    assert!(r.contains(123.0));
    assert!(r.contains(23.0));
    assert!(r.contains(42.0));
    assert!(r.contains(40.0));
    assert!(r.contains(100.0));
    assert!(r.contains(107.0));
    assert!(r.contains(110.0));
    assert!(!r.contains(19.0));
}

#[test]
fn closest() {
    let r = Range::new(vec![
        RangeItem::Value(123.0),
        RangeItem::Interval(23.0, 42.0),
        RangeItem::Step(100.0, 110.0, 1.0, 1.0),
    ]);
    assert_eq!(r.closest(122.0), Some(123.0));
    assert_eq!(r.closest(1_000.0), Some(123.0));
    assert_eq!(r.closest(30.0), Some(30.0));
    assert_eq!(r.closest(20.0), Some(23.0));
    assert_eq!(r.closest(50.0), Some(42.0));
    assert_eq!(r.closest(99.5), Some(100.0));
    assert_eq!(r.closest(105.3), Some(105.0));
    assert_eq!(r.closest(105.8), Some(106.0));
    assert_eq!(r.closest(109.8), Some(110.0));
    assert_eq!(r.closest(113.8), Some(110.0));
}

#[test]
fn at_least() {
    let r = Range::new(vec![
        RangeItem::Value(123.0),
        RangeItem::Interval(23.0, 42.0),
        RangeItem::Step(100.0, 110.0, 1.0, 1.0),
    ]);
    assert_eq!(r.at_least(120.0), Some(123.0));
    assert_eq!(r.at_least(1_000.0), None);
    assert_eq!(r.at_least(30.0), Some(30.0));
    assert_eq!(r.at_least(10.0), Some(23.0));
    assert_eq!(r.at_least(99.0), Some(100.0));
    assert_eq!(r.at_least(105.5), Some(106.0));
}

#[test]
fn at_max() {
    let r = Range::new(vec![
        RangeItem::Value(123.0),
        RangeItem::Interval(23.0, 42.0),
        RangeItem::Step(100.0, 110.0, 1.0, 1.0),
    ]);
    assert_eq!(r.at_max(90.0), Some(42.0));
    assert_eq!(r.at_max(10.0), None);
    assert_eq!(r.at_max(30.0), Some(30.0));
    assert_eq!(r.at_max(50.0), Some(42.0));
    assert_eq!(r.at_max(101.0), Some(101.0));
    assert_eq!(r.at_max(100.3), Some(100.0));
    assert_eq!(r.at_max(111.3), Some(110.0));
}