duckscriptsdk 0.11.1

The duckscript SDK.
Documentation
use super::*;

#[test]
fn get_core_sub_state_for_runtime_valid() {
    let mut state = HashMap::new();
    let value = get_core_sub_state_for_runtime(&mut state, "test".to_string());

    assert!(value.is_empty());
    assert!(state.contains_key("duckscriptsdk::runtime::test"));
}

#[test]
fn get_core_sub_state_for_command_valid() {
    let mut state = HashMap::new();
    let value = get_core_sub_state_for_command(&mut state, "test".to_string());

    assert!(value.is_empty());
    assert!(state.contains_key("duckscriptsdk::command::test"));
}

#[test]
fn ensure_sub_state_empty() {
    let mut state = HashMap::new();
    ensure_sub_state("test", &mut state);

    assert!(state.get("test").is_some());
}

#[test]
fn ensure_sub_state_diff_type() {
    let mut state = HashMap::new();
    state.insert("test".to_string(), StateValue::Number(1));
    ensure_sub_state("test", &mut state);

    match state.get("test").unwrap() {
        StateValue::SubState(_) => (),
        _ => panic!("invalid type"),
    };
}

#[test]
fn ensure_sub_state_same_type() {
    let mut sub_state = HashMap::new();
    sub_state.insert("sub".to_string(), StateValue::Number(1));
    let mut state = HashMap::new();
    state.insert("test".to_string(), StateValue::SubState(sub_state));
    ensure_sub_state("test", &mut state);

    match state.get("test").unwrap() {
        StateValue::SubState(value) => assert!(!value.is_empty()),
        _ => panic!("invalid type"),
    };
}

#[test]
fn get_sub_state_valid() {
    let mut state = HashMap::new();
    let value = get_sub_state("test".to_string(), &mut state);

    assert!(value.is_empty());
    assert!(state.contains_key("test"));
}

#[test]
fn ensure_list_empty() {
    let mut state = HashMap::new();
    ensure_list("test", &mut state);

    assert!(state.get("test").is_some());
}

#[test]
fn ensure_list_diff_type() {
    let mut state = HashMap::new();
    state.insert("test".to_string(), StateValue::Number(1));
    ensure_list("test", &mut state);

    match state.get("test").unwrap() {
        StateValue::List(_) => (),
        _ => panic!("invalid type"),
    };
}

#[test]
fn ensure_list_same_type() {
    let mut list = vec![];
    list.push(StateValue::Number(1));
    let mut state = HashMap::new();
    state.insert("test".to_string(), StateValue::List(list));
    ensure_list("test", &mut state);

    match state.get("test").unwrap() {
        StateValue::List(value) => assert_eq!(value.len(), 1),
        _ => panic!("invalid type"),
    };
}

#[test]
fn get_list_valid() {
    let mut state = HashMap::new();
    let value = get_list("test".to_string(), &mut state);

    assert!(value.is_empty());
    assert!(state.contains_key("test"));
}