From 8741d05d1174f4d9c2c2eef04ca80f1bb506a33b Mon Sep 17 00:00:00 2001 From: David Peter Date: Sun, 15 May 2022 20:41:55 +0200 Subject: [PATCH] Move Exporter::unit => determine_unit_from_results --- src/export/markdown.rs | 4 ++-- src/export/mod.rs | 41 ++++++++++++++++++----------------------- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/src/export/markdown.rs b/src/export/markdown.rs index b8f307d..ee60e18 100644 --- a/src/export/markdown.rs +++ b/src/export/markdown.rs @@ -1,4 +1,4 @@ -use super::Exporter; +use super::{determine_unit_from_results, Exporter}; use crate::benchmark::benchmark_result::BenchmarkResult; use crate::benchmark::relative_speed; use crate::export::markup::MarkupFormatter; @@ -28,7 +28,7 @@ pub struct MarkdownExporter {} impl Exporter for MarkdownExporter { fn serialize(&self, results: &[BenchmarkResult], unit: Option) -> Result> { - let unit = self.unit(results, unit); + let unit = determine_unit_from_results(results, unit); let entries = relative_speed::compute(results); if entries.is_none() { return Err(anyhow!( diff --git a/src/export/mod.rs b/src/export/mod.rs index 8adb440..59719fd 100644 --- a/src/export/mod.rs +++ b/src/export/mod.rs @@ -19,6 +19,19 @@ use crate::util::units::Unit; use anyhow::{Context, Result}; use clap::ArgMatches; +pub fn determine_unit_from_results(results: &[BenchmarkResult], unit: Option) -> Unit { + return if let Some(unit) = unit { + // Use the given unit for all entries. + unit + } else if let Some(first_result) = results.first() { + // Use the first BenchmarkResult entry to determine the unit for all entries. + format_duration_value(first_result.mean, None).1 + } else { + // Default to `Second`. + Unit::Second + }; +} + /// The desired form of exporter to use for a given file. #[derive(Clone)] pub enum ExportType { @@ -39,19 +52,6 @@ pub enum ExportType { trait Exporter { /// Export the given entries in the serialized form. fn serialize(&self, results: &[BenchmarkResult], unit: Option) -> Result>; - - fn unit(&self, results: &[BenchmarkResult], unit: Option) -> Unit { - return if let Some(unit) = unit { - // Use the given unit for all entries. - unit - } else if let Some(first_result) = results.first() { - // Use the first BenchmarkResult entry to determine the unit for all entries. - format_duration_value(first_result.mean, None).1 - } else { - // Default to `Second`. - Unit::Second - }; - } } struct ExporterWithFilename { @@ -170,8 +170,7 @@ fn test_markup_table_unit_given_s() { ]; let unit = Some(Unit::Second); - let exporter = TestExporter::default(); - let markup_actual = exporter.unit(&results, unit); + let markup_actual = determine_unit_from_results(&results, unit); let markup_expected = Unit::Second; assert_eq!(markup_expected, markup_actual); @@ -211,8 +210,7 @@ fn test_markup_table_unit_given_ms() { ]; let unit = Some(Unit::MilliSecond); - let exporter = TestExporter::default(); - let markup_actual = exporter.unit(&results, unit); + let markup_actual = determine_unit_from_results(&results, unit); let markup_expected = Unit::MilliSecond; assert_eq!(markup_expected, markup_actual); @@ -252,8 +250,7 @@ fn test_markup_table_unit_first_s() { ]; let unit = None; - let exporter = TestExporter::default(); - let markup_actual = exporter.unit(&results, unit); + let markup_actual = determine_unit_from_results(&results, unit); let markup_expected = Unit::Second; assert_eq!(markup_expected, markup_actual); @@ -293,8 +290,7 @@ fn test_markup_table_unit_first_ms() { ]; let unit = None; - let exporter = TestExporter::default(); - let markup_actual = exporter.unit(&results, unit); + let markup_actual = determine_unit_from_results(&results, unit); let markup_expected = Unit::MilliSecond; assert_eq!(markup_expected, markup_actual); @@ -306,8 +302,7 @@ fn test_markup_table_unit_default_s() { let results: Vec = vec![]; let unit = None; - let exporter = TestExporter::default(); - let markup_actual = exporter.unit(&results, unit); + let markup_actual = determine_unit_from_results(&results, unit); let markup_expected = Unit::Second; assert_eq!(markup_expected, markup_actual);