rust-web-server 16.1.0

Collection of utility functions used to build Rust Web and TLS Server. Can be useful while developing HTTP related functionality
Documentation
use crate::json::{JSON_TYPE};
use crate::json::property::{JSONProperty};

#[test]
fn parse_raw_property_string() {
    let property_key = "key";
    let property_value = "some data";
    let property_type = JSON_TYPE.string;

    let raw_string = format!("\"{}\": \"{}\"", property_key, property_value);
    let (key, value) = JSONProperty::parse(&raw_string).unwrap();

    assert_eq!(key.property_name, property_key);
    assert_eq!(key.property_type, property_type);
    assert_eq!(value.string.unwrap(), property_value);
}

#[test]
fn parse_raw_property_null() {
    let property_key = "key";
    let property_value = "null";
    let property_type = JSON_TYPE.string;

    let raw_string = format!("\"{}\": {}", property_key, property_value);
    let (key, value) = JSONProperty::parse(&raw_string).unwrap();

    assert_eq!(key.property_name, property_key);
    assert_eq!(key.property_type, property_type);
    assert!(value.null.is_some());
}

#[test]
fn parse_raw_property_number_integer() {
    let property_key = "key";
    let property_value = "255";
    let property_type = JSON_TYPE.integer;

    let raw_string = format!("\"{}\": {}", property_key, property_value);
    let (key, value) = JSONProperty::parse(&raw_string).unwrap();

    assert_eq!(key.property_name, property_key);
    assert_eq!(key.property_type, property_type);
    assert_eq!(value.i128.unwrap(), property_value.parse::<i128>().unwrap());
}

#[test]
fn parse_raw_property_number_float() {
    let property_key = "key";
    let property_value = "255.200";
    let property_type = JSON_TYPE.number;

    let raw_string = format!("\"{}\": {}", property_key, property_value);
    let (key, value) = JSONProperty::parse(&raw_string).unwrap();

    assert_eq!(key.property_name, property_key);
    assert_eq!(key.property_type, property_type);
    assert_eq!(value.f64.unwrap(), property_value.parse::<f64>().unwrap());
}

#[test]
fn parse_raw_property_boolean_true() {
    let property_key = "key";
    let property_value = "true";
    let property_type = JSON_TYPE.boolean;

    let raw_string = format!("\"{}\": {}", property_key, property_value);
    let (key, value) = JSONProperty::parse(&raw_string).unwrap();

    assert_eq!(key.property_name, property_key);
    assert_eq!(key.property_type, property_type);
    assert_eq!(value.bool.unwrap(), property_value.parse::<bool>().unwrap());
}

#[test]
fn parse_raw_property_boolean_false() {
    let property_key = "key";
    let property_value = "false";
    let property_type = JSON_TYPE.boolean;

    let raw_string = format!("\"{}\": {}", property_key, property_value);
    let (key, value) = JSONProperty::parse(&raw_string).unwrap();

    assert_eq!(key.property_name, property_key);
    assert_eq!(key.property_type, property_type);
    assert_eq!(value.bool.unwrap(), property_value.parse::<bool>().unwrap());
}

#[test]
fn parse_raw_property_number_float_parse_error() {
    let property_key = "key";
    let property_value = "255.200asdf";

    let raw_string = format!("\"{}\": {}", property_key, property_value);
    let error_message = JSONProperty::parse(&raw_string).err().unwrap();

    assert_eq!("unable to parse number: \"key\": 255.200asdf", error_message);
}

#[test]
fn parse_raw_property_number_integer_parse_error() {
    let property_key = "key";
    let property_value = "255200asdf";

    let raw_string = format!("\"{}\": {}", property_key, property_value);
    let error_message = JSONProperty::parse(&raw_string).err().unwrap();

    assert_eq!("unable to parse number: \"key\": 255200asdf", error_message);
}