()
| 1054 | |
| 1055 | #[test] |
| 1056 | fn ranges_are_nested() { |
| 1057 | let content = r#"<?php |
| 1058 | function test() { |
| 1059 | $x = [1, 2, 3]; |
| 1060 | } |
| 1061 | "#; |
| 1062 | // Cursor on `2` in the array (line 2, char 13). |
| 1063 | let results = selection_ranges(content, &[Position::new(2, 13)]); |
| 1064 | assert_eq!(results.len(), 1); |
| 1065 | let ranges = flatten(&results[0]); |
| 1066 | |
| 1067 | // Verify that each range is contained within or equal to its parent. |
| 1068 | for window in ranges.windows(2) { |
| 1069 | let inner = &window[0]; |
| 1070 | let outer = &window[1]; |
| 1071 | assert!( |
| 1072 | (inner.start.line > outer.start.line |
| 1073 | || (inner.start.line == outer.start.line |
| 1074 | && inner.start.character >= outer.start.character)) |
| 1075 | && (inner.end.line < outer.end.line |
| 1076 | || (inner.end.line == outer.end.line |
| 1077 | && inner.end.character <= outer.end.character)), |
| 1078 | "Inner range {:?} should be contained within outer range {:?}", |
| 1079 | inner, |
| 1080 | outer, |
| 1081 | ); |
| 1082 | } |
| 1083 | } |
| 1084 | |
| 1085 | /// Helper: assert every range in the chain is contained within its parent. |
| 1086 | fn assert_nested(ranges: &[Range]) { |
nothing calls this directly
no test coverage detected