diff options
Diffstat (limited to 'src/indexer/merge_policy.rs')
-rw-r--r-- | src/indexer/merge_policy.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/indexer/merge_policy.rs b/src/indexer/merge_policy.rs index ae10643..5e3adcf 100644 --- a/src/indexer/merge_policy.rs +++ b/src/indexer/merge_policy.rs @@ -43,3 +43,28 @@ impl MergePolicy for NoMergePolicy { } } + +#[cfg(test)] +pub mod tests { + + use super::*; + use core::SegmentId; + use core::SegmentMeta; + + #[derive(Debug)] + pub struct MergeWheneverPossible; + + impl MergePolicy for MergeWheneverPossible { + fn compute_merge_candidates(&self, segment_metas: &[SegmentMeta]) -> Vec<MergeCandidate> { + let segment_ids = segment_metas + .iter() + .map(|segment_meta| segment_meta.id()) + .collect::<Vec<SegmentId>>(); + vec!(MergeCandidate(segment_ids)) + } + + fn box_clone(&self) -> Box<MergePolicy> { + box MergeWheneverPossible + } + } +}
\ No newline at end of file |