Skip to content

Commit e609c9b

Browse files
committed
Add unit tests for Span::trim_start
1 parent 1689a5a commit e609c9b

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

compiler/rustc_span/src/tests.rs

+38
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,41 @@ fn test_normalize_newlines() {
4242
check("\r\r\n", "\r\n", &[2]);
4343
check("hello\rworld", "hello\rworld", &[]);
4444
}
45+
46+
#[test]
47+
fn test_trim() {
48+
let span = |lo: usize, hi: usize| {
49+
Span::new(BytePos::from_usize(lo), BytePos::from_usize(hi), SyntaxContext::root(), None)
50+
};
51+
52+
// Various positions, named for their relation to `start` and `end`.
53+
let well_before = 1;
54+
let before = 3;
55+
let start = 5;
56+
let mid = 7;
57+
let end = 9;
58+
let after = 11;
59+
let well_after = 13;
60+
61+
// The resulting span's context should be that of `self`, not `other`.
62+
let other = span(start, end).with_ctxt(SyntaxContext::from_u32(999));
63+
64+
// Test cases for `trim_start`.
65+
66+
assert_eq!(span(after, well_after).trim_start(other), Some(span(after, well_after)));
67+
assert_eq!(span(end, well_after).trim_start(other), Some(span(end, well_after)));
68+
assert_eq!(span(mid, well_after).trim_start(other), Some(span(end, well_after)));
69+
assert_eq!(span(start, well_after).trim_start(other), Some(span(end, well_after)));
70+
assert_eq!(span(before, well_after).trim_start(other), Some(span(end, well_after)));
71+
72+
assert_eq!(span(mid, end).trim_start(other), None);
73+
assert_eq!(span(start, end).trim_start(other), None);
74+
assert_eq!(span(before, end).trim_start(other), None);
75+
76+
assert_eq!(span(start, mid).trim_start(other), None);
77+
assert_eq!(span(before, mid).trim_start(other), None);
78+
79+
assert_eq!(span(before, start).trim_start(other), None);
80+
81+
assert_eq!(span(well_before, before).trim_start(other), None);
82+
}

0 commit comments

Comments
 (0)