mod common;
use num_format::{Buffer, CustomFormat};
#[cfg(feature = "std")]
use num_format::{ToFormattedString, WriteFormatted};
use crate::common::POLICIES;
#[test]
fn test_i8() {
let test_cases: &[(&str, i8, &CustomFormat)] = &[
("0", 0, &POLICIES[0]),
("0", 0, &POLICIES[1]),
("0", 0, &POLICIES[2]),
("0", 0, &POLICIES[3]),
("0", 0, &POLICIES[4]),
("127", std::i8::MAX, &POLICIES[0]),
("127", std::i8::MAX, &POLICIES[1]),
("127", std::i8::MAX, &POLICIES[2]),
("127", std::i8::MAX, &POLICIES[3]),
("127", std::i8::MAX, &POLICIES[4]),
("-128", std::i8::MIN, &POLICIES[0]),
("\u{200e}-\u{200e}128", std::i8::MIN, &POLICIES[1]),
("\u{200e}-\u{200e}128", std::i8::MIN, &POLICIES[2]),
("\u{200e}-\u{200e}128", std::i8::MIN, &POLICIES[3]),
("\u{200e}-\u{200e}128", std::i8::MIN, &POLICIES[4]),
];
for (expected, input, format) in test_cases {
let mut buf = Buffer::default();
buf.write_formatted(input, *format);
assert_eq!(*expected, buf.as_str());
#[cfg(feature = "std")]
{
assert_eq!(expected.to_string(), input.to_formatted_string(*format));
let mut s = String::new();
s.write_formatted(input, *format).unwrap();
assert_eq!(expected.to_string(), s);
}
}
}
#[test]
fn test_i16() {
let test_cases: &[(&str, i16, &CustomFormat)] = &[
("0", 0, &POLICIES[0]),
("0", 0, &POLICIES[1]),
("0", 0, &POLICIES[2]),
("0", 0, &POLICIES[3]),
("0", 0, &POLICIES[4]),
("32,767", std::i16::MAX, &POLICIES[0]),
("32𠜱767", std::i16::MAX, &POLICIES[1]),
("32𠜱767", std::i16::MAX, &POLICIES[2]),
("32767", std::i16::MAX, &POLICIES[3]),
("32767", std::i16::MAX, &POLICIES[4]),
("-32,768", std::i16::MIN, &POLICIES[0]),
("\u{200e}-\u{200e}32𠜱768", std::i16::MIN, &POLICIES[1]),
("\u{200e}-\u{200e}32𠜱768", std::i16::MIN, &POLICIES[2]),
("\u{200e}-\u{200e}32768", std::i16::MIN, &POLICIES[3]),
("\u{200e}-\u{200e}32768", std::i16::MIN, &POLICIES[4]),
];
for (expected, input, format) in test_cases {
let mut buf = Buffer::default();
buf.write_formatted(input, *format);
assert_eq!(*expected, buf.as_str());
#[cfg(feature = "std")]
{
assert_eq!(expected.to_string(), input.to_formatted_string(*format));
let mut s = String::new();
s.write_formatted(input, *format).unwrap();
assert_eq!(expected.to_string(), s);
}
}
}
#[test]
fn test_i32() {
let test_cases: &[(&str, i32, &CustomFormat)] = &[
("0", 0, &POLICIES[0]),
("0", 0, &POLICIES[1]),
("0", 0, &POLICIES[2]),
("0", 0, &POLICIES[3]),
("0", 0, &POLICIES[4]),
("2,147,483,647", std::i32::MAX, &POLICIES[0]),
("2𠜱147𠜱483𠜱647", std::i32::MAX, &POLICIES[1]),
("2𠜱14𠜱74𠜱83𠜱647", std::i32::MAX, &POLICIES[2]),
("2147483647", std::i32::MAX, &POLICIES[3]),
("2147483647", std::i32::MAX, &POLICIES[4]),
("-2,147,483,648", std::i32::MIN, &POLICIES[0]),
(
"\u{200e}-\u{200e}2𠜱147𠜱483𠜱648",
std::i32::MIN,
&POLICIES[1],
),
(
"\u{200e}-\u{200e}2𠜱14𠜱74𠜱83𠜱648",
std::i32::MIN,
&POLICIES[2],
),
("\u{200e}-\u{200e}2147483648", std::i32::MIN, &POLICIES[3]),
("\u{200e}-\u{200e}2147483648", std::i32::MIN, &POLICIES[4]),
];
for (expected, input, format) in test_cases {
let mut buf = Buffer::default();
buf.write_formatted(input, *format);
assert_eq!(*expected, buf.as_str());
#[cfg(feature = "std")]
{
assert_eq!(expected.to_string(), input.to_formatted_string(*format));
let mut s = String::new();
s.write_formatted(input, *format).unwrap();
assert_eq!(expected.to_string(), s);
}
}
}
#[test]
fn test_isize() {
let test_cases: &[(&str, isize, &CustomFormat)] = &[
("0", 0, &POLICIES[0]),
("0", 0, &POLICIES[1]),
("0", 0, &POLICIES[2]),
("0", 0, &POLICIES[3]),
("0", 0, &POLICIES[4]),
("9,223,372,036,854,775,807", std::isize::MAX, &POLICIES[0]),
(
"9𠜱223𠜱372𠜱036𠜱854𠜱775𠜱807",
std::isize::MAX,
&POLICIES[1],
),
(
"92𠜱23𠜱37𠜱20𠜱36𠜱85𠜱47𠜱75𠜱807",
std::isize::MAX,
&POLICIES[2],
),
("9223372036854775807", std::isize::MAX, &POLICIES[3]),
("9223372036854775807", std::isize::MAX, &POLICIES[4]),
("-9,223,372,036,854,775,808", std::isize::MIN, &POLICIES[0]),
(
"\u{200e}-\u{200e}9𠜱223𠜱372𠜱036𠜱854𠜱775𠜱808",
std::isize::MIN,
&POLICIES[1],
),
(
"\u{200e}-\u{200e}92𠜱23𠜱37𠜱20𠜱36𠜱85𠜱47𠜱75𠜱808",
std::isize::MIN,
&POLICIES[2],
),
(
"\u{200e}-\u{200e}9223372036854775808",
std::isize::MIN,
&POLICIES[3],
),
(
"\u{200e}-\u{200e}9223372036854775808",
std::isize::MIN,
&POLICIES[4],
),
];
for (expected, input, format) in test_cases {
let mut buf = Buffer::default();
buf.write_formatted(input, *format);
assert_eq!(*expected, buf.as_str());
#[cfg(feature = "std")]
{
assert_eq!(expected.to_string(), input.to_formatted_string(*format));
let mut s = String::new();
s.write_formatted(input, *format).unwrap();
assert_eq!(expected.to_string(), s);
}
}
}
#[test]
fn test_i64() {
let test_cases: &[(&str, i64, &CustomFormat)] = &[
("0", 0, &POLICIES[0]),
("0", 0, &POLICIES[1]),
("0", 0, &POLICIES[2]),
("0", 0, &POLICIES[3]),
("0", 0, &POLICIES[4]),
("9,223,372,036,854,775,807", std::i64::MAX, &POLICIES[0]),
(
"9𠜱223𠜱372𠜱036𠜱854𠜱775𠜱807",
std::i64::MAX,
&POLICIES[1],
),
(
"92𠜱23𠜱37𠜱20𠜱36𠜱85𠜱47𠜱75𠜱807",
std::i64::MAX,
&POLICIES[2],
),
("9223372036854775807", std::i64::MAX, &POLICIES[3]),
("9223372036854775807", std::i64::MAX, &POLICIES[4]),
("-9,223,372,036,854,775,808", std::i64::MIN, &POLICIES[0]),
(
"\u{200e}-\u{200e}9𠜱223𠜱372𠜱036𠜱854𠜱775𠜱808",
std::i64::MIN,
&POLICIES[1],
),
(
"\u{200e}-\u{200e}92𠜱23𠜱37𠜱20𠜱36𠜱85𠜱47𠜱75𠜱808",
std::i64::MIN,
&POLICIES[2],
),
(
"\u{200e}-\u{200e}9223372036854775808",
std::i64::MIN,
&POLICIES[3],
),
(
"\u{200e}-\u{200e}9223372036854775808",
std::i64::MIN,
&POLICIES[4],
),
];
for (expected, input, format) in test_cases {
let mut buf = Buffer::default();
buf.write_formatted(input, *format);
assert_eq!(*expected, buf.as_str());
#[cfg(feature = "std")]
{
assert_eq!(expected.to_string(), input.to_formatted_string(*format));
let mut s = String::new();
s.write_formatted(input, *format).unwrap();
assert_eq!(expected.to_string(), s);
}
}
}
#[test]
fn test_i128() {
let test_cases: &[(&str, i128, &CustomFormat)] = &[
("0", 0, &POLICIES[0]),
("0", 0, &POLICIES[1]),
("0", 0, &POLICIES[2]),
("0", 0, &POLICIES[3]),
("0", 0, &POLICIES[4]),
(
"170,141,183,460,469,231,731,687,303,715,884,105,727",
std::i128::MAX,
&POLICIES[0],
),
(
"170𠜱141𠜱183𠜱460𠜱469𠜱231𠜱731𠜱687𠜱303𠜱715𠜱884𠜱105𠜱727",
std::i128::MAX,
&POLICIES[1],
),
(
"17𠜱01𠜱41𠜱18𠜱34𠜱60𠜱46𠜱92𠜱31𠜱73𠜱16𠜱87𠜱30𠜱37𠜱15𠜱88𠜱41𠜱05𠜱727",
std::i128::MAX,
&POLICIES[2],
),
(
"170141183460469231731687303715884105727",
std::i128::MAX,
&POLICIES[3],
),
(
"170141183460469231731687303715884105727",
std::i128::MAX,
&POLICIES[4],
),
(
"-170,141,183,460,469,231,731,687,303,715,884,105,728",
std::i128::MIN,
&POLICIES[0],
),
(
"\u{200e}-\u{200e}170𠜱141𠜱183𠜱460𠜱469𠜱231𠜱731𠜱687𠜱303𠜱715𠜱884𠜱105𠜱728",
std::i128::MIN,
&POLICIES[1],
),
(
"\u{200e}-\u{200e}17𠜱01𠜱41𠜱18𠜱34𠜱60𠜱46𠜱92𠜱31𠜱73𠜱16𠜱87𠜱30𠜱37𠜱15𠜱88𠜱41𠜱05𠜱728",
std::i128::MIN,
&POLICIES[2],
),
(
"\u{200e}-\u{200e}170141183460469231731687303715884105728",
std::i128::MIN,
&POLICIES[3],
),
(
"\u{200e}-\u{200e}170141183460469231731687303715884105728",
std::i128::MIN,
&POLICIES[4],
),
];
for (expected, input, format) in test_cases {
let mut buf = Buffer::default();
buf.write_formatted(input, *format);
assert_eq!(*expected, buf.as_str());
#[cfg(feature = "std")]
{
assert_eq!(expected.to_string(), input.to_formatted_string(*format));
let mut s = String::new();
s.write_formatted(input, *format).unwrap();
assert_eq!(expected.to_string(), s);
}
}
}