Skip to main content

fountain_raptor_10/
lib.rs

1/// Raptor-10 (RFC 5053) implementation
2/// 
3/// This library implements the Raptor-10 fountain code as specified in RFC 5053.
4
5pub mod generator;
6pub mod raptor_10;
7
8pub use generator::*;
9pub use raptor_10::Raptor10SysCode;
10
11#[cfg(test)]
12mod tests {
13    use super::*;
14
15    #[test]
16    fn test_random_generator() {
17        // Basic test to ensure the random generator works
18        let result = generator::random_generator::rand(100, 5, 1000);
19        assert!(result < 1000);
20    }
21
22    #[test]
23    fn test_degree_generator() {
24        // Basic test to ensure the degree generator works
25        assert_eq!(generator::degree_generator::deg(0), 1);
26        assert_eq!(generator::degree_generator::deg(500000), 3);
27        assert_eq!(generator::degree_generator::deg(1048575), 40);
28    }
29
30    #[test]
31    fn test_combined_usage() {
32        // Test combining rand and deg for typical use case
33        for x in 0..100 {
34            let v = generator::random_generator::rand(x, 1, 1048576);
35            let d = generator::degree_generator::deg(v);
36            
37            // Degree should be one of the valid values
38            assert!(matches!(d, 1 | 2 | 3 | 4 | 10 | 11 | 40),
39                   "Invalid degree {} for v={}", d, v);
40        }
41    }
42}