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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
|
#![cfg(feature = "format")]
use core::num;
use lexical_util::format;
#[test]
fn ignore_test() {
let fmt = format::NumberFormat::<{ format::IGNORE }> {};
assert_eq!(fmt.flags(), format::DIGIT_SEPARATOR_FLAG_MASK);
assert_eq!(fmt.digit_separator(), b'_');
assert_eq!(fmt.required_integer_digits(), false);
assert_eq!(fmt.required_fraction_digits(), false);
assert_eq!(fmt.required_exponent_digits(), false);
assert_eq!(fmt.required_mantissa_digits(), false);
assert_eq!(fmt.required_digits(), false);
assert_eq!(fmt.no_positive_mantissa_sign(), false);
assert_eq!(fmt.required_mantissa_sign(), false);
assert_eq!(fmt.no_exponent_notation(), false);
assert_eq!(fmt.no_positive_exponent_sign(), false);
assert_eq!(fmt.required_exponent_sign(), false);
assert_eq!(fmt.no_exponent_without_fraction(), false);
assert_eq!(fmt.no_special(), false);
assert_eq!(fmt.case_sensitive_special(), false);
assert_eq!(fmt.no_integer_leading_zeros(), false);
assert_eq!(fmt.no_float_leading_zeros(), false);
assert_eq!(fmt.required_exponent_notation(), false);
assert_eq!(fmt.case_sensitive_exponent(), false);
#[cfg(feature = "power-of-two")]
assert_eq!(fmt.case_sensitive_base_prefix(), false);
#[cfg(feature = "power-of-two")]
assert_eq!(fmt.case_sensitive_base_suffix(), false);
assert_eq!(fmt.integer_internal_digit_separator(), true);
assert_eq!(fmt.fraction_internal_digit_separator(), true);
assert_eq!(fmt.exponent_internal_digit_separator(), true);
assert_eq!(fmt.internal_digit_separator(), true);
assert_eq!(fmt.integer_leading_digit_separator(), true);
assert_eq!(fmt.fraction_leading_digit_separator(), true);
assert_eq!(fmt.exponent_leading_digit_separator(), true);
assert_eq!(fmt.leading_digit_separator(), true);
assert_eq!(fmt.integer_trailing_digit_separator(), true);
assert_eq!(fmt.fraction_trailing_digit_separator(), true);
assert_eq!(fmt.exponent_trailing_digit_separator(), true);
assert_eq!(fmt.trailing_digit_separator(), true);
assert_eq!(fmt.integer_consecutive_digit_separator(), true);
assert_eq!(fmt.fraction_consecutive_digit_separator(), true);
assert_eq!(fmt.exponent_consecutive_digit_separator(), true);
assert_eq!(fmt.consecutive_digit_separator(), true);
assert_eq!(fmt.special_digit_separator(), true);
}
fn test_flag<const FORMAT: u128>() {
let fmt = format::NumberFormat::<FORMAT> {};
assert_eq!(fmt.flags(), FORMAT);
assert_eq!(fmt.digit_separator(), 0);
}
macro_rules! test_flag {
($field:ident, $flag:ident) => {{
test_flag::<{ format::$flag }>();
if format::$flag & format::CONSECUTIVE_DIGIT_SEPARATOR == 0 {
const FORMAT: u128 = format::NumberFormatBuilder::new()
.digit_separator(num::NonZeroU8::new(b'_'))
.$field(true)
.build();
let fmt = format::NumberFormat::<FORMAT> {};
assert_eq!(fmt.is_valid(), true);
assert_eq!(fmt.$field(), true);
} else {
const FORMAT: u128 = format::NumberFormatBuilder::new()
.digit_separator(num::NonZeroU8::new(b'_'))
.internal_digit_separator(true)
.leading_digit_separator(true)
.trailing_digit_separator(true)
.$field(true)
.build();
let fmt = format::NumberFormat::<FORMAT> {};
assert_eq!(fmt.is_valid(), true);
assert_eq!(fmt.$field(), true);
}
}};
}
#[test]
fn flags_test() {
test_flag!(required_integer_digits, REQUIRED_INTEGER_DIGITS);
test_flag!(required_fraction_digits, REQUIRED_FRACTION_DIGITS);
test_flag!(required_exponent_digits, REQUIRED_EXPONENT_DIGITS);
test_flag!(required_mantissa_digits, REQUIRED_MANTISSA_DIGITS);
test_flag!(no_positive_mantissa_sign, NO_POSITIVE_MANTISSA_SIGN);
test_flag!(required_mantissa_sign, REQUIRED_MANTISSA_SIGN);
test_flag!(no_exponent_notation, NO_EXPONENT_NOTATION);
test_flag!(no_positive_exponent_sign, NO_POSITIVE_EXPONENT_SIGN);
test_flag!(required_exponent_sign, REQUIRED_EXPONENT_SIGN);
test_flag!(no_exponent_without_fraction, NO_EXPONENT_WITHOUT_FRACTION);
test_flag!(no_special, NO_SPECIAL);
test_flag!(case_sensitive_special, CASE_SENSITIVE_SPECIAL);
test_flag!(no_integer_leading_zeros, NO_INTEGER_LEADING_ZEROS);
test_flag!(no_float_leading_zeros, NO_FLOAT_LEADING_ZEROS);
test_flag!(required_exponent_notation, REQUIRED_EXPONENT_NOTATION);
test_flag!(case_sensitive_exponent, CASE_SENSITIVE_EXPONENT);
#[cfg(feature = "power-of-two")]
test_flag!(case_sensitive_base_prefix, CASE_SENSITIVE_BASE_PREFIX);
#[cfg(feature = "power-of-two")]
test_flag!(case_sensitive_base_suffix, CASE_SENSITIVE_BASE_SUFFIX);
test_flag!(integer_internal_digit_separator, INTEGER_INTERNAL_DIGIT_SEPARATOR);
test_flag!(fraction_internal_digit_separator, FRACTION_INTERNAL_DIGIT_SEPARATOR);
test_flag!(exponent_internal_digit_separator, EXPONENT_INTERNAL_DIGIT_SEPARATOR);
test_flag!(integer_leading_digit_separator, INTEGER_LEADING_DIGIT_SEPARATOR);
test_flag!(fraction_leading_digit_separator, FRACTION_LEADING_DIGIT_SEPARATOR);
test_flag!(exponent_leading_digit_separator, EXPONENT_LEADING_DIGIT_SEPARATOR);
test_flag!(integer_trailing_digit_separator, INTEGER_TRAILING_DIGIT_SEPARATOR);
test_flag!(fraction_trailing_digit_separator, FRACTION_TRAILING_DIGIT_SEPARATOR);
test_flag!(exponent_trailing_digit_separator, EXPONENT_TRAILING_DIGIT_SEPARATOR);
test_flag!(integer_consecutive_digit_separator, INTEGER_CONSECUTIVE_DIGIT_SEPARATOR);
test_flag!(fraction_consecutive_digit_separator, FRACTION_CONSECUTIVE_DIGIT_SEPARATOR);
test_flag!(exponent_consecutive_digit_separator, EXPONENT_CONSECUTIVE_DIGIT_SEPARATOR);
test_flag!(special_digit_separator, SPECIAL_DIGIT_SEPARATOR);
}
#[test]
fn constants_test() {
// Don't check the actual values: just check they're defined.
let _: u128 = format::RUST_LITERAL;
let _: u128 = format::RUST_STRING;
let _: u128 = format::PYTHON_LITERAL;
let _: u128 = format::PYTHON_STRING;
let _: u128 = format::PYTHON3_LITERAL;
let _: u128 = format::PYTHON3_STRING;
let _: u128 = format::PYTHON36_LITERAL;
let _: u128 = format::PYTHON35_LITERAL;
let _: u128 = format::PYTHON2_LITERAL;
let _: u128 = format::PYTHON2_STRING;
let _: u128 = format::CXX17_LITERAL;
let _: u128 = format::CXX17_STRING;
let _: u128 = format::CXX14_LITERAL;
let _: u128 = format::CXX14_STRING;
let _: u128 = format::CXX11_LITERAL;
let _: u128 = format::CXX11_STRING;
let _: u128 = format::CXX03_LITERAL;
let _: u128 = format::CXX03_STRING;
let _: u128 = format::CXX98_LITERAL;
let _: u128 = format::CXX98_STRING;
let _: u128 = format::C18_LITERAL;
let _: u128 = format::C18_STRING;
let _: u128 = format::C11_LITERAL;
let _: u128 = format::C11_STRING;
let _: u128 = format::C99_LITERAL;
let _: u128 = format::C99_STRING;
let _: u128 = format::C90_LITERAL;
let _: u128 = format::C90_STRING;
let _: u128 = format::C89_LITERAL;
let _: u128 = format::C89_STRING;
let _: u128 = format::RUBY_LITERAL;
let _: u128 = format::RUBY_STRING;
let _: u128 = format::SWIFT_LITERAL;
let _: u128 = format::SWIFT_STRING;
let _: u128 = format::GO_LITERAL;
let _: u128 = format::GO_STRING;
let _: u128 = format::HASKELL_LITERAL;
let _: u128 = format::HASKELL_STRING;
let _: u128 = format::JAVASCRIPT_LITERAL;
let _: u128 = format::JAVASCRIPT_STRING;
let _: u128 = format::PERL_LITERAL;
let _: u128 = format::PERL_STRING;
let _: u128 = format::PHP_LITERAL;
let _: u128 = format::PHP_STRING;
let _: u128 = format::JAVA_LITERAL;
let _: u128 = format::JAVA_STRING;
let _: u128 = format::R_LITERAL;
let _: u128 = format::R_STRING;
let _: u128 = format::KOTLIN_LITERAL;
let _: u128 = format::KOTLIN_STRING;
let _: u128 = format::JULIA_LITERAL;
let _: u128 = format::JULIA_STRING;
let _: u128 = format::CSHARP7_LITERAL;
let _: u128 = format::CSHARP7_STRING;
let _: u128 = format::CSHARP6_LITERAL;
let _: u128 = format::CSHARP6_STRING;
let _: u128 = format::CSHARP5_LITERAL;
let _: u128 = format::CSHARP5_STRING;
let _: u128 = format::CSHARP4_LITERAL;
let _: u128 = format::CSHARP4_STRING;
let _: u128 = format::CSHARP3_LITERAL;
let _: u128 = format::CSHARP3_STRING;
let _: u128 = format::CSHARP2_LITERAL;
let _: u128 = format::CSHARP2_STRING;
let _: u128 = format::CSHARP1_LITERAL;
let _: u128 = format::CSHARP1_STRING;
let _: u128 = format::KAWA_LITERAL;
let _: u128 = format::KAWA_STRING;
let _: u128 = format::GAMBITC_LITERAL;
let _: u128 = format::GAMBITC_STRING;
let _: u128 = format::GUILE_LITERAL;
let _: u128 = format::GUILE_STRING;
let _: u128 = format::CLOJURE_LITERAL;
let _: u128 = format::CLOJURE_STRING;
let _: u128 = format::ERLANG_LITERAL;
let _: u128 = format::ERLANG_STRING;
let _: u128 = format::ELM_LITERAL;
let _: u128 = format::ELM_STRING;
let _: u128 = format::SCALA_LITERAL;
let _: u128 = format::SCALA_STRING;
let _: u128 = format::ELIXIR_LITERAL;
let _: u128 = format::ELIXIR_STRING;
let _: u128 = format::FORTRAN_LITERAL;
let _: u128 = format::FORTRAN_STRING;
let _: u128 = format::D_LITERAL;
let _: u128 = format::D_STRING;
let _: u128 = format::COFFEESCRIPT_LITERAL;
let _: u128 = format::COFFEESCRIPT_STRING;
let _: u128 = format::COBOL_LITERAL;
let _: u128 = format::COBOL_STRING;
let _: u128 = format::FSHARP_LITERAL;
let _: u128 = format::FSHARP_STRING;
let _: u128 = format::VB_LITERAL;
let _: u128 = format::VB_STRING;
let _: u128 = format::OCAML_LITERAL;
let _: u128 = format::OCAML_STRING;
let _: u128 = format::OBJECTIVEC_LITERAL;
let _: u128 = format::OBJECTIVEC_STRING;
let _: u128 = format::REASONML_LITERAL;
let _: u128 = format::REASONML_STRING;
let _: u128 = format::OCTAVE_LITERAL;
let _: u128 = format::OCTAVE_STRING;
let _: u128 = format::MATLAB_LITERAL;
let _: u128 = format::MATLAB_STRING;
let _: u128 = format::ZIG_LITERAL;
let _: u128 = format::ZIG_STRING;
let _: u128 = format::SAGE_LITERAL;
let _: u128 = format::SAGE_STRING;
let _: u128 = format::JSON;
let _: u128 = format::TOML;
let _: u128 = format::YAML;
let _: u128 = format::XML;
let _: u128 = format::SQLITE;
let _: u128 = format::POSTGRESQL;
let _: u128 = format::MYSQL;
let _: u128 = format::MONGODB;
}
|