الاختبار
دليل شامل للاختبار في باطن.
أنواع الاختبارات
تشغيل الاختبارات
جميع الاختبارات
cargo test --all-features
وحدات محددة
# اختبارات الكشف فقط
cargo test detection::
# اختبارات الإنتروبي ا فقط
cargo test entropy::
# اختبارات التكامل فقط
cargo test --test integration_tests
مع الإخراج
cargo test -- --nocapture
اختبارات الوحدة
موجودة بجانب الكود المصدري في كتل mod tests.
مثال: مطابقة التوقيعات
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_png_detection() {
let png_magic = [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A];
let db = SignatureDatabase::default();
let matches = db.match_signatures(&png_magic);
assert!(!matches.is_empty(), "يجب أن يكتشف PNG");
assert_eq!(db.signatures[matches[0].0].extensions[0], "png");
}
}
مثال: حساب الإنتروبيا
#[test]
fn test_entropy_text() {
let text = b"Hello, World!";
let entropy = calculate_shannon_entropy(text);
// النص له إنتروبيا منخفضة-متوسطة
assert!(entropy > 2.0 && entropy < 5.0);
}
#[test]
fn test_entropy_random() {
// إنتروبيا قريبة من الحد الأقصى
let random: Vec<u8> = (0..=255).collect();
let entropy = calculate_shannon_entropy(&random);
assert!(entropy > 7.9, "البيانات العشوائية يجب أن تكون ~8 بت/بايت");
}