io — validation proof
Go’s own io test suite, converted to C# by go2cs, built against the converted standard
library, run under the Go-semantics test host, and compared verdict for verdict against a clean
go test -json baseline of the same sources. This page is generated by the converter from that
comparison — it is the evidence behind the io row in
Validated Test Packages.
Validated 2026-08-10 · converter 1d21396bf
60 matched · 1 disclosed — Go 1.23.1, windows/amd64, converted package
src/core/io.
Verdicts
| Test | go test |
go2cs |
|---|---|---|
TestCopy |
pass | pass |
TestCopyBuffer |
pass | pass |
TestCopyBufferNil |
pass | pass |
TestCopyLargeWriter |
pass | pass |
TestCopyN |
pass | pass |
TestCopyNEOF |
pass | pass |
TestCopyNReadFrom |
pass | pass |
TestCopyNWriteTo |
pass | pass |
TestCopyNegative |
pass | pass |
TestCopyPriority |
pass | pass |
TestCopyReadErrWriteErr |
pass | pass |
TestCopyReadFrom |
pass | pass |
TestCopyWriteTo |
pass | pass |
TestInterleavedMultiReader |
pass | pass |
TestMultiReader |
pass | pass |
TestMultiReaderAsWriterTo |
pass | pass |
TestMultiReaderCopy |
pass | pass |
TestMultiReaderFinalEOF |
pass | pass |
TestMultiReaderFlatten |
pass | pass |
TestMultiReaderFreesExhaustedReaders |
pass | pass |
TestMultiReaderSingleByteWithEOF |
pass | pass |
TestMultiWriter |
pass | pass |
TestMultiWriterCopy |
pass | pass |
TestMultiWriterError |
pass | pass |
TestMultiWriterSingleChainFlatten |
pass | pass |
TestMultiWriter_String |
pass | pass |
TestMultiWriter_StringCheckCall |
pass | pass |
TestMultiWriter_WriteStringSingleAlloc |
pass | pass |
TestNopCloserWriterToForwarding |
pass | pass |
TestOffsetWriter_Seek |
pass | pass |
TestOffsetWriter_Seek/errOffset |
pass | pass |
TestOffsetWriter_Seek/errWhence |
pass | pass |
TestOffsetWriter_Seek/normal |
pass | pass |
TestOffsetWriter_Write |
pass | pass |
TestOffsetWriter_Write/Write |
pass | pass |
TestOffsetWriter_Write/Write_Of_Copy_WriteTo |
pass | pass |
TestOffsetWriter_WriteAt |
pass | pass |
TestPipe1 |
pass | pass |
TestPipe2 |
pass | pass |
TestPipe3 |
pass | pass |
TestPipeAllocations |
pass | fail (disclosed) |
TestPipeCloseError |
pass | pass |
TestPipeConcurrent |
pass | pass |
TestPipeConcurrent/Read |
pass | pass |
TestPipeConcurrent/Write |
pass | pass |
TestPipeReadClose |
pass | pass |
TestPipeReadClose2 |
pass | pass |
TestPipeWriteClose |
pass | pass |
TestPipeWriteClose2 |
pass | pass |
TestReadAtLeast |
pass | pass |
TestReadAtLeastWithDataAndEOF |
pass | pass |
TestReadAtLeastWithDataAndError |
pass | pass |
TestSectionReader_Max |
pass | pass |
TestSectionReader_ReadAt |
pass | pass |
TestSectionReader_Seek |
pass | pass |
TestSectionReader_Size |
pass | pass |
TestTeeReader |
pass | pass |
TestWriteAfterWriterClose |
pass | pass |
TestWriteAt_PositionPriorToBase |
pass | pass |
TestWriteEmpty |
pass | pass |
TestWriteNil |
pass | pass |
Disclosed divergences
A disclosed divergence is a specific Go assertion the managed CLR provably cannot satisfy — not
a skipped test and not a tolerance. Each one is pinned by exact failure signature in the package’s
hand-owned go2cs_test_disclosures.json;
a disclosed test that fails any other way is still a hard mismatch.
| Test | Class | Pinned reason |
|---|---|---|
TestPipeAllocations |
alloc-count-semantics |
count-bound AllocsPerRun assert (want <= 4): the byte-derived shim reports allocated bytes, so Pipe() - measured 1184 bytes per call, for the two heap-boxed ends plus the pipe struct’s three channels and its Mutex/Once/onceError members - can never satisfy a four-MALLOC bound whatever its allocation behavior |
Excluded declarations
Declarations filtered from both sides of the comparison, and therefore not claimed above:
Benchmark, Fuzz and Example declarations the converted host does not execute, plus any
test requiring a capability the managed runtime does not provide — a testing member the host
has not implemented, or a platform behavior it provably cannot reproduce. Each is named with
the capability it needs.
- BenchmarkCopyNLarge (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCopyNSmall (benchmark): benchmark execution is deferred to Phase 4D
- ExampleCopy (example): example execution is deferred to Phase 4D
- ExampleCopyBuffer (example): example execution is deferred to Phase 4D
- ExampleCopyN (example): example execution is deferred to Phase 4D
- ExampleLimitReader (example): example execution is deferred to Phase 4D
- ExampleMultiReader (example): example execution is deferred to Phase 4D
- ExampleMultiWriter (example): example execution is deferred to Phase 4D
- ExamplePipe (example): example execution is deferred to Phase 4D
- ExampleReadAll (example): example execution is deferred to Phase 4D
- ExampleReadAtLeast (example): example execution is deferred to Phase 4D
- ExampleReadFull (example): example execution is deferred to Phase 4D
- ExampleSectionReader (example): example execution is deferred to Phase 4D
- ExampleSectionReader_Read (example): example execution is deferred to Phase 4D
- ExampleSectionReader_ReadAt (example): example execution is deferred to Phase 4D
- ExampleSectionReader_Seek (example): example execution is deferred to Phase 4D
- ExampleSectionReader_Size (example): example execution is deferred to Phase 4D
- ExampleSeeker_Seek (example): example execution is deferred to Phase 4D
- ExampleTeeReader (example): example execution is deferred to Phase 4D
- ExampleWriteString (example): example execution is deferred to Phase 4D