auto merge of #10685 : ebiggers/rust/ascii_fixes, r=alexcrichton
is_digit() incorrectly returned false for '0'. is_control() incorrectly returned true for ' ' (space).
This commit is contained in:
commit
e147a090a5
@ -67,7 +67,7 @@ pub fn is_alpha(&self) -> bool {
|
||||
/// Check if the character is a number (0-9)
|
||||
#[inline]
|
||||
pub fn is_digit(&self) -> bool {
|
||||
self.chr >= 0x31 && self.chr <= 0x39
|
||||
self.chr >= 0x30 && self.chr <= 0x39
|
||||
}
|
||||
|
||||
/// Check if the character is a letter or number
|
||||
@ -85,7 +85,7 @@ pub fn is_blank(&self) -> bool {
|
||||
/// Check if the character is a control character
|
||||
#[inline]
|
||||
pub fn is_control(&self) -> bool {
|
||||
self.chr <= 0x20 || self.chr == 0x7F
|
||||
self.chr < 0x20 || self.chr == 0x7F
|
||||
}
|
||||
|
||||
/// Checks if the character is printable (except space)
|
||||
@ -498,6 +498,15 @@ fn test_ascii() {
|
||||
assert_eq!('`'.to_ascii().to_upper().to_char(), '`');
|
||||
assert_eq!('{'.to_ascii().to_upper().to_char(), '{');
|
||||
|
||||
assert!('0'.to_ascii().is_digit());
|
||||
assert!('9'.to_ascii().is_digit());
|
||||
assert!(!'/'.to_ascii().is_digit());
|
||||
assert!(!':'.to_ascii().is_digit());
|
||||
|
||||
assert!((0x1fu8).to_ascii().is_control());
|
||||
assert!(!' '.to_ascii().is_control());
|
||||
assert!((0x7fu8).to_ascii().is_control());
|
||||
|
||||
assert!("banana".chars().all(|c| c.is_ascii()));
|
||||
assert!(!"ประเทศไทย中华Việt Nam".chars().all(|c| c.is_ascii()));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user