1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#[cfg(feature = "format")]
use core::num;
#[cfg(feature = "format")]
use lexical_util::format;
#[cfg(feature = "format")]
const fn from_digit_separator(digit_separator: u8) -> u128 {
format::NumberFormatBuilder::new()
.digit_separator(num::NonZeroU8::new(digit_separator))
.digit_separator_flags(true)
.build()
}
#[cfg(feature = "format")]
fn is_valid_digit_separator(digit_separator: u8) -> bool {
let format = from_digit_separator(digit_separator);
format::is_valid_digit_separator(format)
}
#[test]
#[cfg(feature = "format")]
fn test_is_valid_digit_separator() {
assert_eq!(is_valid_digit_separator(b'_'), true);
assert_eq!(is_valid_digit_separator(b'\''), true);
assert_eq!(is_valid_digit_separator(b'.'), true);
assert_eq!(is_valid_digit_separator(b'e'), true);
assert_eq!(is_valid_digit_separator(b'0'), false);
assert_eq!(is_valid_digit_separator(128), false);
// Try with a custom radix.
#[cfg(feature = "radix")]
{
let format =
format::NumberFormat::<{ from_digit_separator(b'e') }>::rebuild().radix(16).build();
assert_eq!(format::is_valid_digit_separator(format), false);
}
}
#[cfg(all(feature = "power-of-two", feature = "format"))]
fn is_valid_punctuation(digit_separator: u8, base_prefix: u8, base_suffix: u8) -> bool {
let fmt = format::NumberFormatBuilder::new()
.digit_separator(num::NonZeroU8::new(digit_separator))
.digit_separator_flags(true)
.base_prefix(num::NonZeroU8::new(base_prefix))
.base_suffix(num::NonZeroU8::new(base_suffix))
.build();
format::is_valid_punctuation(fmt)
}
#[test]
#[cfg(all(feature = "power-of-two", feature = "format"))]
fn test_is_valid_punctuation() {
assert_eq!(is_valid_punctuation(b'_', b'h', 0), true);
assert_eq!(is_valid_punctuation(b'e', b'h', 0), true);
assert_eq!(is_valid_punctuation(b'^', b'h', 0), true);
assert_eq!(is_valid_punctuation(b'\'', b'h', 0), true);
assert_eq!(is_valid_punctuation(b'\'', b'h', b'h'), false);
}
|