cbqn 0.2.3

Embed BQN in Rust via CBQN FFI
Documentation
use super::*;

#[test]
#[should_panic]
fn c8_string_to_f64() {
    let v = c8_str();
    _ = v.to_f64().unwrap();
}

#[test]
#[should_panic]
fn c16_string_to_f64() {
    let v = c16_str();
    _ = v.to_f64().unwrap();
}

#[test]
#[should_panic]
fn c32_string_to_f64_vec() {
    let v = c32_str();
    _ = v.to_f64_vec().unwrap();
}

#[test]
#[should_panic]
fn should_panic_f64_arr_to_string() {
    let v = BQN!("1.2‿3.4‿5.6").unwrap();
    let _ = v.to_string().unwrap();
}

#[test]
#[should_panic]
fn i32_arr_to_string() {
    let v = BQN!("67000‿68000").unwrap();
    let _ = v.to_string().unwrap();
}

#[test]
#[should_panic]
fn should_panic_i16_arr_to_string() {
    let v = BQN!("1234‿5678").unwrap();
    let _ = v.to_string().unwrap();
}

#[test]
#[should_panic]
fn i8_arr_to_string() {
    let v = BQN!("12‿34").unwrap();
    let _ = v.to_string().unwrap();
}

#[test]
#[should_panic]
fn should_panic_number_to_string() {
    let v = BQN!("123").unwrap();
    let _ = v.to_string().unwrap();
}

#[test]
fn c8_string_to_bqnvalue_vec() {
    assert_eq!(
        c8_str()
            .to_bqnvalue_vec()
            .unwrap()
            .iter()
            .map(|c| c.to_char().unwrap().unwrap())
            .collect::<String>(),
        c8_str().to_string().unwrap()
    );
}

#[test]
fn c16_string_to_bqnvalue_vec() {
    assert_eq!(
        c16_str()
            .to_bqnvalue_vec()
            .unwrap()
            .iter()
            .map(|c| c.to_char().unwrap().unwrap())
            .collect::<String>(),
        c16_str().to_string().unwrap()
    );
}

#[test]
fn c32_string_to_bqnvalue_vec() {
    assert_eq!(
        c32_str()
            .to_bqnvalue_vec()
            .unwrap()
            .iter()
            .map(|c| c.to_char().unwrap().unwrap())
            .collect::<String>(),
        c32_str().to_string().unwrap()
    );
}

#[test]
fn arr_to_bqnvalue_vec() {
    assert_eq!(
        BQN!("12‿34")
            .unwrap()
            .to_bqnvalue_vec()
            .unwrap()
            .iter()
            .map(|v| v.to_f64().unwrap())
            .collect::<Vec<_>>(),
        [12.0, 34.0]
    );
}

#[test]
fn bqnvalue_array_to_bqnvalue_vec() {
    let arr = [BQN!("1").unwrap(), BQN!("2").unwrap()];
    let bqnv = BQNValue::from(arr);
    let bqnv_vec = bqnv.to_bqnvalue_vec().unwrap();
    assert_eq!(
        bqnv_vec
            .into_iter()
            .map(|bqnv| bqnv.to_f64().unwrap())
            .collect::<Vec<_>>(),
        [1.0, 2.0]
    );
}

#[test]
fn bqnvalue_slice_to_bqnvalue_vec() {
    let arr = [BQN!("1").unwrap(), BQN!("2").unwrap()];
    let bqnv = BQNValue::from(&arr[..]);
    let bqnv_vec = bqnv.to_bqnvalue_vec().unwrap();
    assert_eq!(
        bqnv_vec
            .into_iter()
            .map(|bqnv| bqnv.to_f64().unwrap())
            .collect::<Vec<_>>(),
        [1.0, 2.0]
    );
}

#[test]
fn bqnvalue_vec_to_bqnvalue_vec() {
    let vec = vec![BQN!("1").unwrap(), BQN!("2").unwrap()];
    let bqnv = BQNValue::from(vec);
    let bqnv_vec = bqnv.to_bqnvalue_vec().unwrap();
    assert_eq!(
        bqnv_vec
            .into_iter()
            .map(|bqnv| bqnv.to_f64().unwrap())
            .collect::<Vec<_>>(),
        [1.0, 2.0]
    );
}

#[test]
fn bqnvalue_iter_to_bqnvalue_vec() {
    let vec = vec![BQN!("1").unwrap(), BQN!("2").unwrap()];
    let bqnv = vec.into_iter().collect::<BQNValue>();
    let bqnv_vec = bqnv.to_bqnvalue_vec().unwrap();
    assert_eq!(
        bqnv_vec
            .into_iter()
            .map(|bqnv| bqnv.to_f64().unwrap())
            .collect::<Vec<_>>(),
        [1.0, 2.0]
    );
}