#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Position {
pub line: u32,
pub character: u32,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Range {
pub start: Position,
pub end: Position,
}
#[cfg(test)]
mod tests {
use super::{Position, Range};
#[test]
fn position_equality() {
let a = Position {
line: 1,
character: 2,
};
let b = Position {
line: 1,
character: 2,
};
assert_eq!(a, b);
}
#[test]
fn position_inequality() {
let a = Position {
line: 1,
character: 2,
};
let b = Position {
line: 1,
character: 3,
};
assert_ne!(a, b);
}
#[test]
fn position_copy() {
let a = Position {
line: 1,
character: 2,
};
let b = a;
assert_eq!(a, b);
}
#[test]
fn range_equality() {
let a = Range {
start: Position {
line: 0,
character: 0,
},
end: Position {
line: 10,
character: 5,
},
};
let b = Range {
start: Position {
line: 0,
character: 0,
},
end: Position {
line: 10,
character: 5,
},
};
assert_eq!(a, b);
}
#[test]
fn range_copy() {
let a = Range {
start: Position {
line: 0,
character: 0,
},
end: Position {
line: 1,
character: 1,
},
};
let b = a;
assert_eq!(a, b);
}
}