Moved types::Second and types::Unit to new unit module

Also review feedback.
This commit is contained in:
Jason Peacock authored and David Peter committed 2018-11-04 10:15:05 +01:00
1 parent f0b6f130ea
commit 3aa26a3e27
17 files changed
+73 -64

No files matched your search

+2 -42
View File
@@ -1,40 +1,14 @@
/// This module contains common internal types.
use std::fmt;
use hyperfine::units::{Second, Unit};
#[cfg(not(windows))]
pub const DEFAULT_SHELL: &str = "sh";
#[cfg(windows)]
pub const DEFAULT_SHELL: &str = "cmd.exe";
/// Type alias for unit of time
pub type Second = f64;
/// Supported time units
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum Unit {
Second,
MilliSecond,
}
impl Unit {
/// The abbreviation of the Unit.
pub fn short_name(&self) -> String {
match *self {
Unit::Second => String::from("s"),
Unit::MilliSecond => String::from("ms"),
}
}
/// Returns the Second value formatted for the Unit.
pub fn format(&self, value: Second) -> String {
match *self {
Unit::Second => format!("{:.3}", value),
Unit::MilliSecond => format!("{:.1}", value * 1e3),
}
}
}
/// A command that should be benchmarked.
#[derive(Debug, Clone)]
pub struct Command<'a> {
@@ -221,17 +195,3 @@ impl BenchmarkResult {
}
}
}
#[test]
fn test_unit_short_name() {
assert_eq!("s", Unit::Second.short_name());
assert_eq!("ms", Unit::MilliSecond.short_name());
}
// Note - the values are rounded when formatted.
#[test]
fn test_unit_format() {
let value: Second = 123.456789;
assert_eq!("123.457", Unit::Second.format(value));
assert_eq!("123456.8", Unit::MilliSecond.format(value));
}