use udled::Location;
#[test]
fn location_basic() {
let input = "line1\nline2\nline3";
let loc = Location::from(input, 0).unwrap();
assert_eq!(loc.line, 0);
assert_eq!(loc.column, 0);
let loc = Location::from(input, 6).unwrap();
assert_eq!(loc.line, 1);
assert_eq!(loc.column, 0);
let loc = Location::from(input, 12).unwrap();
assert_eq!(loc.line, 2);
assert_eq!(loc.column, 0);
}
#[test]
fn location_columns() {
let input = "abc\ndef";
let loc = Location::from(input, 5).unwrap();
assert_eq!(loc.line, 1);
assert_eq!(loc.column, 1);
}
#[test]
fn location_crlf() {
let input = "a\r\nb";
let loc = Location::from(input, 3).unwrap();
assert_eq!(loc.line, 1);
assert_eq!(loc.column, 0);
}
#[test]
fn location_invalid_position() {
let input = "abc";
assert!(Location::from(input, 10).is_none());
assert!(Location::from(input, 2).is_some());
}