use crate::RedactionCompletion;
use crate::RedactionReason;
use crate::runtime::OperationSink;
#[test]
fn test_source_truncation_preserves_marker_and_reason() {
let mut sink = OperationSink::new(16, "<truncated>", false);
assert!(sink.write_atom("visible"));
sink.mark_truncated();
assert_eq!(sink.remaining_bytes(), 5);
let operation = sink.finish_with_reason(RedactionReason::SourceTruncated);
let (text, completion, reasons) = operation.into_parts();
assert_eq!(text, "<truncated>");
assert_eq!(completion, RedactionCompletion::Truncated);
assert!(reasons.contains(RedactionReason::SourceTruncated));
let (_, completion, reasons) = OperationSink::complete("safe")
.with_reason(RedactionReason::InvalidJson)
.finish()
.into_parts();
assert_eq!(completion, RedactionCompletion::Complete);
assert!(reasons.contains(RedactionReason::InvalidJson));
}