// 3rd_party_lib:io4cj/target/release/io4cj
// 3rd_party_lib:io4cj/target/release/crypto_ffi
//dependence:../utils/parseStringData.cj
import io4cj.*
import std.unittest.*
import std.io.*
/*
public static func buffer(sink: Sink): BufferedSink
public static func sink(file: File): Sink
func writeUtf8(string: String): BufferedSink
public func completeSegmentByteCount(): Int64
public func clear(): Unit
public func getInt8(pos: Int64): Int8
*/
@Test
public class OkioTest {
let cla_1:ParseDataStr = ParseDataStr()
var returnFlag:Int32 = -1
var data:String = ""
var subData:Int8 = 0
var funcData:(Int64,String) = (0,"")
var tuple_1:(Array<String>,Int64) = (Array<String>(),0)
@TestCase
func testBuffer(): Unit {
// class Buffer <: BufferedSource & BufferedSink && BufferedSource <: Source
let sinkIns:Sink = Buffer()
var _:BufferedSink = Okio.buffer(sinkIns) // > BufferedSink
let buffer_1:Buffer = Buffer()
data = buffer_1.completeSegmentByteCount().toString()
try{
buffer_1.clear() //当前空buffer实例clear时会异常
}catch(e1:Exception){
// e1.printStackTrace()
returnFlag = returnFlag
}
data = buffer_1.writeUtf8("\"Hello Cangjie Lang\"").toString()
funcData = cla_1.parseData_utf8_1(data,4)
@Assert(funcData[0],101)
tuple_1 = cla_1.parseArrFromString(data,"[")
@Assert(tuple_1[0][18],"103")
@Assert(tuple_1[1],20)
subData = buffer_1.getInt8(1) //72
// println("subData:>> ${subData}")
@Assert(subData,72)
data = buffer_1.completeSegmentByteCount().toString()
@Assert(data,"0")
buffer_1.clear() //清空非空实例buffer_1
funcData = cla_1.parseData_utf8_1(buffer_1.toString(),1,length:1)
@Assert(funcData[0],11)
try{
subData = buffer_1.getInt8(1) //当前buffer_1为空,getInt8索引越界
}catch(e2:Exception){
// e2.printStackTrace()
@Assert(cla_1.assertException(e2,"IndexOutOfBoundsException"),true)
returnFlag = 0
}
@Assert(returnFlag,0)
}
}