diff --git a/lib/bencher_adapter/src/adapters/c_sharp/dot_net.rs b/lib/bencher_adapter/src/adapters/c_sharp/dot_net.rs index 76e57113d..b7524daae 100644 --- a/lib/bencher_adapter/src/adapters/c_sharp/dot_net.rs +++ b/lib/bencher_adapter/src/adapters/c_sharp/dot_net.rs @@ -33,7 +33,7 @@ pub struct Benchmarks(pub Vec); #[derive(Debug, Clone, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct Benchmark { - pub namespace: BenchmarkName, + pub namespace: Option, pub method: BenchmarkName, pub statistics: Statistics, } @@ -57,7 +57,7 @@ impl DotNet { let mut benchmark_metrics = Vec::with_capacity(benchmarks.len()); for benchmark in benchmarks { let Benchmark { - namespace: mut benchmark_name, + namespace, method, statistics, } = benchmark; @@ -68,7 +68,13 @@ impl DotNet { interquartile_range, } = statistics; - benchmark_name.try_push('.', &method)?; + let benchmark_name = match namespace { + Some(mut name) => { + name.try_push('.', &method)?; + name + }, + None => method, + }; // JSON output is always in nanos let units = Units::Nano; @@ -121,6 +127,30 @@ pub(crate) mod test_c_sharp_dot_net { format!("./tool_output/c_sharp/dot_net/{suffix}.json") } + #[test] + fn test_adapter_c_sharp_dot_net_null_namespace() { + let null_namespace = "null_namespace"; + let file_path = file_path(null_namespace); + + let results = convert_c_sharp_dot_net(null_namespace); + validate_adapter_c_sharp_dot_net_null_namespace(&results); + + let results = opt_convert_file_path::( + &file_path, + Settings { + average: Some(JsonAverage::Mean), + }, + ) + .unwrap(); + + validate_adapter_c_sharp_dot_net_null_namespace(&results); + } + + fn validate_adapter_c_sharp_dot_net_null_namespace(results: &AdapterResults) { + assert_eq!(results.inner.len(), 1); + assert!(results.get("NullNamespaceMethod").is_some()); + } + #[test] fn test_adapter_c_sharp_dot_net_two() { let two = "two"; diff --git a/lib/bencher_adapter/tool_output/c_sharp/dot_net/null_namespace.json b/lib/bencher_adapter/tool_output/c_sharp/dot_net/null_namespace.json new file mode 100644 index 000000000..b840c09bf --- /dev/null +++ b/lib/bencher_adapter/tool_output/c_sharp/dot_net/null_namespace.json @@ -0,0 +1,16 @@ +{ + "HostEnvironmentInfo": { + }, + "Benchmarks": [ + { + "Namespace": null, + "Method": "NullNamespaceMethod", + "Statistics": { + "Median": 0, + "Mean": 0, + "InterquartileRange": 0, + "StandardDeviation": 0 + } + } + ] +}