mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-29 03:57:44 +00:00
uucore/format: add docs and tests for resolve_astrick_ methods
This commit is contained in:
parent
6061b67601
commit
64ce76bdf1
1 changed files with 111 additions and 0 deletions
|
@ -474,6 +474,8 @@ impl Spec {
|
|||
}
|
||||
}
|
||||
|
||||
/// Determine the width, potentially getting a value from args
|
||||
/// Returns the non-negative width and whether the value should be left-aligned.
|
||||
fn resolve_asterisk_width<'a>(
|
||||
option: Option<CanAsterisk<usize>>,
|
||||
mut args: impl ArgumentIter<'a>,
|
||||
|
@ -492,6 +494,8 @@ fn resolve_asterisk_width<'a>(
|
|||
}
|
||||
}
|
||||
|
||||
/// Determines the precision, which should (if defined)
|
||||
/// be a non-negative number.
|
||||
fn resolve_asterisk_precision<'a>(
|
||||
option: Option<CanAsterisk<usize>>,
|
||||
mut args: impl ArgumentIter<'a>,
|
||||
|
@ -548,3 +552,110 @@ fn eat_number(rest: &mut &[u8], index: &mut usize) -> Option<usize> {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
mod resolve_asterisk_width {
|
||||
use super::*;
|
||||
use crate::format::FormatArgument;
|
||||
|
||||
#[test]
|
||||
fn no_width() {
|
||||
assert_eq!(None, resolve_asterisk_width(None, Vec::new().iter()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fixed_width() {
|
||||
assert_eq!(
|
||||
Some((42, false)),
|
||||
resolve_asterisk_width(Some(CanAsterisk::Fixed(42)), Vec::new().iter())
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn asterisks_with_numbers() {
|
||||
assert_eq!(
|
||||
Some((42, false)),
|
||||
resolve_asterisk_width(
|
||||
Some(CanAsterisk::Asterisk),
|
||||
vec![FormatArgument::SignedInt(42)].iter()
|
||||
)
|
||||
);
|
||||
assert_eq!(
|
||||
Some((42, false)),
|
||||
resolve_asterisk_width(
|
||||
Some(CanAsterisk::Asterisk),
|
||||
vec![FormatArgument::Unparsed("42".to_string())].iter()
|
||||
)
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
Some((42, true)),
|
||||
resolve_asterisk_width(
|
||||
Some(CanAsterisk::Asterisk),
|
||||
vec![FormatArgument::SignedInt(-42)].iter()
|
||||
)
|
||||
);
|
||||
assert_eq!(
|
||||
Some((42, true)),
|
||||
resolve_asterisk_width(
|
||||
Some(CanAsterisk::Asterisk),
|
||||
vec![FormatArgument::Unparsed("-42".to_string())].iter()
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
mod resolve_asterisk_precision {
|
||||
use super::*;
|
||||
use crate::format::FormatArgument;
|
||||
|
||||
#[test]
|
||||
fn no_width() {
|
||||
assert_eq!(None, resolve_asterisk_precision(None, Vec::new().iter()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fixed_width() {
|
||||
assert_eq!(
|
||||
Some(42),
|
||||
resolve_asterisk_precision(Some(CanAsterisk::Fixed(42)), Vec::new().iter())
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn asterisks_with_numbers() {
|
||||
assert_eq!(
|
||||
Some(42),
|
||||
resolve_asterisk_precision(
|
||||
Some(CanAsterisk::Asterisk),
|
||||
vec![FormatArgument::SignedInt(42)].iter()
|
||||
)
|
||||
);
|
||||
assert_eq!(
|
||||
Some(42),
|
||||
resolve_asterisk_precision(
|
||||
Some(CanAsterisk::Asterisk),
|
||||
vec![FormatArgument::Unparsed("42".to_string())].iter()
|
||||
)
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
Some(0),
|
||||
resolve_asterisk_precision(
|
||||
Some(CanAsterisk::Asterisk),
|
||||
vec![FormatArgument::SignedInt(-42)].iter()
|
||||
)
|
||||
);
|
||||
assert_eq!(
|
||||
Some(0),
|
||||
resolve_asterisk_precision(
|
||||
Some(CanAsterisk::Asterisk),
|
||||
vec![FormatArgument::Unparsed("-42".to_string())].iter()
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue