gostd_url 1.1.2

gostd_url is a part of gostd, gostd_url 是go标准库net/url的rust实现
Documentation
use crate as url;
use std::collections::HashMap;
use std::io::Result;

#[test]
fn test_QueryEscape() {
    let source ="https://dev.detection.quantibio.com/reservation&response_type=code&scope=snsapi_userinfo#wechat_redirect";
    let escape = url::QueryEscape(source);
    assert_eq!(escape, "https%3A%2F%2Fdev.detection.quantibio.com%2Freservation%26response_type%3Dcode%26scope%3Dsnsapi_userinfo%23wechat_redirect")
}
#[test]
fn test_QueryUnescape() {
    let escape = "https%3A%2F%2Fdev.detection.quantibio.com%2Freservation%26response_type%3Dcode%26scope%3Dsnsapi_userinfo%23wechat_redirect";
    if let Ok(source) = url::QueryUnescape(escape) {
        assert_eq!(source,"https://dev.detection.quantibio.com/reservation&response_type=code&scope=snsapi_userinfo#wechat_redirect".to_string());
    } else {
        println!("QueryUnescape Failed!")
    }
}
#[test]
fn Test_ParseQuery() {
    let query = "a=1";
    if let Ok(out) = url::ParseQuery(query) {
        let values = url::Values::new(HashMap::from([("a".to_string(), vec!["1".to_string()])]));
        assert_eq!(out == values, true);
    } else {
        println!("ParseQuery failed!")
    }

    let query = "a=1&b=2";
    if let Ok(out) = url::ParseQuery(query) {
        let values = url::Values::new(HashMap::from([
            ("a".to_string(), vec!["1".to_string()]),
            ("b".to_string(), vec!["2".to_string()]),
        ]));
        assert_eq!(out == values, true);
    } else {
        println!("ParseQuery failed!")
    }

    let query = "a=1&a=2&a=banana";
    if let Ok(out) = url::ParseQuery(query) {
        let values = url::Values::new(HashMap::from([(
            "a".to_string(),
            vec!["1".to_string(), "2".to_string(), "banana".to_string()],
        )]));
        assert_eq!(out == values, true);
    } else {
        println!("ParseQuery failed!")
    }

    let query = "ascii=%3Ckey%3A+0x90%3E";
    if let Ok(out) = url::ParseQuery(query) {
        let values = url::Values::new(HashMap::from([(
            "ascii".to_string(),
            vec!["<key: 0x90>".to_string()],
        )]));
        assert_eq!(out == values, true);
    } else {
        println!("ParseQuery failed!")
    }

    let query = "a%3Bb=1";
    if let Ok(out) = url::ParseQuery(query) {
        let values = url::Values::new(HashMap::from([("a;b".to_string(), vec!["1".to_string()])]));
        assert_eq!(out == values, true);
    } else {
        println!("ParseQuery failed!")
    }

    let query = "a=%3B";
    if let Ok(out) = url::ParseQuery(query) {
        let values = url::Values::new(HashMap::from([("a".to_string(), vec![";".to_string()])]));
        assert_eq!(out == values, true);
    } else {
        println!("ParseQuery failed!")
    }
}