mimir 0.3.5

Rust bindings over the Oracle Database Programming Interface for Drivers and Applications
use mimir::enums::ODPINativeTypeNum::{Bytes, Int64};
use mimir::enums::ODPIOracleTypeNum::{Number, Varchar};
use mimir::flags;
use mimir::Result;
use mimir::{Connection, Context, Data, ODPIData};
use std::convert::TryFrom;
use CREDS;

fn var_res(ctxt: &Context) -> Result<()> {
    let mut ccp = ctxt.init_common_create_params()?;
    ccp.set_encoding("UTF-8")?;
    ccp.set_nchar_encoding("UTF-8")?;

    let conn = Connection::create(
        ctxt,
        Some(&CREDS[0]),
        Some(&CREDS[1]),
        Some("//oic.cbsnae86d3iv.us-east-2.rds.amazonaws.com/ORCL"),
        Some(ccp),
        None,
    )?;

    let var = conn.new_var(Number, Int64, 2, 0, false, false)?;
    let num_elements = var.get_num_elements_in_array()?;
    assert_eq!(num_elements, 2);
    let size_in_bytes = var.get_size_in_bytes()?;
    assert_eq!(size_in_bytes, 22);

    let str_test = conn.new_var(Varchar, Bytes, 2, 256, false, false)?;
    str_test.set_from_bytes(0, "jozias")?;
    let str_test_data = str_test.get_data()?;
    assert_eq!(str_test_data.len(), 2);
    for (idx, d) in str_test_data.iter_mut().enumerate() {
        let data: Data = TryFrom::try_from(d as *mut ODPIData)?;
        match idx {
            0 => assert_eq!(data.get_string(), "jozias"),
            1 => assert_eq!(data.get_string(), ""),
            _ => assert!(false),
        }
    }

    conn.close(flags::DPI_MODE_CONN_CLOSE_DEFAULT, None)?;

    Ok(())
}

#[test]
fn variable() {
    check_with_ctxt!(var_res)
}