use super::super::overlay::{IndexedFileState, OverlayReconcileAction, overlay_reconcile_action};
use crate::visibility;
#[test]
fn overlay_reconciliation_actions_cover_inherit_shadow_add_delete() {
let parent = IndexedFileState {
content_hash: "parent-hash".to_string(),
language: "rust".to_string(),
};
let overlay = IndexedFileState {
content_hash: "overlay-hash".to_string(),
language: "rust".to_string(),
};
let tombstone = IndexedFileState {
content_hash: visibility::TOMBSTONE_HASH.to_string(),
language: visibility::TOMBSTONE_LANGUAGE.to_string(),
};
assert_eq!(
overlay_reconcile_action(
true,
Some("parent-hash"),
Some(&parent),
Some(&overlay),
true
),
OverlayReconcileAction::Inherit
);
assert_eq!(
overlay_reconcile_action(
true,
Some("edited-hash"),
Some(&parent),
Some(&overlay),
true
),
OverlayReconcileAction::Index
);
assert_eq!(
overlay_reconcile_action(true, Some("added-hash"), None, None, true),
OverlayReconcileAction::Index
);
assert_eq!(
overlay_reconcile_action(false, None, Some(&parent), None, true),
OverlayReconcileAction::Tombstone
);
assert_eq!(
overlay_reconcile_action(false, None, Some(&parent), Some(&tombstone), true),
OverlayReconcileAction::Skip
);
assert_eq!(
overlay_reconcile_action(false, None, None, Some(&overlay), true),
OverlayReconcileAction::DeleteOverlay
);
}