on master help sign in
Flesh out the line ending utility unit tests.
f2954faNathan Vegdahl
helix-core/src/line_ending.rs+46−5
@@ -164,7 +164,7 @@ mod line_ending_tests {
164 use super::*;
164 use super::*;
165
165
166 #[test]
166 #[test]
167− fn test_autodetect() {
167+ fn line_ending_autodetect() {
168 assert_eq!(
168 assert_eq!(
169 auto_detect_line_ending(&Rope::from_str("\n")),
169 auto_detect_line_ending(&Rope::from_str("\n")),
170 Some(LineEnding::LF)
170 Some(LineEnding::LF)
@@ -197,15 +197,56 @@ mod line_ending_tests {
197 }
197 }
198
198
199 #[test]
199 #[test]
200− fn test_rope_slice_to_line_ending() {
200+ fn str_to_line_ending() {
201+ assert_eq!(LineEnding::from_str("\r"), Some(LineEnding::CR));
202+ assert_eq!(LineEnding::from_str("\n"), Some(LineEnding::LF));
203+ assert_eq!(LineEnding::from_str("\r\n"), Some(LineEnding::Crlf));
204+ assert_eq!(LineEnding::from_str("hello\n"), None);
205+ }
206+
207+ #[test]
208+ fn rope_slice_to_line_ending() {
201− let r = Rope::from_str("\r\n");
209+ let r = Rope::from_str("hello\r\n");
202 assert_eq!(
210 assert_eq!(
203− LineEnding::from_rope_slice(&r.slice(1..2)),
211+ LineEnding::from_rope_slice(&r.slice(5..6)),
212+ Some(LineEnding::CR)
213+ );
214+ assert_eq!(
215+ LineEnding::from_rope_slice(&r.slice(6..7)),
204 Some(LineEnding::LF)
216 Some(LineEnding::LF)
205 );
217 );
206 assert_eq!(
218 assert_eq!(
207− LineEnding::from_rope_slice(&r.slice(0..2)),
219+ LineEnding::from_rope_slice(&r.slice(5..7)),
208 Some(LineEnding::Crlf)
220 Some(LineEnding::Crlf)
209 );
221 );
222+ assert_eq!(LineEnding::from_rope_slice(&r.slice(..)), None);
223+ }
224+
225+ #[test]
226+ fn get_line_ending_rope_slice() {
227+ let r = Rope::from_str("Hello\rworld\nhow\r\nare you?");
228+ assert_eq!(get_line_ending(&r.slice(..6)), Some(LineEnding::CR));
229+ assert_eq!(get_line_ending(&r.slice(..12)), Some(LineEnding::LF));
230+ assert_eq!(get_line_ending(&r.slice(..17)), Some(LineEnding::Crlf));
231+ assert_eq!(get_line_ending(&r.slice(..)), None);
232+ }
233+
234+ #[test]
235+ fn get_line_ending_str() {
236+ let text = "Hello\rworld\nhow\r\nare you?";
237+ assert_eq!(get_line_ending_of_str(&text[..6]), Some(LineEnding::CR));
238+ assert_eq!(get_line_ending_of_str(&text[..12]), Some(LineEnding::LF));
239+ assert_eq!(get_line_ending_of_str(&text[..17]), Some(LineEnding::Crlf));
240+ assert_eq!(get_line_ending_of_str(&text[..]), None);
241+ }
242+
243+ #[test]
244+ fn line_end_char_index_rope_slice() {
245+ let r = Rope::from_str("Hello\rworld\nhow\r\nare you?");
246+ let s = &r.slice(..);
247+ assert_eq!(line_end_char_index(s, 0), 5);
248+ assert_eq!(line_end_char_index(s, 1), 11);
249+ assert_eq!(line_end_char_index(s, 2), 15);
250+ assert_eq!(line_end_char_index(s, 3), 25);
210 }
251 }
211}
252}