diff options
| author | Igor Matuszewski <Xanewok@gmail.com> | 2019-06-20 09:37:20 +0200 |
|---|---|---|
| committer | Igor Matuszewski <Xanewok@gmail.com> | 2019-06-20 09:51:15 +0200 |
| commit | 047421e69efa88f1a5f65c39b1562063ab859436 (patch) | |
| tree | 08f09d12a4d56ce7680ec63c864414eb12144c21 /src/libsyntax/parse | |
| parent | 5e0c6a69e075d9c7d19e28264bb8941f72ecaf4e (diff) | |
| download | rust-047421e69efa88f1a5f65c39b1562063ab859436.tar.gz rust-047421e69efa88f1a5f65c39b1562063ab859436.zip | |
Add unit tests for unescaping raw (byte) strings
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/unescape.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/libsyntax/parse/unescape.rs b/src/libsyntax/parse/unescape.rs index 22cce67b5ee..87cc9c1c9e3 100644 --- a/src/libsyntax/parse/unescape.rs +++ b/src/libsyntax/parse/unescape.rs @@ -569,4 +569,34 @@ mod tests { check("hello \\\r\n world", b"hello world"); check("thread's", b"thread's") } + + #[test] + fn test_unescape_raw_str() { + fn check(literal: &str, expected: &[(Range<usize>, Result<char, EscapeError>)]) { + let mut unescaped = Vec::with_capacity(literal.len()); + unescape_raw_str(literal, &mut |range, res| unescaped.push((range, res))); + assert_eq!(unescaped, expected); + } + + check("\r\n", &[(0..2, Ok('\n'))]); + check("\r", &[(0..1, Err(EscapeError::BareCarriageReturnInRawString))]); + check("\rx", &[(0..1, Err(EscapeError::BareCarriageReturnInRawString)), (1..2, Ok('x'))]); + } + + #[test] + fn test_unescape_raw_byte_str() { + fn check(literal: &str, expected: &[(Range<usize>, Result<u8, EscapeError>)]) { + let mut unescaped = Vec::with_capacity(literal.len()); + unescape_raw_byte_str(literal, &mut |range, res| unescaped.push((range, res))); + assert_eq!(unescaped, expected); + } + + check("\r\n", &[(0..2, Ok(byte_from_char('\n')))]); + check("\r", &[(0..1, Err(EscapeError::BareCarriageReturnInRawString))]); + check("🦀", &[(0..4, Err(EscapeError::NonAsciiCharInByteString))]); + check( + "🦀a", + &[(0..4, Err(EscapeError::NonAsciiCharInByteString)), (4..5, Ok(byte_from_char('a')))], + ); + } } |
