torrust-actix 4.2.3

A rich, fast and efficient Bittorrent Tracker.
#[cfg(test)]
mod cache_tests {
    mod cache_engine_tests {
        use crate::cache::enums::cache_engine::CacheEngine;

        #[test]
        fn test_cache_engine_display() {
            assert_eq!(format!("{}", CacheEngine::redis), "redis");
            assert_eq!(format!("{}", CacheEngine::memcache), "memcache");
        }

        #[test]
        fn test_cache_engine_url_scheme() {
            assert_eq!(CacheEngine::redis.url_scheme(), "redis://");
            assert_eq!(CacheEngine::memcache.url_scheme(), "memcache://");
        }

        #[test]
        fn test_cache_engine_serialization() {
            let redis_engine = CacheEngine::redis;
            let serialized = serde_json::to_string(&redis_engine).unwrap();
            assert_eq!(serialized, "\"redis\"");
            let memcache_engine = CacheEngine::memcache;
            let serialized = serde_json::to_string(&memcache_engine).unwrap();
            assert_eq!(serialized, "\"memcache\"");
        }

        #[test]
        fn test_cache_engine_deserialization() {
            let redis_engine: CacheEngine = serde_json::from_str("\"redis\"").unwrap();
            assert_eq!(redis_engine, CacheEngine::redis);
            let memcache_engine: CacheEngine = serde_json::from_str("\"memcache\"").unwrap();
            assert_eq!(memcache_engine, CacheEngine::memcache);
        }

        #[test]
        fn test_cache_engine_ordering() {
            assert!(CacheEngine::redis < CacheEngine::memcache);
        }

        #[test]
        fn test_cache_engine_clone() {
            let redis_engine = CacheEngine::redis;
            let cloned = redis_engine.clone();
            assert_eq!(redis_engine, cloned);
        }
    }

    mod error_tests {
        use crate::cache::enums::cache_error::CacheError;

        #[test]
        fn test_connection_error_display() {
            let error = CacheError::ConnectionError("failed to connect".to_string());
            assert_eq!(format!("{}", error), "Connection error: failed to connect");
        }

        #[test]
        fn test_operation_error_display() {
            let error = CacheError::OperationError("operation failed".to_string());
            assert_eq!(format!("{}", error), "Operation error: operation failed");
        }

        #[test]
        fn test_serialization_error_display() {
            let error = CacheError::SerializationError("invalid data".to_string());
            assert_eq!(format!("{}", error), "Serialization error: invalid data");
        }

        #[test]
        fn test_key_not_found_display() {
            let error = CacheError::KeyNotFound("test_key".to_string());
            assert_eq!(format!("{}", error), "Key not found: test_key");
        }

        #[test]
        fn test_error_debug() {
            let error = CacheError::ConnectionError("test".to_string());
            let debug_str = format!("{:?}", error);
            assert!(debug_str.contains("ConnectionError"));
            assert!(debug_str.contains("test"));
        }
    }
}