# Go-to-.NET Test Mapping ## Overview | Metric | Count | |--------|-------| | Go test functions | 2,937 | | .NET test methods | 3,305 | | .NET tests passing | 3,501 (Theory data rows expand the count) | | Go tests with .NET equivalent | 857 (29.2%) | | Go tests without .NET equivalent | 2,080 (70.8%) | | .NET tests with no Go counterpart | 2,966 | ## Data Files - **[go_test_mapping.csv](go_test_mapping.csv)** — All 2,937 Go test functions with their mapped .NET test (if any) - Columns: `go_file`, `go_line`, `go_test`, `dotnet_test`, `dotnet_file` - Empty `dotnet_test`/`dotnet_file` = no .NET equivalent found - **[dotnet_unmapped_tests.csv](dotnet_unmapped_tests.csv)** — All 2,966 .NET test methods with no Go counterpart - Columns: `dotnet_file`, `dotnet_line`, `dotnet_test` ## Matching Methodology Matches were found using these strategies (in priority order): 1. **Reference comments** (571 matches) — .NET tests with `// Go: TestXxx` comments citing the Go function 2. **Exact normalized name** (3 matches) — CamelCase Go name matches underscore .NET name after normalization 3. **Substring containment** (21 matches) — Core Go name contained within .NET method name or vice versa (min 8 chars) 4. **Keyword overlap** (235 matches) — CamelCase/underscore word overlap with >= 60% Go coverage, >= 30% .NET coverage, min 2 shared meaningful words 5. **Domain-aware matching** (27 matches) — File-area restricted keyword matching with relaxed thresholds ## Coverage by Go Test File | Go File | Total | Matched | Unmatched | Coverage | |---------|-------|---------|-----------|----------| | accounts_test.go | 64 | 30 | 34 | 47% | | auth_callout_test.go | 31 | 1 | 30 | 3% | | auth_test.go | 12 | 10 | 2 | 83% | | certstore_windows_test.go | 4 | 0 | 4 | 0% | | client_proxyproto_test.go | 23 | 0 | 23 | 0% | | client_test.go | 82 | 39 | 43 | 48% | | closed_conns_test.go | 7 | 1 | 6 | 14% | | config_check_test.go | 3 | 1 | 2 | 33% | | dirstore_test.go | 19 | 2 | 17 | 11% | | errors_test.go | 2 | 0 | 2 | 0% | | events_test.go | 51 | 10 | 41 | 20% | | filestore_test.go | 232 | 73 | 159 | 31% | | gateway_test.go | 88 | 27 | 61 | 31% | | ipqueue_test.go | 9 | 0 | 9 | 0% | | jetstream_batching_test.go | 29 | 0 | 29 | 0% | | jetstream_cluster_1_test.go | 151 | 60 | 91 | 40% | | jetstream_cluster_2_test.go | 123 | 27 | 96 | 22% | | jetstream_cluster_3_test.go | 97 | 7 | 90 | 7% | | jetstream_cluster_4_test.go | 85 | 4 | 81 | 5% | | jetstream_cluster_long_test.go | 7 | 1 | 6 | 14% | | jetstream_consumer_test.go | 160 | 26 | 134 | 16% | | jetstream_errors_test.go | 4 | 0 | 4 | 0% | | jetstream_jwt_test.go | 18 | 0 | 18 | 0% | | jetstream_leafnode_test.go | 13 | 0 | 13 | 0% | | jetstream_sourcing_scaling_test.go | 1 | 0 | 1 | 0% | | jetstream_super_cluster_test.go | 47 | 0 | 47 | 0% | | jetstream_test.go | 312 | 128 | 184 | 41% | | jetstream_tpm_test.go | 5 | 0 | 5 | 0% | | jetstream_versioning_test.go | 18 | 0 | 18 | 0% | | jwt_test.go | 88 | 27 | 61 | 31% | | leafnode_proxy_test.go | 9 | 0 | 9 | 0% | | leafnode_test.go | 110 | 51 | 59 | 46% | | log_test.go | 6 | 2 | 4 | 33% | | memstore_test.go | 37 | 9 | 28 | 24% | | monitor_test.go | 100 | 54 | 46 | 54% | | mqtt_ex_test_test.go | 2 | 0 | 2 | 0% | | mqtt_test.go | 123 | 64 | 59 | 52% | | msgtrace_test.go | 33 | 2 | 31 | 6% | | nkey_test.go | 5 | 4 | 1 | 80% | | norace_1_test.go | 100 | 14 | 86 | 14% | | norace_2_test.go | 41 | 0 | 41 | 0% | | opts_test.go | 86 | 23 | 63 | 27% | | parser_test.go | 17 | 12 | 5 | 71% | | ping_test.go | 1 | 0 | 1 | 0% | | raft_test.go | 104 | 19 | 85 | 18% | | rate_counter_test.go | 1 | 0 | 1 | 0% | | reload_test.go | 73 | 31 | 42 | 42% | | ring_test.go | 2 | 0 | 2 | 0% | | routes_test.go | 70 | 31 | 39 | 44% | | server_test.go | 42 | 14 | 28 | 33% | | service_test.go | 1 | 0 | 1 | 0% | | service_windows_test.go | 1 | 0 | 1 | 0% | | signal_test.go | 19 | 2 | 17 | 11% | | split_test.go | 12 | 0 | 12 | 0% | | store_test.go | 17 | 1 | 16 | 6% | | subject_transform_test.go | 4 | 1 | 3 | 25% | | sublist_test.go | 65 | 40 | 25 | 62% | | trust_test.go | 3 | 0 | 3 | 0% | | util_test.go | 7 | 1 | 6 | 14% | | websocket_test.go | 61 | 8 | 53 | 13% | | **TOTAL** | **2,937** | **857** | **2,080** | **29.2%** | ## Top Gap Areas (by unmatched count) | Go File | Unmatched | Notes | |---------|-----------|-------| | jetstream_test.go | 184 | Core JetStream API: TTL, encryption, snapshots, mirrors, KV | | filestore_test.go | 159 | Block management, compaction, tombstones, recovery | | jetstream_consumer_test.go | 134 | Pull/push delivery, ack policies, filter subjects, backoff | | jetstream_cluster_2_test.go | 96 | Domains, leaf nodes, mirrors, desyncs, rollups | | jetstream_cluster_1_test.go | 91 | Meta recovery, health checks, scheduling, peer mgmt | | jetstream_cluster_3_test.go | 90 | Account limits, encryption, orphan recovery, scaling | | norace_1_test.go | 86 | Stress/race: cluster operations, consumer storms | | raft_test.go | 85 | NRG observer mode, catchup, snapshots, term tracking | | jetstream_cluster_4_test.go | 81 | Consumer pause/resume, NRG, subject delete markers | | opts_test.go | 63 | Config parsing edge cases, TLS, cluster config | | gateway_test.go | 61 | Interest-only mode, auth, TLS, service imports | | jwt_test.go | 61 | Claims parsing, validation, account resolver | | leafnode_test.go | 59 | Hub-spoke, loop detection, TLS, compression | | mqtt_test.go | 59 | Session persistence, QoS, retained messages, will | | websocket_test.go | 53 | Compression, auth, TLS, frame handling | ## Zero-Coverage Files (no .NET equivalent at all) | Go File | Tests | Category | |---------|-------|----------| | jetstream_super_cluster_test.go | 47 | Multi-cluster topology | | norace_2_test.go | 41 | JetStream cluster stress | | jetstream_batching_test.go | 29 | Request batching | | client_proxyproto_test.go | 23 | PROXY protocol v1/v2 | | jetstream_jwt_test.go | 18 | JetStream + JWT integration | | jetstream_versioning_test.go | 18 | Stream/consumer versioning | | store_test.go | 16 | Generic store interface contract | | signal_test.go | 17 | OS signal handling | | split_test.go | 12 | Protocol buffer splitting | | leafnode_proxy_test.go | 9 | Leaf node proxy connections | | ipqueue_test.go | 9 | Internal priority queue | | jetstream_leafnode_test.go | 13 | JetStream over leaf nodes | | certstore_windows_test.go | 4 | Windows certificate store | | jetstream_errors_test.go | 4 | JetStream error codes | | jetstream_tpm_test.go | 5 | Trusted Platform Module | ## Notes on the .NET Unmapped Tests The 2,966 unmapped .NET tests fall into several categories: 1. **Parity/behavioral tests** — Tests written to verify specific .NET behaviors that don't map 1:1 to a single Go test (e.g., `ClientProtocolParityTests`, `JetStreamClusterGovernanceParityTests`) 2. **Infrastructure tests** — Tests for .NET-specific infrastructure like `JetStreamApiFixture`, `JetStreamClusterFixture` 3. **Extended coverage** — Additional edge case tests beyond what Go covers (e.g., `FileStorePermutationTests` with 6-way cipher/compression matrix) 4. **Unit tests against stubs** — Tests that exercise .NET stubs/simulations rather than real distributed behavior See [dotnet_unmapped_tests.csv](dotnet_unmapped_tests.csv) for the full list.