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.