aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_editor/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_editor/src')
-rw-r--r--crates/ra_editor/src/line_index.rs112
1 files changed, 98 insertions, 14 deletions
diff --git a/crates/ra_editor/src/line_index.rs b/crates/ra_editor/src/line_index.rs
index 26b309b78..aab7e4081 100644
--- a/crates/ra_editor/src/line_index.rs
+++ b/crates/ra_editor/src/line_index.rs
@@ -126,23 +126,107 @@ impl LineIndex {
126fn test_line_index() { 126fn test_line_index() {
127 let text = "hello\nworld"; 127 let text = "hello\nworld";
128 let index = LineIndex::new(text); 128 let index = LineIndex::new(text);
129 assert_eq!(index.line_col(0.into()), LineCol { line: 0, col_utf16: 0 }); 129 assert_eq!(
130 assert_eq!(index.line_col(1.into()), LineCol { line: 0, col_utf16: 1 }); 130 index.line_col(0.into()),
131 assert_eq!(index.line_col(5.into()), LineCol { line: 0, col_utf16: 5 }); 131 LineCol {
132 assert_eq!(index.line_col(6.into()), LineCol { line: 1, col_utf16: 0 }); 132 line: 0,
133 assert_eq!(index.line_col(7.into()), LineCol { line: 1, col_utf16: 1 }); 133 col_utf16: 0
134 assert_eq!(index.line_col(8.into()), LineCol { line: 1, col_utf16: 2 }); 134 }
135 assert_eq!(index.line_col(10.into()), LineCol { line: 1, col_utf16: 4 }); 135 );
136 assert_eq!(index.line_col(11.into()), LineCol { line: 1, col_utf16: 5 }); 136 assert_eq!(
137 assert_eq!(index.line_col(12.into()), LineCol { line: 1, col_utf16: 6 }); 137 index.line_col(1.into()),
138 LineCol {
139 line: 0,
140 col_utf16: 1
141 }
142 );
143 assert_eq!(
144 index.line_col(5.into()),
145 LineCol {
146 line: 0,
147 col_utf16: 5
148 }
149 );
150 assert_eq!(
151 index.line_col(6.into()),
152 LineCol {
153 line: 1,
154 col_utf16: 0
155 }
156 );
157 assert_eq!(
158 index.line_col(7.into()),
159 LineCol {
160 line: 1,
161 col_utf16: 1
162 }
163 );
164 assert_eq!(
165 index.line_col(8.into()),
166 LineCol {
167 line: 1,
168 col_utf16: 2
169 }
170 );
171 assert_eq!(
172 index.line_col(10.into()),
173 LineCol {
174 line: 1,
175 col_utf16: 4
176 }
177 );
178 assert_eq!(
179 index.line_col(11.into()),
180 LineCol {
181 line: 1,
182 col_utf16: 5
183 }
184 );
185 assert_eq!(
186 index.line_col(12.into()),
187 LineCol {
188 line: 1,
189 col_utf16: 6
190 }
191 );
138 192
139 let text = "\nhello\nworld"; 193 let text = "\nhello\nworld";
140 let index = LineIndex::new(text); 194 let index = LineIndex::new(text);
141 assert_eq!(index.line_col(0.into()), LineCol { line: 0, col_utf16: 0 }); 195 assert_eq!(
142 assert_eq!(index.line_col(1.into()), LineCol { line: 1, col_utf16: 0 }); 196 index.line_col(0.into()),
143 assert_eq!(index.line_col(2.into()), LineCol { line: 1, col_utf16: 1 }); 197 LineCol {
144 assert_eq!(index.line_col(6.into()), LineCol { line: 1, col_utf16: 5 }); 198 line: 0,
145 assert_eq!(index.line_col(7.into()), LineCol { line: 2, col_utf16: 0 }); 199 col_utf16: 0
200 }
201 );
202 assert_eq!(
203 index.line_col(1.into()),
204 LineCol {
205 line: 1,
206 col_utf16: 0
207 }
208 );
209 assert_eq!(
210 index.line_col(2.into()),
211 LineCol {
212 line: 1,
213 col_utf16: 1
214 }
215 );
216 assert_eq!(
217 index.line_col(6.into()),
218 LineCol {
219 line: 1,
220 col_utf16: 5
221 }
222 );
223 assert_eq!(
224 index.line_col(7.into()),
225 LineCol {
226 line: 2,
227 col_utf16: 0
228 }
229 );
146} 230}
147 231
148#[cfg(test)] 232#[cfg(test)]