iceyee_encoder 12.0.0

Base64Encoder, HexEncoder, UrlEncoder.
Documentation
// **************************************************
// *  Author: Iceyee                                *
// *  Mail: iceyee.studio@qq.com                    *
// *  Git: https://github.com/iceyee                *
// **************************************************
//
// Use.

use iceyee_encoder::HexEncoder;

// Enum.

// Trait.

// Struct.

// Function.

#[test]
fn test_hex_encoder() {
    println!("");
    println!("测试Hex编码.");
    let a: Vec<u8> = [0x12, 0x34, 0x56, 0xab, 0xcd].to_vec();
    let b1: String = "123456ABCD".to_string();
    let b2: String = "123456abcd".to_string();
    println!("{a:?} <encode> {b1:?}");
    assert_eq!(HexEncoder::encode(&a), b1);
    println!("{b1:?} <decode> {a:?}");
    assert_eq!(HexEncoder::decode(&b1).expect("NEVER"), a);
    println!("{b2:?} <decode> {a:?}");
    assert_eq!(HexEncoder::decode(&b2).expect("NEVER"), a);
    println!("测试异常输入.");
    println!("123456a");
    println!("123456abc");
    println!("12@456abcd");
    println!("123456a#cd");
    println!("123456abcg");
    assert_eq!(
        HexEncoder::decode("123456a").map_err(|x| x.contains("无效的长度")),
        Err(true)
    );
    assert_eq!(
        HexEncoder::decode("123456abc").map_err(|x| x.contains("无效的长度")),
        Err(true)
    );
    assert_eq!(
        HexEncoder::decode("12@456abcd").map_err(|x| x.contains("出现未预期的字符")),
        Err(true)
    );
    assert_eq!(
        HexEncoder::decode("123456a#cd").map_err(|x| x.contains("出现未预期的字符")),
        Err(true)
    );
    assert_eq!(
        HexEncoder::decode("123456abcg").map_err(|x| x.contains("出现未预期的字符")),
        Err(true)
    );
    let table = [
        ("0123456789", 0x0123456789),
        ("012_345_678_9", 0x0123456789),
        ("012_345_678 9", 0x0123456789),
        ("1FFF_FFFF_FFFF_FFFF_FFFF", 0x1FFFFFFFFFFFFFFF),
        ("0123456789abcdef", 0x0123456789ABCDEF),
        ("0123456789ABCDEF", 0x0123456789ABCDEF),
    ];
    println!("测试encode_number功能.");
    for (x, y) in table {
        println!("0x{y:x} <encode_number> {x}");
        let mut x = x.to_uppercase().replace(" ", "").replace("_", "");
        x.truncate(16);
        assert_eq!(HexEncoder::encode_number(y), x);
    }
    println!("测试decode_number功能.");
    for (x, y) in table {
        println!("{x} <decode_number> 0x{y:x}");
        assert_eq!(HexEncoder::decode_number(x).expect("NEVER"), y);
    }
    println!("测试decode_number异常输入.");
    println!("-123456789");
    println!("012345678z");
    assert_eq!(
        HexEncoder::decode_number("-123456789").map_err(|x| x.contains("出现未预期的字符")),
        Err(true)
    );
    assert_eq!(
        HexEncoder::decode_number("012345678z").map_err(|x| x.contains("出现未预期的字符")),
        Err(true)
    );
    return;
}