use anya_core::{
bitcoin::protocol::BPCLevel as ProtocolLevel,
bitcoin::validation::{TransactionValidator, ValidationError},
};
use bitcoin::{absolute::LockTime, transaction::Version, Transaction};
use std::io::Write;
use tempfile::NamedTempFile;
#[test]
fn test_transaction_validator_creation() {
let validator = TransactionValidator::new();
assert!(validator.maintains_consensus);
}
#[test]
fn test_transaction_validator_with_level() {
let validator = TransactionValidator::with_level(ProtocolLevel::Enhanced);
assert!(validator.maintains_consensus);
}
#[test]
fn test_validate_from_file() {
let mut file = NamedTempFile::new().expect("Failed to create temp file");
file.write_all(b"mock transaction data")
.expect("Failed to write to temp file");
let path = file.path();
let validator = TransactionValidator::new();
let result = validator.validate_from_file(path);
assert!(result.is_ok());
}
#[test]
fn test_validate_taproot_transaction() {
let tx = Transaction {
version: Version::ONE, lock_time: LockTime::ZERO, input: vec![],
output: vec![],
};
let validator = TransactionValidator::new();
let result = validator.validate_taproot_transaction(&tx);
assert!(matches!(result, Err(ValidationError::Taproot(_))));
}
#[test]
fn test_bpc_levels() {
let bpc2_validator = TransactionValidator::with_level(ProtocolLevel::Enhanced);
let bpc3_validator = TransactionValidator::with_level(ProtocolLevel::BPC3);
assert!(bpc2_validator.maintains_consensus);
assert!(bpc3_validator.maintains_consensus);
}