//3rd_party_lib:crypto-ffi/build/crypto_ffi
//dependence:commonAes.cj

import std.unittest.*
import std.collection.*
import std.unittest.testmacro.*
import crypto_ffi.aescj.*
import crypto_ffi.utils.*
import stdx.encoding.hex.*
import stdx.encoding.base64.*

@Test
public class TestAesCbc02{
    var keyen = AESKEY()
    var keyde = AESKEY()
    var keyStr="1234567812345678"
    //初始化参数
    public override func beforeEach(): Unit{
        keyen = AESKEY()
        keyde = AESKEY()
        keyStr="1234567812345678"
    }
    //未设置加密密钥
    @TestCase
    public func test_aesCbc02_01():Unit{
        var inside ="skfhafahglkahglahglkahgalgfssffe"
        var ivec="0000000000000000"
        var expStr="PnOERWwc1DLUmgYVxKo7OXVpuTRSL9MfPQwQWrpmYNw="
        var exceptionFlag=1
        try{
            cbcEn(keyen,inside, ivec,expStr)
        }catch(e:CryptoException){
            if(e.toString().contains("Please set the encrypto key first")){
                exceptionFlag=0
            }
        }
        @Assert(exceptionFlag,0)
    }
    //未设置解密密钥
    @TestCase
    public func test_aesCbc02_02():Unit{
        var inside ="skfhafahglkahglahglkahgalgfssffe"
        var ivec="0000000000000000"
        var expStr="PnOERWwc1DLUmgYVxKo7OXVpuTRSL9MfPQwQWrpmYNw="

        setEncryptKeyAes(keyen,keyStr,Int32(128))
        var resultEn=cbcEn(keyen,inside, ivec,expStr)
        @Assert(resultEn,0)
        var exceptionFlag=1
        try{
            cbcDe(keyde,expStr, ivec,inside)
        }catch(e:CryptoException){
            if(e.toString().contains("Please set the decrypto key first")){
                exceptionFlag=0
            }
        }
        @Assert(exceptionFlag,0)
    }
}