1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
pub const SRCSET_INCREMENT_PERCENTAGE: f32 = 8.0;
pub const SRCSET_MAX_SIZE: f32 = 8192.0;

pub const SRCSET_TARGET_WIDTHS: [u32; 31] = [
    100, 116, 134, 156, 182, 210, 244, 282, 328, 380, 442, 512, 594, 688, 798, 926, 1074, 1246,
    1446, 1678, 1946, 2258, 2618, 3038, 3524, 4088, 4742, 5500, 6380, 7400, 8192,
];

pub fn lib_version() -> String {
    return format!("rust={}", env!("CARGO_PKG_VERSION"));
}

#[cfg(test)]
mod test {
    use super::*;

    #[test]
    fn test_srcset_target_widths() {
        assert_eq!(SRCSET_TARGET_WIDTHS.len(), 31);
        let mut prev = 100f32;

        let ensure_even = |value: f32| -> u32 {
            let half = value / 2.0;
            return (2.0 * half.round()) as u32;
        };

        let mut index = 0usize;
        while prev <= SRCSET_MAX_SIZE && index < SRCSET_TARGET_WIDTHS.len() {
            assert_eq!(SRCSET_TARGET_WIDTHS[index], ensure_even(prev));
            index += 1;
            prev *= 1.0 + (SRCSET_INCREMENT_PERCENTAGE / 100.0) * 2.0;
        }
    }
}