bytes — validation proof
Go’s own bytes 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 bytes row in
Validated Test Packages.
Validated 2026-10-25 · converter 3e3f18925
84 matched · 6 disclosed — Go 1.26.10, windows/amd64, converted package
src/core/bytes.
Measured at Release (tiered JIT off), oracle go version go1.26.10 windows/amd64.
Verdicts
| Test | go test |
go2cs |
|---|---|---|
TestBasicOperations |
pass | pass |
TestBufferGrowNegative |
pass | pass |
TestBufferGrowth |
pass | pass |
TestBufferTruncateNegative |
pass | pass |
TestBufferTruncateOutOfRange |
pass | pass |
TestCapWithPreallocatedSlice |
pass | pass |
TestCapWithSliceAndWrittenData |
pass | pass |
TestClone |
pass | pass |
TestCompare |
pass | pass |
TestCompareBytes |
pass | pass |
TestCompareIdenticalSlice |
pass | pass |
TestContains |
pass | pass |
TestContainsAny |
pass | pass |
TestContainsFunc |
pass | pass |
TestContainsRune |
pass | pass |
TestCountByte |
pass | pass |
TestCountByteNoMatch |
pass | pass |
TestCut |
pass | pass |
TestCutPrefix |
pass | pass |
TestCutSuffix |
pass | pass |
TestEmptyReaderConcurrent |
pass | pass |
TestEndianBaseCompare |
pass | pass |
TestEqual |
pass | pass |
TestEqualExhaustive |
pass | pass |
TestEqualFold |
pass | pass |
TestFields |
pass | pass |
TestFieldsFunc |
pass | pass |
TestGrow |
pass | fail (disclosed) |
TestGrowOverflow |
pass | pass |
TestIndex |
pass | fail (disclosed) |
TestIndexAny |
pass | pass |
TestIndexByte |
pass | pass |
TestIndexByteBig |
pass | pass |
TestIndexByteSmall |
pass | pass |
TestIndexFunc |
pass | pass |
TestIndexRune |
pass | fail (disclosed) |
TestLargeByteReads |
pass | pass |
TestLargeByteWrites |
pass | pass |
TestLargeStringReads |
pass | pass |
TestLargeStringWrites |
pass | pass |
TestLastIndex |
pass | fail (disclosed) |
TestLastIndexAny |
pass | pass |
TestLastIndexByte |
pass | pass |
TestLines |
pass | pass |
TestMap |
pass | pass |
TestMixedReadsAndWrites |
pass | pass |
TestNewBuffer |
pass | pass |
TestNewBufferShallow |
pass | fail (disclosed) |
TestNewBufferString |
pass | pass |
TestNext |
pass | pass |
TestNil |
pass | pass |
TestNotEqual |
pass | pass |
TestPeek |
pass | pass |
TestReadAfterBigSeek |
pass | pass |
TestReadBytes |
pass | pass |
TestReadEmptyAtEOF |
pass | pass |
TestReadFrom |
pass | pass |
TestReadFromNegativeReader |
pass | pass |
TestReadFromPanicReader |
pass | pass |
TestReadString |
pass | pass |
TestReader |
pass | pass |
TestReaderAt |
pass | pass |
TestReaderAtConcurrent |
pass | pass |
TestReaderCopyNothing |
pass | pass |
TestReaderDoubleUnreadRune |
pass | pass |
TestReaderLen |
pass | pass |
TestReaderLenSize |
pass | pass |
TestReaderReset |
pass | pass |
TestReaderWriteTo |
pass | pass |
TestReaderZero |
pass | pass |
TestRepeat |
pass | pass |
TestRepeatCatchesOverflow |
pass | pass |
TestReplace |
pass | pass |
TestRuneIO |
pass | pass |
TestRunes |
pass | pass |
TestSplit |
pass | pass |
TestSplitAfter |
pass | pass |
TestTitle |
pass | pass |
TestToLower |
pass | pass |
TestToTitle |
pass | pass |
TestToUpper |
pass | pass |
TestToValidUTF8 |
pass | pass |
TestTrim |
pass | pass |
TestTrimFunc |
pass | pass |
TestTrimSpace |
pass | pass |
TestUnreadByte |
pass | pass |
TestUnreadRuneError |
pass | pass |
TestWriteAppend |
pass | fail (disclosed) |
TestWriteInvalidRune |
pass | pass |
TestWriteTo |
pass | pass |
Disclosed divergences
A disclosed divergence is a specific Go assertion this conversion does not 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.
The Class column says which kind each one is: a deferred entry is an assertion the managed
CLR can meet, pinned against the named plan that will retire it; every other class is one it
provably cannot satisfy.
| Test | Class | Pinned reason |
|---|---|---|
TestGrow |
deferred |
Want-zero AllocsPerRun assert: Go’s Buffer also allocates, once per doubling, and passes because AllocsPerRun’s integer quotient truncates the sub-one average to 0 (buffer_test.go:549-568; go1.24.13 testing/allocs.go:40-44). The converted host floors the same sub-one quotient to 1 (testing.cs:755), so the converted run reports 1 allocation per run. |
TestIndex |
deferred |
Want-zero AllocsPerRun assert: Go compares string(s[:n]) == string(sep) without allocating, while the converted generic IndexRabinKarp (src/core/internal/bytealg/bytealg.cs:82 and :90) compares s[..n].ToGoString() == sep.ToGoString() and mints an @string copy for each side: 2 counted objects per run. The converter already emits a non-allocating string view for such a comparison; extending it to a type-parameter operand removes both copies. |
TestIndexRune |
deferred |
Want-zero AllocsPerRun assert: string(r) for a lookup materializes a byte[] in the managed model, where Go builds it in runtime.intstring’s 4-byte stack buffer. A transient one-rune string over a stack encoding, for a string(r) the callee does not retain, removes it. |
TestLastIndex |
deferred |
Want-zero AllocsPerRun assert: the converted LastIndexRabinKarp (src/core/internal/bytealg/bytealg.cs:110) compares s[last..].ToGoString() == sep.ToGoString(), two @string copies per run where Go’s string(...) == string(...) allocates none. The converter already emits a non-allocating string view for such a comparison; extending it to a type-parameter operand removes both copies. |
TestNewBufferShallow |
deferred |
Want-zero AllocsPerRun assert: the address-taken Buffer copy in the measured closure is heap-boxed per run (one ж box per address-take) in the managed model, where Go’s escape analysis keeps the shallow copy on the stack. Reducing per-address-take boxes removes it. |
TestWriteAppend |
deferred |
Want-zero AllocsPerRun assert over an AvailableBuffer/AppendInt/Write loop: Go’s sufficiently-sized buffer appends allocation-free. The counted object is strconv formatBits’ local 65-byte array (strconv/itoa.cs:89), allocated on each AppendInt of a value of 100 or more, where Go keeps the array on the stack. |
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.
- BenchmarkBufferAppendNoCopy (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkBufferFullSmallReads (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkBufferNotEmptyWriteRead (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkBufferWriteBlock (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkBytesCompare (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesBig (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesBigBothUnaligned (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesBigIdentical (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesBigUnaligned (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesDifferentLength (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesEmpty (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesEqual (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesIdentical (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesSameLength (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCompareBytesToNil (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCount (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCountEasy (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCountHard1 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCountHard2 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCountHard3 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkCountSingle (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkEqual (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkEqualBothUnaligned (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkFields (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkFieldsFunc (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndex (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexAnyASCII (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexAnyUTF8 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexByte (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexBytePortable (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexEasy (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexHard1 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexHard2 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexHard3 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexHard4 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexPeriodic (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexRune (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexRuneASCII (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIndexRuneUnicode (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkLastIndexAnyASCII (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkLastIndexAnyUTF8 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkLastIndexHard1 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkLastIndexHard2 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkLastIndexHard3 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkReadString (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkRepeat (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkRepeatLarge (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkReplace (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitAfterSeqEmptySeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitAfterSeqMultiByteSeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitAfterSeqSingleByteSeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitEmptySeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitMultiByteSeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitNMultiByteSeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitNSingleByteSeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitSeqEmptySeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitSeqMultiByteSeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitSeqSingleByteSeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkSplitSingleByteSeparator (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkToLower (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkToUpper (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkToValidUTF8 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkTrimASCII (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkTrimByte (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkTrimSpace (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkWriteByte (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkWriteRune (benchmark): benchmark execution is deferred to Phase 4D
- ExampleBuffer (example): example execution is deferred to Phase 4D
- ExampleBuffer_AvailableBuffer (example): example execution is deferred to Phase 4D
- ExampleBuffer_Bytes (example): example execution is deferred to Phase 4D
- ExampleBuffer_Cap (example): example execution is deferred to Phase 4D
- ExampleBuffer_Grow (example): example execution is deferred to Phase 4D
- ExampleBuffer_Len (example): example execution is deferred to Phase 4D
- ExampleBuffer_Next (example): example execution is deferred to Phase 4D
- ExampleBuffer_Read (example): example execution is deferred to Phase 4D
- ExampleBuffer_ReadByte (example): example execution is deferred to Phase 4D
- ExampleBuffer_reader (example): example execution is deferred to Phase 4D
- ExampleClone (example): example execution is deferred to Phase 4D
- ExampleCompare (example): example execution is deferred to Phase 4D
- ExampleCompare_search (example): example execution is deferred to Phase 4D
- ExampleContains (example): example execution is deferred to Phase 4D
- ExampleContainsAny (example): example execution is deferred to Phase 4D
- ExampleContainsFunc (example): example execution is deferred to Phase 4D
- ExampleContainsRune (example): example execution is deferred to Phase 4D
- ExampleCount (example): example execution is deferred to Phase 4D
- ExampleCut (example): example execution is deferred to Phase 4D
- ExampleCutPrefix (example): example execution is deferred to Phase 4D
- ExampleCutSuffix (example): example execution is deferred to Phase 4D
- ExampleEqual (example): example execution is deferred to Phase 4D
- ExampleEqualFold (example): example execution is deferred to Phase 4D
- ExampleFields (example): example execution is deferred to Phase 4D
- ExampleFieldsFunc (example): example execution is deferred to Phase 4D
- ExampleFieldsFuncSeq (example): example execution is deferred to Phase 4D
- ExampleFieldsSeq (example): example execution is deferred to Phase 4D
- ExampleHasPrefix (example): example execution is deferred to Phase 4D
- ExampleHasSuffix (example): example execution is deferred to Phase 4D
- ExampleIndex (example): example execution is deferred to Phase 4D
- ExampleIndexAny (example): example execution is deferred to Phase 4D
- ExampleIndexByte (example): example execution is deferred to Phase 4D
- ExampleIndexFunc (example): example execution is deferred to Phase 4D
- ExampleIndexRune (example): example execution is deferred to Phase 4D
- ExampleJoin (example): example execution is deferred to Phase 4D
- ExampleLastIndex (example): example execution is deferred to Phase 4D
- ExampleLastIndexAny (example): example execution is deferred to Phase 4D
- ExampleLastIndexByte (example): example execution is deferred to Phase 4D
- ExampleLastIndexFunc (example): example execution is deferred to Phase 4D
- ExampleLines (example): example execution is deferred to Phase 4D
- ExampleMap (example): example execution is deferred to Phase 4D
- ExampleReader_Len (example): example execution is deferred to Phase 4D
- ExampleRepeat (example): example execution is deferred to Phase 4D
- ExampleReplace (example): example execution is deferred to Phase 4D
- ExampleReplaceAll (example): example execution is deferred to Phase 4D
- ExampleRunes (example): example execution is deferred to Phase 4D
- ExampleSplit (example): example execution is deferred to Phase 4D
- ExampleSplitAfter (example): example execution is deferred to Phase 4D
- ExampleSplitAfterN (example): example execution is deferred to Phase 4D
- ExampleSplitAfterSeq (example): example execution is deferred to Phase 4D
- ExampleSplitN (example): example execution is deferred to Phase 4D
- ExampleSplitSeq (example): example execution is deferred to Phase 4D
- ExampleTitle (example): example execution is deferred to Phase 4D
- ExampleToLower (example): example execution is deferred to Phase 4D
- ExampleToLowerSpecial (example): example execution is deferred to Phase 4D
- ExampleToTitle (example): example execution is deferred to Phase 4D
- ExampleToTitleSpecial (example): example execution is deferred to Phase 4D
- ExampleToUpper (example): example execution is deferred to Phase 4D
- ExampleToUpperSpecial (example): example execution is deferred to Phase 4D
- ExampleToValidUTF8 (example): example execution is deferred to Phase 4D
- ExampleTrim (example): example execution is deferred to Phase 4D
- ExampleTrimFunc (example): example execution is deferred to Phase 4D
- ExampleTrimLeft (example): example execution is deferred to Phase 4D
- ExampleTrimLeftFunc (example): example execution is deferred to Phase 4D
- ExampleTrimPrefix (example): example execution is deferred to Phase 4D
- ExampleTrimRight (example): example execution is deferred to Phase 4D
- ExampleTrimRightFunc (example): example execution is deferred to Phase 4D
- ExampleTrimSpace (example): example execution is deferred to Phase 4D
- ExampleTrimSuffix (example): example execution is deferred to Phase 4D
- FuzzReplace (fuzz): fuzz execution is deferred to Phase 4D