Compare commits

..

10 commits

Author SHA1 Message Date
9700ae5b35 test: check set_format #12
All checks were successful
cargo devel CI / cargo CI (push) Successful in 1m22s
2024-05-12 20:29:40 +02:00
290b959b7e refactor: more derives
Some checks failed
cargo devel CI / cargo CI (push) Has been cancelled
2024-05-12 20:29:12 +02:00
a88a03eab7 test: padded prefixed formatting #12
All checks were successful
cargo devel CI / cargo CI (push) Successful in 1m12s
2024-05-12 20:25:48 +02:00
1f91710bda chore: format tests
All checks were successful
cargo devel CI / cargo CI (push) Successful in 1m14s
2024-05-12 20:23:47 +02:00
b681a6b04d Merge branch 'test/basics' of https://git.cscherr.de/PlexSheep/numf into test/basics 2024-05-12 20:23:05 +02:00
fe01412467 test: add prefix test #12 2024-05-12 20:23:04 +02:00
PlexSheep
cd7f7cc376 automatic cargo CI changes 2024-05-12 18:21:54 +00:00
9bfc8504a4 test: add padding test #12
All checks were successful
cargo devel CI / cargo CI (push) Successful in 1m21s
2024-05-12 20:20:36 +02:00
47ae8e135b feat: add setters for FormatOptions
Some checks failed
cargo devel CI / cargo CI (push) Has been cancelled
2024-05-12 20:19:57 +02:00
8b419048ef test: testing the format #12
All checks were successful
cargo devel CI / cargo CI (push) Successful in 1m22s
2024-05-12 20:11:05 +02:00
2 changed files with 212 additions and 1 deletions

View file

