qldb 3.2.9

Driver for Amazon's QLDB Database implemented in pure rust.
Documentation
mod utils;
use eyre::Result;
use ion_binary_rs::{IonValue, NullIonValue};
use std::collections::HashMap;
use utils::create_type_test;

#[async_std::test]
async fn qldb_type_nulls() -> Result<()> {
    create_type_test(get_value_to_insert_nulls(), |values| {
        assert_eq!(values.get("Null").unwrap(), &IonValue::Null(NullIonValue::Null));
        assert_eq!(values.get("Bool").unwrap(), &IonValue::Null(NullIonValue::Bool));
        assert_eq!(values.get("Integer").unwrap(), &IonValue::Null(NullIonValue::Integer));
        assert_eq!(values.get("Float").unwrap(), &IonValue::Null(NullIonValue::Float));
        assert_eq!(values.get("Decimal").unwrap(), &IonValue::Null(NullIonValue::Decimal));
        assert_eq!(values.get("DateTime").unwrap(), &IonValue::Null(NullIonValue::DateTime));
        assert_eq!(values.get("String").unwrap(), &IonValue::Null(NullIonValue::String));
        assert_eq!(values.get("Symbol").unwrap(), &IonValue::Null(NullIonValue::Symbol));
        assert_eq!(values.get("Clob").unwrap(), &IonValue::Null(NullIonValue::Clob));
        assert_eq!(values.get("Blob").unwrap(), &IonValue::Null(NullIonValue::Blob));
        assert_eq!(values.get("List").unwrap(), &IonValue::Null(NullIonValue::List));
        assert_eq!(values.get("SExpr").unwrap(), &IonValue::Null(NullIonValue::SExpr));
        assert_eq!(values.get("Struct").unwrap(), &IonValue::Null(NullIonValue::Struct));
    })
    .await
}

fn get_value_to_insert_nulls() -> IonValue {
    let mut map = HashMap::new();
    map.insert("Null".into(), IonValue::Null(NullIonValue::Null));
    map.insert("Bool".into(), IonValue::Null(NullIonValue::Bool));
    map.insert("Integer".into(), IonValue::Null(NullIonValue::Integer));
    map.insert("Float".into(), IonValue::Null(NullIonValue::Float));
    map.insert("Decimal".into(), IonValue::Null(NullIonValue::Decimal));
    map.insert("DateTime".into(), IonValue::Null(NullIonValue::DateTime));
    map.insert("String".into(), IonValue::Null(NullIonValue::String));
    map.insert("Symbol".into(), IonValue::Null(NullIonValue::Symbol));
    map.insert("Clob".into(), IonValue::Null(NullIonValue::Clob));
    map.insert("Blob".into(), IonValue::Null(NullIonValue::Blob));
    map.insert("List".into(), IonValue::Null(NullIonValue::List));
    map.insert("SExpr".into(), IonValue::Null(NullIonValue::SExpr));
    map.insert("Struct".into(), IonValue::Null(NullIonValue::Struct));
    // Null annotation here would be illegal
    //map.insert("Annotation".into(), IonValue::Null(NullIonValue::Annotation));
    IonValue::Struct(map)
}