star.rs

1.4 kB · rust · 46 lines

1use demos::star::*;23#[test]4fn the_stack_and_its_band_share_one_raster() {5    let field = star_field("23", 28, 64).unwrap();6    assert_eq!(field.len(), 4096);7    let inside: Vec<f64> = field8        .iter()9        .filter(|value| !value.is_nan())10        .map(|value| f64::from(*value))11        .collect();12    assert_eq!(inside.len(), 2746);13    assert_eq!(14        format!("{:.6}", inside.iter().sum::<f64>() / inside.len() as f64),15        "0.527208"16    );17    assert_eq!(format!("{}", field[32 * 64 + 32]), "0.5");1819    let arm = star_band("23", 28, 64, 0).unwrap();20    let tally = |grid: &demos::Grid, kind: u8| grid.types.iter().filter(|t| **t == kind).count();21    assert_eq!(22        format!("{},{},{}", tally(&arm, 0), tally(&arm, 1), tally(&arm, 2)),23        "34,2712,1350"24    );25    let wide = star_band("23", 28, 64, 4).unwrap();26    assert_eq!(27        format!(28            "{},{},{}",29            tally(&wide, 0),30            tally(&wide, 1),31            tally(&wide, 2)32        ),33        "257,2489,1350"34    );35    assert_eq!(format!("{}x{}", arm.width, arm.height), "64x64");36}3738#[test]39fn the_caps_and_the_odd_layers_are_held() {40    assert!(star_field("23", 1, 64).is_err());41    assert!(star_field("23", 200, 64).is_err());42    assert!(star_field("23", 28, 512).is_err());43    assert!(star_decay("23", 801, 0).is_err());44    assert!(star_layers("23", 8, 65).is_err());45    assert!(star_layers("512", 8, 0).is_err());46}