fn test_mdp()

in src/dp.rs [207:267]


fn test_mdp() {
    // base4
    assert_eq!(
        find_mdp(&BigUint::from_str_radix("312", 4).unwrap(), 4),
        vec![
            BigUint::from_str_radix("312", 4).unwrap(),
            BigUint::from_str_radix("303", 4).unwrap(),
            BigUint::from_str_radix("233", 4).unwrap(),
        ]
    );

    // base10
    assert_eq!(
        find_mdp(&BigUint::from(3413u32), 10),
        vec![
            BigUint::from(3413u32),
            BigUint::from(3409u32),
            BigUint::from(3399u32),
            BigUint::from(2999u32),
        ]
    );

    // base16
    assert_eq!(
        find_mdp(&BigUint::from_str_radix("D55", 16).unwrap(), 16),
        vec![
            BigUint::from_str_radix("D55", 16).unwrap(),
            BigUint::from_str_radix("D4F", 16).unwrap(),
            BigUint::from_str_radix("CFF", 16).unwrap(),
        ]
    );

    // base36
    assert_eq!(
        find_mdp(&BigUint::from_str_radix("2MT", 36).unwrap(), 36),
        vec![
            BigUint::from_str_radix("2MT", 36).unwrap(),
            BigUint::from_str_radix("2LZ", 36).unwrap(),
            BigUint::from_str_radix("1ZZ", 36).unwrap(),
        ]
    );

    // base256
    assert_eq!(
        find_mdp(&BigUint::from_str_radix("65535", 10).unwrap(), 256),
        vec![BigUint::from_str_radix("65535", 10).unwrap()]
    );

    // base256 more complex: (256^3 - 7) = 16777209
    assert_eq!(
        find_mdp(&BigUint::from_str_radix("16777209", 10).unwrap(), 256),
        vec![
            // 16777209 (decimal) = 1111_1111_1111_1111_1111_1001 (binary)
            BigUint::from_str_radix("16777209", 10).unwrap(),
            // 16776959 (decimal) = 1111_1111_1111_1110_1111_1111 (binary)
            BigUint::from_str_radix("16776959", 10).unwrap(),
            // 16711679 (decimal) = 1111_1110_1111_1111_1111_1111 (binary)
            BigUint::from_str_radix("16711679", 10).unwrap(),
        ]
    );
}