mirror of
https://github.com/lsd-rs/lsd
synced 2025-03-04 23:17:15 +00:00
Fix the file size values
This commit is contained in:
parent
4ff3ed0633
commit
f1fec9352d
7 changed files with 186 additions and 68 deletions
60
Cargo.lock
generated
60
Cargo.lock
generated
|
@ -11,7 +11,7 @@ name = "atty"
|
|||
version = "0.2.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -23,7 +23,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
dependencies = [
|
||||
"backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
@ -34,7 +34,7 @@ version = "0.1.24"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -82,7 +82,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
dependencies = [
|
||||
"proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"syn 0.15.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -93,29 +93,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.43"
|
||||
version = "0.2.44"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "lsd"
|
||||
version = "0.3.0"
|
||||
version = "0.3.1-pre"
|
||||
dependencies = [
|
||||
"ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"size 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"term_grid 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"terminal_size 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"users 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"users 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "0.4.24"
|
||||
|
@ -134,7 +128,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.1.40"
|
||||
version = "0.1.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
|
@ -142,7 +136,7 @@ name = "redox_termios"
|
|||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -150,14 +144,6 @@ name = "rustc-demangle"
|
|||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "size"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.7.0"
|
||||
|
@ -165,7 +151,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "0.15.21"
|
||||
version = "0.15.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -180,7 +166,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
dependencies = [
|
||||
"proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"syn 0.15.21 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -197,7 +183,7 @@ name = "terminal_size"
|
|||
version = "0.1.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -206,8 +192,8 @@ name = "termion"
|
|||
version = "1.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -224,8 +210,8 @@ name = "time"
|
|||
version = "0.1.40"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -241,10 +227,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "users"
|
||||
version = "0.8.0"
|
||||
version = "0.8.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -283,16 +269,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6dd377bcc1b1b7ce911967e3ec24fa19c3224394ec05b54aa7b083d498341ac7"
|
||||
"checksum failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "64c2d913fe8ed3b6c6518eedf4538255b989945c14c2a7d5cbff62a5e2120596"
|
||||
"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1"
|
||||
"checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d"
|
||||
"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1"
|
||||
"checksum libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "10923947f84a519a45c8fefb7dd1b3e8c08747993381adee176d7a82b4195311"
|
||||
"checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09"
|
||||
"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c"
|
||||
"checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1"
|
||||
"checksum redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "679da7508e9a6390aeaf7fbd02a800fdc64b73fe2204dd2c8ae66d22d9d5ad5d"
|
||||
"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
|
||||
"checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395"
|
||||
"checksum size 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "baf1794b187cb1fd42cbe074cafc027be10b275c68aa7d039dcbef41e94d01d4"
|
||||
"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550"
|
||||
"checksum syn 0.15.21 (registry+https://github.com/rust-lang/crates.io-index)" = "816b7af21405b011a23554ea2dc3f6576dc86ca557047c34098c1d741f10f823"
|
||||
"checksum syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)" = "ae8b29eb5210bc5cf63ed6149cbf9adfc82ac0be023d8735c176ee74a2db4da7"
|
||||
"checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015"
|
||||
"checksum term_grid 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "230d3e804faaed5a39b08319efb797783df2fd9671b39b7596490cb486d702cf"
|
||||
"checksum terminal_size 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "023345d35850b69849741bd9a5432aa35290e3d8eb76af8717026f270d1cf133"
|
||||
|
@ -301,7 +285,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
"checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b"
|
||||
"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526"
|
||||
"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
|
||||
"checksum users 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb3c80625ae5e77e1b402f8a0fa89afbd50622a6cae65128844720bd4e26b657"
|
||||
"checksum users 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fed7d0912567d35f88010c23dbaf865e9da8b5227295e8dc0f2fdd109155ab7"
|
||||
"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
|
||||
"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0"
|
||||
"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
|
23
Cargo.toml
23
Cargo.toml
|
@ -10,6 +10,18 @@ readme = "./README.md"
|
|||
repository = "https://github.com/Peltoche/lsd"
|
||||
version = "0.3.1-pre"
|
||||
|
||||
[dependencies]
|
||||
ansi_term = "0.11.0"
|
||||
clap = "2.32.0"
|
||||
failure = "0.1.3"
|
||||
lazy_static = "1.2.0"
|
||||
term_grid = "0.1.7"
|
||||
terminal_size = "0.1.8"
|
||||
time = "0.1.40"
|
||||
users = "0.8.0"
|
||||
|
||||
[metadata]
|
||||
|
||||
[metadata.deb]
|
||||
assets = [["target/release/lsd", "usr/bin/", "755"], ["README.md", "usr/share/doc/cargo-deb/README", "644"]]
|
||||
depends = "$auto"
|
||||
|
@ -17,14 +29,3 @@ license-file = ["LICENSE", "2"]
|
|||
maintainer = "Peltoche <dev@halium.fr>"
|
||||
priority = "optional"
|
||||
section = "utility"
|
||||
|
||||
[dependencies]
|
||||
ansi_term = "0.11.0"
|
||||
clap = "2.32.0"
|
||||
failure = "0.1.3"
|
||||
lazy_static = "1.2.0"
|
||||
size = "0.1.1"
|
||||
term_grid = "0.1.7"
|
||||
terminal_size = "0.1.8"
|
||||
time = "0.1.40"
|
||||
users = "0.8.0"
|
||||
|
|
12
src/core.rs
12
src/core.rs
|
@ -171,17 +171,17 @@ impl<'a> Core<'a> {
|
|||
max
|
||||
}
|
||||
|
||||
fn detect_size_lenghts(&self, paths: &[Meta]) -> (usize, usize) {
|
||||
fn detect_size_lenghts(&self, metas: &[Meta]) -> (usize, usize) {
|
||||
let mut max_value_length: usize = 0;
|
||||
let mut max_unit_size: usize = 0;
|
||||
|
||||
for path in paths {
|
||||
if path.size_value.len() > max_value_length {
|
||||
max_value_length = path.size_value.len();
|
||||
for meta in metas {
|
||||
if meta.size.render_value().len() > max_value_length {
|
||||
max_value_length = meta.size.render_value().len();
|
||||
}
|
||||
|
||||
if path.size_unit.len() > max_unit_size {
|
||||
max_unit_size = path.size_unit.len();
|
||||
if meta.size.render_unit().len() > max_unit_size {
|
||||
max_unit_size = meta.size.render_unit().len();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -181,15 +181,15 @@ impl Formatter {
|
|||
) -> String {
|
||||
let mut content = String::with_capacity(max_value_length + max_unit_size + 1);
|
||||
|
||||
for _ in 0..(max_value_length - meta.size_value.len()) {
|
||||
for _ in 0..(max_value_length - meta.size.render_value().len()) {
|
||||
content.push(' ');
|
||||
}
|
||||
|
||||
content += meta.size_value.as_str();
|
||||
content += meta.size.render_value().as_str();
|
||||
content.push(' ');
|
||||
content += meta.size_unit.as_str();
|
||||
content += meta.size.render_unit().as_str();
|
||||
|
||||
for _ in 0..(max_unit_size - meta.size_unit.len()) {
|
||||
for _ in 0..(max_unit_size - meta.size.render_unit().len()) {
|
||||
content.push(' ');
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ extern crate clap;
|
|||
extern crate lazy_static;
|
||||
extern crate ansi_term;
|
||||
extern crate failure;
|
||||
extern crate size;
|
||||
extern crate term_grid;
|
||||
extern crate terminal_size;
|
||||
extern crate time;
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
use self::size::Size;
|
||||
use failure::*;
|
||||
use size::*;
|
||||
use std::fs::{read_link, Metadata};
|
||||
use std::io;
|
||||
use std::os::unix::fs::MetadataExt;
|
||||
use std::path::{Path, PathBuf};
|
||||
use users::{get_group_by_gid, get_user_by_uid};
|
||||
|
||||
mod size;
|
||||
|
||||
#[derive(Debug, Fail)]
|
||||
pub enum MetaError {
|
||||
#[fail(display = "file name not readable for {}", path)]
|
||||
|
@ -41,8 +43,7 @@ pub struct Meta {
|
|||
pub group: String,
|
||||
pub user: String,
|
||||
pub node_type: Type,
|
||||
pub size_value: String,
|
||||
pub size_unit: String,
|
||||
pub size: Size,
|
||||
}
|
||||
|
||||
impl Meta {
|
||||
|
@ -115,9 +116,7 @@ impl Meta {
|
|||
.expect("failed to convert group name to str")
|
||||
.to_string();
|
||||
|
||||
let size = Size::Bytes(meta.len()).to_string(Base::Base10, Style::Abbreviated);
|
||||
let size_parts: Vec<&str> = size.split(' ').collect();
|
||||
|
||||
let size = meta.len();
|
||||
Ok(Meta {
|
||||
path: path.to_path_buf(),
|
||||
metadata: meta,
|
||||
|
@ -125,8 +124,7 @@ impl Meta {
|
|||
user,
|
||||
group,
|
||||
node_type: node_type,
|
||||
size_value: size_parts[0].to_string(),
|
||||
size_unit: size_parts[1].to_string(),
|
||||
size: Size::from_bytes(size as usize),
|
||||
})
|
||||
}
|
||||
}
|
136
src/meta/size.rs
Normal file
136
src/meta/size.rs
Normal file
|
@ -0,0 +1,136 @@
|
|||
#[derive(Debug)]
|
||||
pub enum Unit {
|
||||
Byte,
|
||||
Kilo,
|
||||
Mega,
|
||||
Giga,
|
||||
Tera,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Size {
|
||||
value: usize,
|
||||
unit: Unit,
|
||||
}
|
||||
|
||||
impl Size {
|
||||
pub fn from_bytes(bytes: usize) -> Self {
|
||||
if bytes < 1024 {
|
||||
Size {
|
||||
value: bytes * 1024,
|
||||
unit: Unit::Byte,
|
||||
}
|
||||
} else if bytes < 1024 * 1024 {
|
||||
Size {
|
||||
value: bytes,
|
||||
unit: Unit::Kilo,
|
||||
}
|
||||
} else if bytes < 1024 * 1024 * 1024 {
|
||||
Size {
|
||||
value: bytes / 1024,
|
||||
unit: Unit::Mega,
|
||||
}
|
||||
} else if bytes < 1024 * 1024 * 1024 * 1024 {
|
||||
Size {
|
||||
value: bytes / (1024 * 1024),
|
||||
unit: Unit::Giga,
|
||||
}
|
||||
} else {
|
||||
Size {
|
||||
value: bytes / (1024 * 1024 * 1024),
|
||||
unit: Unit::Tera,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn render_value(&self) -> String {
|
||||
let size_str = (self.value as f32 / 1024.0).to_string();
|
||||
|
||||
// Check if there is a fraction.
|
||||
if let Some(fraction_idx) = size_str.find('.') {
|
||||
// If the fraction start with 0 (like 32.01), the result is rounded
|
||||
// by removing the fraction.
|
||||
if size_str.chars().nth(fraction_idx + 1) == Some('0') {
|
||||
let (res, _) = size_str.split_at(fraction_idx); // Split before the fraction
|
||||
res.to_string()
|
||||
} else {
|
||||
//
|
||||
let (res, _) = size_str.split_at(fraction_idx + 2); // Split after the '.' and the first fraction digit.
|
||||
res.to_string()
|
||||
}
|
||||
} else {
|
||||
size_str
|
||||
}
|
||||
}
|
||||
|
||||
pub fn render_unit(&self) -> String {
|
||||
match self.unit {
|
||||
Unit::Byte => String::from("B"),
|
||||
Unit::Kilo => String::from("KB"),
|
||||
Unit::Mega => String::from("MB"),
|
||||
Unit::Giga => String::from("GB"),
|
||||
Unit::Tera => String::from("TB"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::Size;
|
||||
|
||||
#[test]
|
||||
fn render_byte() {
|
||||
let size = Size::from_bytes(42); // == 42 bytes
|
||||
|
||||
assert_eq!(size.render_value().as_str(), "42");
|
||||
assert_eq!(size.render_unit().as_str(), "B");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn render_kilobyte() {
|
||||
let size = Size::from_bytes(42 * 1024); // 42 kilobytes
|
||||
|
||||
assert_eq!(size.render_value().as_str(), "42");
|
||||
assert_eq!(size.render_unit().as_str(), "KB");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn render_megabyte() {
|
||||
let size = Size::from_bytes(42 * 1024 * 1024); // 42 megabytes
|
||||
|
||||
assert_eq!(size.render_value().as_str(), "42");
|
||||
assert_eq!(size.render_unit().as_str(), "MB");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn render_gigabyte() {
|
||||
let size = Size::from_bytes(42 * 1024 * 1024 * 1024); // 42 gigabytes
|
||||
|
||||
assert_eq!(size.render_value().as_str(), "42");
|
||||
assert_eq!(size.render_unit().as_str(), "GB");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn render_terabyte() {
|
||||
let size = Size::from_bytes(42 * 1024 * 1024 * 1024 * 1024); // 42 terabytes
|
||||
|
||||
assert_eq!(size.render_value().as_str(), "42");
|
||||
assert_eq!(size.render_unit().as_str(), "TB");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn render_with_a_fraction() {
|
||||
let size = Size::from_bytes(42 * 1024 + 103); // 42.1 kilobytes
|
||||
|
||||
assert_eq!(size.render_value().as_str(), "42.1");
|
||||
assert_eq!(size.render_unit().as_str(), "KB");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn render_with_a_truncated_fraction() {
|
||||
let size = Size::from_bytes(42 * 1024 + 1); // 42.001 kilobytes == 42 kilobytes
|
||||
|
||||
assert_eq!(size.render_value().as_str(), "42");
|
||||
assert_eq!(size.render_unit().as_str(), "KB");
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue