use super::super::isbetween_fn;
use crate::types::{ErrorKind, Value};
#[test]
fn value_within_range_returns_true() {
assert_eq!(
isbetween_fn(&[Value::Number(3.0), Value::Number(1.0), Value::Number(5.0)]),
Value::Bool(true)
);
}
#[test]
fn value_at_lower_bound_inclusive_returns_true() {
assert_eq!(
isbetween_fn(&[Value::Number(1.0), Value::Number(1.0), Value::Number(5.0)]),
Value::Bool(true)
);
}
#[test]
fn value_at_upper_bound_inclusive_returns_true() {
assert_eq!(
isbetween_fn(&[Value::Number(5.0), Value::Number(1.0), Value::Number(5.0)]),
Value::Bool(true)
);
}
#[test]
fn value_below_lower_bound_returns_false() {
assert_eq!(
isbetween_fn(&[Value::Number(0.0), Value::Number(1.0), Value::Number(5.0)]),
Value::Bool(false)
);
}
#[test]
fn value_above_upper_bound_returns_false() {
assert_eq!(
isbetween_fn(&[Value::Number(6.0), Value::Number(1.0), Value::Number(5.0)]),
Value::Bool(false)
);
}
#[test]
fn value_at_lower_bound_exclusive_returns_false() {
assert_eq!(
isbetween_fn(&[
Value::Number(1.0),
Value::Number(1.0),
Value::Number(5.0),
Value::Bool(false),
]),
Value::Bool(false)
);
}
#[test]
fn value_at_upper_bound_exclusive_returns_false() {
assert_eq!(
isbetween_fn(&[
Value::Number(5.0),
Value::Number(1.0),
Value::Number(5.0),
Value::Bool(true),
Value::Bool(false),
]),
Value::Bool(false)
);
}
#[test]
fn too_few_args_returns_na_error() {
assert_eq!(
isbetween_fn(&[Value::Number(3.0), Value::Number(1.0)]),
Value::Error(ErrorKind::NA)
);
}
#[test]
fn too_many_args_returns_na_error() {
assert_eq!(
isbetween_fn(&[
Value::Number(3.0),
Value::Number(1.0),
Value::Number(5.0),
Value::Bool(true),
Value::Bool(true),
Value::Bool(true),
]),
Value::Error(ErrorKind::NA)
);
}