spl-token-wrap 1.0.0

Solana Program Library Token Wrap
Documentation
use spl_token_wrap::instruction::TokenWrapInstruction;

#[test]
fn test_pack_unpack_create_mint() {
    let instruction = TokenWrapInstruction::CreateMint { idempotent: true };
    let packed = instruction.pack();
    assert_eq!(packed, vec![0, 1]);

    let unpacked = TokenWrapInstruction::unpack(&packed).unwrap();
    assert_eq!(unpacked, instruction);

    let instruction = TokenWrapInstruction::CreateMint { idempotent: false };
    let packed = instruction.pack();
    assert_eq!(packed, vec![0, 0]);

    let unpacked = TokenWrapInstruction::unpack(&packed).unwrap();
    assert_eq!(unpacked, instruction);
}

#[test]
fn test_pack_unpack_wrap() {
    let instruction = TokenWrapInstruction::Wrap { amount: 42 };
    let packed = instruction.pack();
    assert_eq!(packed, vec![1, 42, 0, 0, 0, 0, 0, 0, 0]);

    let unpacked = TokenWrapInstruction::unpack(&packed).unwrap();
    assert_eq!(unpacked, instruction);
}

#[test]
fn test_pack_unpack_unwrap() {
    let instruction = TokenWrapInstruction::Unwrap { amount: 100 };
    let packed = instruction.pack();
    assert_eq!(packed, vec![2, 100, 0, 0, 0, 0, 0, 0, 0]);

    let unpacked = TokenWrapInstruction::unpack(&packed).unwrap();
    assert_eq!(unpacked, instruction);
}

#[test]
fn test_unpack_invalid_data() {
    assert!(TokenWrapInstruction::unpack(&[]).is_err());
    assert!(TokenWrapInstruction::unpack(&[6]).is_err());
    assert!(TokenWrapInstruction::unpack(&[0]).is_err());
    assert!(TokenWrapInstruction::unpack(&[1, 0, 0, 0]).is_err());
    assert!(TokenWrapInstruction::unpack(&[2, 0, 0, 0]).is_err());
    assert!(TokenWrapInstruction::unpack(&[0]).is_err());
    assert!(TokenWrapInstruction::unpack(&[0, 1, 0]).is_err());
}