e7738de6d2
CI / Deep Native Runtime Cases (1/6) (push) Has been skipped
CI / Native Preflight (push) Failing after 1s
CI / Native Runtime Cases (1/2) (push) Failing after 0s
CI / Native Runtime Cases (2/2) (push) Failing after 1s
CI / Native Metadata Reports (push) Failing after 0s
CI / Native Direct Backend Artifacts (push) Failing after 0s
CI / Native Sanitizer Smoke (push) Failing after 1s
CI / Command Contract Snapshots (push) Failing after 1s
CI / Deep Conformance Suite (push) Has been skipped
CI / Graph Build Perf (push) Failing after 1s
CI / Deep Native Preflight (push) Has been skipped
CI / Deep Native Runtime Cases (2/6) (push) Has been skipped
CI / Deep Native Runtime Cases (3/6) (push) Has been skipped
CI / Conformance Suite (push) Failing after 1s
CI / Workspace Checks (push) Failing after 0s
CI / Deep Native Runtime Cases (5/6) (push) Has been skipped
CI / Deep Native Runtime Cases (6/6) (push) Has been skipped
CI / Deep Native Runtime Cases (4/6) (push) Has been skipped
CI / Deep Graph Build Perf (push) Has been skipped
166 lines
11 KiB
Plaintext
166 lines
11 KiB
Plaintext
pub fn main(world: World) -> Void raises {
|
|
let text: Span<u8> = "alpha\nzero beta\r\nzero gamma"
|
|
var output: [16]u8 = [0_u8; 16]
|
|
var offset: usize = 0
|
|
let wrote_a: Maybe<usize> = std.io.writeByte(output, offset, 111_u8)
|
|
if wrote_a.has {
|
|
offset = wrote_a.value
|
|
}
|
|
let wrote_tail: Maybe<usize> = std.io.writeSpan(output, offset, "k")
|
|
if wrote_tail.has {
|
|
offset = wrote_tail.value
|
|
}
|
|
let first: Maybe<Span<u8>> = std.io.nextLine(text, 0)
|
|
let second_start: usize = std.io.nextLineStart(text, 0)
|
|
let second: Maybe<Span<u8>> = std.io.nextLine(text, second_start)
|
|
let third_start: usize = std.io.nextLineStart(text, second_start)
|
|
let third: Maybe<Span<u8>> = std.io.nextLine(text, third_start)
|
|
let written: Span<u8> = std.io.written(output, offset)
|
|
var read_buf: [4]u8 = [0_u8; 4]
|
|
let read_next: Maybe<usize> = std.io.read(text, 0, read_buf)
|
|
var exact_buf: [5]u8 = [0_u8; 5]
|
|
let exact_next: Maybe<usize> = std.io.readExact(text, 0, exact_buf)
|
|
var too_large: [32]u8 = [0_u8; 32]
|
|
let exact_short: Maybe<usize> = std.io.readExact(text, 0, too_large)
|
|
let first_byte: Maybe<u8> = std.io.readByte(text, 0)
|
|
var copy_buf: [4]u8 = [0_u8; 4]
|
|
let copied: usize = std.io.copy(copy_buf, "zero!")
|
|
let copied_exact: Maybe<usize> = std.io.copyN(copy_buf, "zero", 4)
|
|
let copied_short: Maybe<usize> = std.io.copyN(copy_buf, "xy", 3)
|
|
var write_all_buf: [4]u8 = [0_u8; 4]
|
|
let wrote_all: Maybe<usize> = std.io.writeAll(write_all_buf, 0, "done")
|
|
var write_at_buf: [4]u8 = [120_u8; 4]
|
|
let wrote_at: Maybe<usize> = std.io.writeAt(write_at_buf, 1, "io")
|
|
let read_line: Maybe<Span<u8>> = std.io.readLine(text, second_start)
|
|
let read_line_start: usize = std.io.readLineStart(text, second_start)
|
|
let until_newline: Maybe<Span<u8>> = std.io.readUntilDelimiter(text, 0, 10_u8)
|
|
let after_newline: usize = std.io.readUntilDelimiterStart(text, 0, 10_u8)
|
|
var read_all_buf: [4]u8 = [0_u8; 4]
|
|
let read_all: Maybe<Span<u8>> = std.io.readAll("data", read_all_buf)
|
|
var read_at_buf: [4]u8 = [0_u8; 4]
|
|
let read_at: Maybe<usize> = std.io.readAt(text, second_start, read_at_buf)
|
|
|
|
var line_reader: FixedReader = std.io.fixedReader(text, 0_usize)
|
|
let fixed_first: Maybe<Span<u8>> = std.io.fixedReaderReadLine(&mut line_reader)
|
|
let fixed_byte: Maybe<u8> = std.io.fixedReaderReadByte(&mut line_reader)
|
|
let seek_second: Bool = std.io.fixedReaderSeek(&mut line_reader, second_start)
|
|
let fixed_until_space: Maybe<Span<u8>> = std.io.fixedReaderReadUntilDelimiter(&mut line_reader, 32_u8)
|
|
var limit_reader: FixedReader = std.io.fixedReaderLimit(&line_reader, 4)
|
|
var limit_buf: [4]u8 = [0_u8; 4]
|
|
let limit_all: Maybe<Span<u8>> = std.io.fixedReaderReadAll(&mut limit_reader, limit_buf)
|
|
var wide_limit_base: FixedReader = std.io.fixedReader("abc", 1_usize)
|
|
var wide_limit_reader: FixedReader = std.io.fixedReaderLimit(&wide_limit_base, 99_usize)
|
|
var wide_limit_buf: [2]u8 = [0_u8; 2]
|
|
let wide_limit_all: Maybe<Span<u8>> = std.io.fixedReaderReadAll(&mut wide_limit_reader, wide_limit_buf)
|
|
var fixed_at_buf: [2]u8 = [0_u8; 2]
|
|
let fixed_at: Maybe<usize> = std.io.fixedReaderReadAt(&line_reader, 0, fixed_at_buf)
|
|
let fixed_len: usize = std.io.fixedReaderLen(&line_reader)
|
|
let fixed_remaining: usize = std.io.fixedReaderRemaining(&line_reader)
|
|
let fixed_cursor: usize = std.io.fixedReaderCursor(&line_reader)
|
|
let seek_end: Bool = std.io.fixedReaderSeek(&mut line_reader, fixed_len)
|
|
let fixed_done: Bool = std.io.fixedReaderDone(&line_reader)
|
|
var exact_reader: FixedReader = std.io.fixedReader("exact", 0_usize)
|
|
var exact_reader_buf: [5]u8 = [0_u8; 5]
|
|
let fixed_exact: Bool = std.io.fixedReaderReadExact(&mut exact_reader, exact_reader_buf)
|
|
|
|
var writer_storage: [16]u8 = [0_u8; 16]
|
|
var writer: FixedWriter = std.io.fixedWriter(writer_storage, 0_usize)
|
|
let writer_a: Bool = std.io.fixedWriterWrite(&mut writer, "ab")
|
|
let writer_b: Bool = std.io.fixedWriterWriteByte(&mut writer, 99_u8)
|
|
let writer_at: Bool = std.io.fixedWriterWriteAt(&mut writer, 1, "ZZ")
|
|
let writer_view: Span<u8> = std.io.fixedWriterView(&writer)
|
|
let writer_cursor: usize = std.io.fixedWriterCursor(&writer)
|
|
let writer_capacity: usize = std.io.fixedWriterCapacity(&writer)
|
|
let writer_remaining: usize = std.io.fixedWriterRemaining(&writer)
|
|
let writer_truncated: usize = std.io.fixedWriterTruncate(&mut writer, 2_usize)
|
|
let writer_seek: Bool = std.io.fixedWriterSeek(&mut writer, 1_usize)
|
|
let writer_cleared: usize = std.io.fixedWriterClear(&mut writer)
|
|
var writer_all_storage: [4]u8 = [0_u8; 4]
|
|
var writer_all: FixedWriter = std.io.fixedWriter(writer_all_storage, 0_usize)
|
|
let writer_all_ok: Bool = std.io.fixedWriterWriteAll(&mut writer_all, "full")
|
|
|
|
var copy_reader: FixedReader = std.io.fixedReader("copy", 0_usize)
|
|
var copy_writer_storage: [8]u8 = [0_u8; 8]
|
|
var copy_writer: FixedWriter = std.io.fixedWriter(copy_writer_storage, 0_usize)
|
|
var scratch: [2]u8 = [0_u8; 2]
|
|
let copied_stream: usize = std.io.copyBuffer(&mut copy_reader, &mut copy_writer, scratch)
|
|
var capacity_reader: FixedReader = std.io.fixedReader("abcd", 0_usize)
|
|
var capacity_writer_storage: [3]u8 = [0_u8; 3]
|
|
var capacity_writer: FixedWriter = std.io.fixedWriter(capacity_writer_storage, 0_usize)
|
|
let copied_to_capacity: usize = std.io.copyBuffer(&mut capacity_reader, &mut capacity_writer, scratch)
|
|
|
|
var n_reader: FixedReader = std.io.fixedReader("12345", 0_usize)
|
|
var n_writer_storage: [8]u8 = [0_u8; 8]
|
|
var n_writer: FixedWriter = std.io.fixedWriter(n_writer_storage, 0_usize)
|
|
let copied_n: Maybe<usize> = std.io.copyReaderN(&mut n_reader, &mut n_writer, 3_usize, scratch)
|
|
var n_fail_reader: FixedReader = std.io.fixedReader("abcd", 0_usize)
|
|
var n_fail_writer_storage: [3]u8 = [0_u8; 3]
|
|
var n_fail_writer: FixedWriter = std.io.fixedWriter(n_fail_writer_storage, 0_usize)
|
|
let copied_n_fail: Maybe<usize> = std.io.copyReaderN(&mut n_fail_reader, &mut n_fail_writer, 4_usize, scratch)
|
|
|
|
var discard_reader: FixedReader = std.io.fixedReader("drop", 0_usize)
|
|
let discarded: usize = std.io.discard(&mut discard_reader, scratch)
|
|
|
|
var tee_reader: FixedReader = std.io.fixedReader("tee", 0_usize)
|
|
var tee_writer_storage: [4]u8 = [0_u8; 4]
|
|
var tee_writer: FixedWriter = std.io.fixedWriter(tee_writer_storage, 0_usize)
|
|
var tee_buf: [2]u8 = [0_u8; 2]
|
|
let tee_count: Maybe<usize> = std.io.teeRead(&mut tee_reader, &mut tee_writer, tee_buf)
|
|
|
|
var multi_first: FixedReader = std.io.fixedReader("ab", 0_usize)
|
|
var multi_second: FixedReader = std.io.fixedReader("cd", 0_usize)
|
|
var multi_buf: [4]u8 = [0_u8; 4]
|
|
let multi_count: usize = std.io.multiRead(&mut multi_first, &mut multi_second, multi_buf)
|
|
|
|
var ok: Bool = true
|
|
if first.has && second.has && third.has && read_next.has && exact_next.has && first_byte.has && copied_exact.has && wrote_all.has && wrote_at.has && read_line.has && until_newline.has && read_all.has && read_at.has {
|
|
ok = ok && !exact_short.has && !copied_short.has
|
|
ok = ok && copied == 4 && std.io.countLines(text) == 3 && std.io.remaining(output, offset) == 14
|
|
ok = ok && std.mem.eql(written, "ok") && std.mem.eql(second.value, "zero beta") && std.str.contains(third.value, "gamma")
|
|
ok = ok && read_next.value == 4 && std.mem.eql(std.io.written(read_buf, 4), "alph")
|
|
ok = ok && exact_next.value == 5 && std.mem.eql(std.io.written(exact_buf, 5), "alpha")
|
|
ok = ok && first_byte.value == 97_u8 && copied_exact.value == 4 && std.mem.eql(std.io.written(copy_buf, 4), "zero")
|
|
ok = ok && wrote_all.value == 4 && std.mem.eql(std.io.written(write_all_buf, 4), "done") && wrote_at.value == 3 && std.mem.eql(std.io.written(write_at_buf, 4), "xiox")
|
|
ok = ok && std.mem.eql(read_line.value, "zero beta") && read_line_start == third_start && std.mem.eql(until_newline.value, "alpha") && after_newline == second_start
|
|
ok = ok && std.mem.eql(read_all.value, "data") && read_at.value == second_start + 4 && std.mem.eql(std.io.written(read_at_buf, 4), "zero")
|
|
} else {
|
|
ok = false
|
|
}
|
|
|
|
if fixed_first.has && fixed_byte.has && fixed_until_space.has && limit_all.has && wide_limit_all.has && fixed_at.has {
|
|
ok = ok && seek_second && seek_end && fixed_done && fixed_exact
|
|
ok = ok && std.mem.eql(fixed_first.value, "alpha") && fixed_byte.value == 122_u8 && std.mem.eql(fixed_until_space.value, "zero")
|
|
ok = ok && std.mem.eql(limit_all.value, "beta") && std.mem.eql(wide_limit_all.value, "bc") && fixed_at.value == 2 && std.mem.eql(std.io.written(fixed_at_buf, 2), "al")
|
|
ok = ok && fixed_len == std.mem.len(text) && fixed_remaining == std.mem.len(text) - fixed_cursor && fixed_cursor == second_start + 5
|
|
ok = ok && std.mem.eql(std.io.written(exact_reader_buf, 5), "exact")
|
|
} else {
|
|
ok = false
|
|
}
|
|
|
|
ok = ok && writer_a && writer_b && writer_at && std.mem.eql(writer_view, "aZZ") && writer_cursor == 3
|
|
ok = ok && writer_capacity == 16 && writer_remaining == 13 && writer_truncated == 2 && writer_seek && writer_cleared == 0
|
|
ok = ok && writer_all_ok && std.mem.eql(std.io.fixedWriterView(&writer_all), "full")
|
|
ok = ok && copied_stream == 4 && std.mem.eql(std.io.fixedWriterView(©_writer), "copy")
|
|
ok = ok && copied_to_capacity == 3 && std.mem.eql(std.io.fixedWriterView(&capacity_writer), "abc")
|
|
if copied_n.has {
|
|
ok = ok && copied_n.value == 3 && std.mem.eql(std.io.fixedWriterView(&n_writer), "123")
|
|
} else {
|
|
ok = false
|
|
}
|
|
ok = ok && !copied_n_fail.has && std.io.fixedReaderCursor(&n_fail_reader) == 0 && std.io.fixedWriterCursor(&n_fail_writer) == 0
|
|
ok = ok && discarded == 4 && std.io.fixedReaderDone(&discard_reader)
|
|
if tee_count.has {
|
|
ok = ok && tee_count.value == 2 && std.mem.eql(std.io.written(tee_buf, 2), "te") && std.mem.eql(std.io.fixedWriterView(&tee_writer), "te")
|
|
} else {
|
|
ok = false
|
|
}
|
|
ok = ok && multi_count == 4 && std.mem.eql(std.io.written(multi_buf, 4), "abcd")
|
|
ok = ok && std.io.errorNone() == 0_u32 && std.mem.eql(std.io.errorName(std.io.errorEof()), "eof")
|
|
ok = ok && std.mem.eql(std.io.errorName(std.io.errorShortRead()), "short_read") && std.mem.eql(std.io.errorName(std.io.errorShortWrite()), "short_write")
|
|
ok = ok && std.mem.eql(std.io.errorName(std.io.errorCapacity()), "capacity") && std.mem.eql(std.io.errorName(std.io.errorPermission()), "permission")
|
|
ok = ok && std.mem.eql(std.io.errorName(std.io.errorTimeout()), "timeout") && std.mem.eql(std.io.errorName(std.io.errorIo()), "io") && std.mem.eql(std.io.errorName(99_u32), "unknown")
|
|
if ok {
|
|
check world.out.write("std io lines ok\n")
|
|
}
|
|
}
|