00e35bed创建于 2024年7月18日历史提交
// EXEC: cjc %import-path %L %l %f
// EXEC: ./main

import io4cj.*
import std.posix.*
import std.io.*

main () {
    let b0 = Buffer()
    let b1: BufferedSink = Okio.buffer(b0)
    let c1: BufferedSource = Okio.buffer(b0)
    let b2: BufferedSink = Okio.buffer(b1)
    b2.writeUtf8("hello")
    if(b2.buffer().size != 5) {
        return 1
    }
    if(b1.buffer().size != 0) {
        return 1
    }
    if(b0.buffer().size != 0) {
        return 1
    }
    b2.emit()

    if(b2.buffer().size != 0) {
        return 1
    }
    if(b1.buffer().size != 5) {
        return 1
    }
    if(b0.buffer().size != 0) {
        return 1
    }
    b1.emit()
    
    if(b2.buffer().size != 0) {
        return 1
    }
    if(b1.buffer().size != 0) {
        return 1
    }
    if(b0.buffer().size != 5) {
        return 1
    }
    c1.read(Buffer(),5)
    try {
        let str1 = c1.close()
    } catch(e: Exception) {
        println("PASS")
    }
    try {
        let str3 = c1.exhausted()
    } catch(e: Exception) {
        println("PASS")
    }
    try {
        let str4 = c1.request(10)
    } catch(e: Exception) {
        println("PASS")
    }
    var ess: String = ""
    try {
        let str2 = c1.read(Buffer(),5)
    } catch(e: Exception) {
        ess = e.toString()
    }
    if (ess != "IllegalArgumentException: closed") {
        return 2
    }
    return 0
}