khqr 0.1.0

Unofficial Rust SDK for Bakong KHQR
Documentation
use bakong_khqr::{calculate_crc16, verify_crc};

#[test]
fn test_crc_basic() {
    let data =
        "00020101021229300013test@bank01091234567895204599953031165802KH5906TestUser6010PhnomPenh";
    let crc = calculate_crc16(data);
    assert_eq!(crc.len(), 4);
}

#[test]
fn test_crc_consistency() {
    let data = "00020101021229300013test@bank";
    let crc1 = calculate_crc16(data);
    let crc2 = calculate_crc16(data);
    assert_eq!(crc1, crc2);
}

#[test]
fn test_verify_crc_valid() {
    let payload =
        "00020101021229300013test@bank01091234567895204599953031165802KH5906TestUser6010PhnomPenh";
    let expected_crc = calculate_crc16(payload);
    let qr = format!("{}63{}", payload, expected_crc);

    let (is_valid, calc_crc, actual) = verify_crc(&qr);
    assert!(
        is_valid,
        "CRC should be valid, expected: {}, actual: {}",
        calc_crc, actual
    );
}

#[test]
fn test_verify_crc_invalid() {
    let qr = "00020101021229300013test@bank01091234567895204599953031165802KH5906TestUser6010PhnomPenh6304FFFF";
    let (is_valid, _, _) = verify_crc(qr);
    assert!(!is_valid, "CRC should be invalid");
}