#[test]
fn test_dedup_extract_new_content_snapshot() {
let mut dedup = DeltaDeduplicator::new();
dedup.add_accumulated("Hello");
assert_eq!(
DeltaDeduplicator::extract_new_content("Hello World", "Hello"),
Some(" World")
);
}
#[test]
fn test_dedup_extract_new_content_genuine_delta() {
let mut dedup = DeltaDeduplicator::new();
dedup.add_accumulated("Hello");
assert_eq!(
DeltaDeduplicator::extract_new_content(" World", "Hello"),
None
);
}
#[test]
fn test_dedup_extract_new_content_shorter_delta() {
let mut dedup = DeltaDeduplicator::new();
dedup.add_accumulated("Hello World");
assert_eq!(
DeltaDeduplicator::extract_new_content("Hello", "Hello World"),
None
);
}
#[test]
fn test_dedup_extract_new_content_equal_length() {
let mut dedup = DeltaDeduplicator::new();
dedup.add_accumulated("Hello");
assert_eq!(
DeltaDeduplicator::extract_new_content("Hello", "Hello"),
Some("")
);
assert_eq!(
DeltaDeduplicator::extract_new_content("World", "Hello"),
None
);
}
#[test]
fn test_dedup_extract_new_content_no_match() {
let mut dedup = DeltaDeduplicator::new();
dedup.add_accumulated("Hello");
assert_eq!(
DeltaDeduplicator::extract_new_content("World", "Hello"),
None
);
}
#[test]
fn test_dedup_is_likely_snapshot() {
let mut dedup = DeltaDeduplicator::new();
dedup.add_accumulated("Hello");
assert!(DeltaDeduplicator::is_likely_snapshot(
"Hello World",
"Hello"
));
assert!(!DeltaDeduplicator::is_likely_snapshot(" World", "Hello"));
}
#[test]
fn test_dedup_clear() {
let mut dedup = DeltaDeduplicator::new();
dedup.add_accumulated("Hello");
assert!(!dedup.hash_window.is_empty());
dedup.clear();
assert!(dedup.hash_window.is_empty());
}
#[test]
fn test_dedup_two_phase_algorithm() {
let mut dedup = DeltaDeduplicator::new();
dedup.add_accumulated("The quick brown fox");
assert!(DeltaDeduplicator::is_likely_snapshot(
"The quick brown fox jumps",
"The quick brown fox"
));
assert_eq!(
DeltaDeduplicator::extract_new_content(
"The quick brown fox jumps",
"The quick brown fox"
),
Some(" jumps")
);
}
#[test]
fn test_dedup_handles_unicode() {
let mut dedup = DeltaDeduplicator::new();
dedup.add_accumulated("Hello 世界");
assert_eq!(
DeltaDeduplicator::extract_new_content("Hello 世界!", "Hello 世界"),
Some("!")
);
}
#[test]
fn test_dedup_empty_accumulated() {
assert_eq!(DeltaDeduplicator::extract_new_content("Hello", ""), None);
}