vault_audit_tools/utils/
format.rs1pub fn format_number(n: usize) -> String {
18 let s = n.to_string();
19 let mut result = String::new();
20 for (i, c) in s.chars().rev().enumerate() {
21 if i > 0 && i % 3 == 0 {
22 result.push(',');
23 }
24 result.push(c);
25 }
26 result.chars().rev().collect()
27}
28
29#[cfg(test)]
30mod tests {
31 use super::*;
32
33 #[test]
34 fn test_format_number() {
35 assert_eq!(format_number(0), "0");
36 assert_eq!(format_number(1), "1");
37 assert_eq!(format_number(12), "12");
38 assert_eq!(format_number(123), "123");
39 assert_eq!(format_number(1234), "1,234");
40 assert_eq!(format_number(12345), "12,345");
41 assert_eq!(format_number(123_456), "123,456");
42 assert_eq!(format_number(1_234_567), "1,234,567");
43 assert_eq!(format_number(12_345_678), "12,345,678");
44 assert_eq!(format_number(123_456_789), "123,456,789");
45 assert_eq!(format_number(1_000_000_000), "1,000,000,000");
46 }
47
48 #[test]
49 fn test_format_number_large() {
50 assert_eq!(
51 format_number(usize::MAX),
52 format!("{:}", usize::MAX)
53 .chars()
54 .rev()
55 .enumerate()
56 .fold(String::new(), |mut acc, (i, c)| {
57 if i > 0 && i % 3 == 0 {
58 acc.push(',');
59 }
60 acc.push(c);
61 acc
62 })
63 .chars()
64 .rev()
65 .collect::<String>()
66 );
67 }
68}