use crate::ByteSpan;
#[test]
fn byte_span_size_is_8_bytes() {
assert_eq!(std::mem::size_of::<ByteSpan>(), 8);
}
#[test]
fn byte_span_new_and_fields() {
let span = ByteSpan::new(10, 25);
assert_eq!(span.start, 10);
assert_eq!(span.end, 25);
assert_eq!(span.len(), 15);
assert!(!span.is_empty());
}
#[test]
fn byte_span_empty_at() {
let span = ByteSpan::empty_at(42);
assert_eq!(span.start, 42);
assert_eq!(span.end, 42);
assert_eq!(span.len(), 0);
assert!(span.is_empty());
}
#[test]
fn byte_span_default() {
let span = ByteSpan::default();
assert_eq!(span.start, 0);
assert_eq!(span.end, 0);
assert!(span.is_empty());
}
#[test]
fn byte_span_merge() {
let a = ByteSpan::new(5, 10);
let b = ByteSpan::new(8, 20);
let merged = a.merge(b);
assert_eq!(merged.start, 5);
assert_eq!(merged.end, 20);
}
#[test]
fn byte_span_merge_non_overlapping() {
let a = ByteSpan::new(0, 5);
let b = ByteSpan::new(10, 15);
let merged = a.merge(b);
assert_eq!(merged.start, 0);
assert_eq!(merged.end, 15);
}
#[test]
fn byte_span_merge_commutative() {
let a = ByteSpan::new(3, 7);
let b = ByteSpan::new(1, 12);
assert_eq!(a.merge(b), b.merge(a));
}
#[test]
fn byte_span_is_copy() {
let span = ByteSpan::new(1, 2);
let span2 = span; assert_eq!(span, span2); }
#[test]
fn byte_span_eq_and_hash() {
use std::collections::HashSet;
let a = ByteSpan::new(0, 10);
let b = ByteSpan::new(0, 10);
let c = ByteSpan::new(0, 11);
assert_eq!(a, b);
assert_ne!(a, c);
let mut set = HashSet::new();
set.insert(a);
assert!(set.contains(&b));
assert!(!set.contains(&c));
}