@ -6,7 +6,7 @@ use libpt::bintols::split;
pub type Num = u128; pub type Num = u128;
/// formats supported by numf /// formats supported by numf
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
pub enum Format { pub enum Format {
Dec, Dec,
Hex, Hex,
@ -123,6 +123,11 @@ impl FormatOptions {
self.numbers = numbers; self.numbers = numbers;
} }
/// set padding manually
pub fn set_padding(&mut self, value: bool) {
self.padding = value
}
/// get padding /// get padding
pub fn padding(&self) -> bool { pub fn padding(&self) -> bool {
self.padding self.padding
@ -132,6 +137,11 @@ impl FormatOptions {
pub fn prefix(&self) -> bool { pub fn prefix(&self) -> bool {
self.prefix self.prefix
} }
/// set prefix manually
pub fn set_prefix(&mut self, value: bool) {
self.prefix = value;
}
} }
impl Default for FormatOptions { impl Default for FormatOptions {

201
tests/format.rs Normal file
View file

@ -0,0 +1,201 @@
use numf::format::*;
#[test]
fn format() {
let options = FormatOptions::default();
assert_eq!(Format::Dec.format(1337, &options), "1337");
assert_eq!(
Format::Dec.format(u128::MAX, &options),
format!("{}", u128::MAX)
);
assert_eq!(Format::Hex.format(0x1337, &options), "1337");
assert_eq!(
Format::Hex.format(u128::MAX, &options),
format!("{:X}", u128::MAX)
);
assert_eq!(
Format::Bin.format(0b1010001001010010010100111, &options),
"1010001001010010010100111"
);
assert_eq!(
Format::Bin.format(u128::MAX, &options),
format!("{:b}", u128::MAX)
);
assert_eq!(Format::Octal.format(0o13377331, &options), "13377331");
assert_eq!(
Format::Octal.format(u128::MAX, &options),
format!("{:o}", u128::MAX)
);
assert_eq!(Format::Base32.format(0x41414242, &options), "IFAUEQQ=");
assert_eq!(
Format::Base32.format(0x4141414141414141, &options),
"IFAUCQKBIFAUC==="
);
assert_eq!(Format::Base64.format(0x41414242, &options), "QUFCQg==");
assert_eq!(
Format::Base64.format(0x4141414141414141, &options),
"QUFBQUFBQUE="
);
}
#[test]
fn format_padding() {
let mut options = FormatOptions::default();
options.set_padding(true);
assert_eq!(Format::Dec.format(1337, &options), "1337");
assert_eq!(
Format::Dec.format(u128::MAX, &options),
format!("{}", u128::MAX)
);
assert_eq!(Format::Hex.format(0xFFF, &options), "0FFF");
assert_eq!(Format::Hex.format(0xFFFF, &options), "FFFF");
assert_eq!(
Format::Hex.format(u128::MAX, &options),
format!("{:X}", u128::MAX)
);
assert_eq!(
Format::Bin.format(0b11110000_00001111, &options),
"1111000000001111"
);
assert_eq!(
Format::Bin.format(0b110000_00001111, &options),
"0011000000001111"
);
assert_eq!(
Format::Bin.format(u128::MAX, &options),
format!("{:b}", u128::MAX)
);
assert_eq!(Format::Octal.format(0o13377331, &options), "13377331");
assert_eq!(
Format::Octal.format(u128::MAX, &options),
format!("{:o}", u128::MAX)
);
assert_eq!(Format::Base32.format(0x41414242, &options), "IFAUEQQ=");
assert_eq!(
Format::Base32.format(0x4141414141414141, &options),
"IFAUCQKBIFAUC==="
);
assert_eq!(Format::Base64.format(0x41414242, &options), "QUFCQg==");
assert_eq!(
Format::Base64.format(0x4141414141414141, &options),
"QUFBQUFBQUE="
);
}
#[test]
fn format_prefix() {
let mut options = FormatOptions::default();
options.set_prefix(true);
assert_eq!(Format::Dec.format(1337, &options), "0d1337");
assert_eq!(
Format::Dec.format(u128::MAX, &options),
format!("0d{}", u128::MAX)
);
assert_eq!(Format::Hex.format(0x1337, &options), "0x1337");
assert_eq!(
Format::Hex.format(u128::MAX, &options),
format!("0x{:X}", u128::MAX)
);
assert_eq!(
Format::Bin.format(0b1010001001010010010100111, &options),
"0b1010001001010010010100111"
);
assert_eq!(
Format::Bin.format(u128::MAX, &options),
format!("0b{:b}", u128::MAX)
);
assert_eq!(Format::Octal.format(0o13377331, &options), "0o13377331");
assert_eq!(
Format::Octal.format(u128::MAX, &options),
format!("0o{:o}", u128::MAX)
);
assert_eq!(Format::Base32.format(0x41414242, &options), "032sIFAUEQQ=");
assert_eq!(
Format::Base32.format(0x4141414141414141, &options),
"032sIFAUCQKBIFAUC==="
);
assert_eq!(Format::Base64.format(0x41414242, &options), "0sQUFCQg==");
assert_eq!(
Format::Base64.format(0x4141414141414141, &options),
"0sQUFBQUFBQUE="
);
}
#[test]
fn format_padded_prefix() {
let mut options = FormatOptions::default();
options.set_prefix(true);
options.set_padding(true);
assert_eq!(Format::Dec.format(1337, &options), "0d1337");
assert_eq!(
Format::Dec.format(u128::MAX, &options),
format!("0d{}", u128::MAX)
);
assert_eq!(Format::Hex.format(0xFFF, &options), "0x0FFF");
assert_eq!(Format::Hex.format(0xFFFF, &options), "0xFFFF");
assert_eq!(
Format::Hex.format(u128::MAX, &options),
format!("0x{:X}", u128::MAX)
);
assert_eq!(
Format::Bin.format(0b11110000_00001111, &options),
"0b1111000000001111"
);
assert_eq!(
Format::Bin.format(0b110000_00001111, &options),
"0b0011000000001111"
);
assert_eq!(
Format::Bin.format(u128::MAX, &options),
format!("0b{:b}", u128::MAX)
);
assert_eq!(Format::Octal.format(0o13377331, &options), "0o13377331");
assert_eq!(
Format::Octal.format(u128::MAX, &options),
format!("0o{:o}", u128::MAX)
);
assert_eq!(Format::Base32.format(0x41414242, &options), "032sIFAUEQQ=");
assert_eq!(
Format::Base32.format(0x4141414141414141, &options),
"032sIFAUCQKBIFAUC==="
);
assert_eq!(Format::Base64.format(0x41414242, &options), "0sQUFCQg==");
assert_eq!(
Format::Base64.format(0x4141414141414141, &options),
"0sQUFBQUFBQUE="
);
}
#[test]
fn set_format_checker() {
let mut options = FormatOptions::default();
assert_eq!(options.format(), Format::Hex);
options.set_format(Format::Base32);
assert_eq!(options.format(), Format::Base32);
options.set_format(Format::Base64);
assert_eq!(options.format(), Format::Base64);
}