snail.rs

2.3 kB · rust · 58 lines

1use mrlycore::json::parse;2use mrlydemo::snail::*;34#[test]5fn the_snail_exports_answer() {6    let cells = snail_cells(3, 100, "every").unwrap();7    assert_eq!(cells.len(), 500);8    assert_eq!(&cells[0..10], &[0, 0, 1, 0, 0, 1, 0, 1, 0, 1]);9    assert_eq!(&cells[10..20], &[1, 1, 3, 1, 1, -2, 1, 3, 1, 0]);10    assert_eq!(&cells[40..50], &[1, -5, 9, 2, 0, 10, -5, 9, 2, 0]);11    let every = parse(&snail_read(3, 100, "every").unwrap()).unwrap();12    assert_eq!(every["tiles"], 100);13    assert_eq!(every["primes"], 25);14    assert_eq!(every["grown"], 98);15    assert_eq!(every["levels"].to_string(), "[2,6,18,54,20]");16    assert_eq!(every["peak"], 4);17    assert_eq!(every["side"], 81);18    assert_eq!(every["area"], 172_100);19    assert_eq!(every["low"].to_string(), "[-602,-86]");20    assert_eq!(every["high"].to_string(), "[208,724]");21    assert_eq!(every["width"], 810);22    assert_eq!(every["height"], 810);2324    let marked = snail_cells(3, 100, "prime").unwrap();25    assert_eq!(&marked[15..25], &[-2, 1, 1, 0, 0, -3, 1, 3, 1, 1]);26    let prime = parse(&snail_read(3, 100, "prime").unwrap()).unwrap();27    assert_eq!(prime["primes"], 25);28    assert_eq!(prime["grown"], 24);29    assert_eq!(prime["levels"].to_string(), "[76,3,5,13,3]");30    assert_eq!(prime["area"], 29_668);31    assert_eq!(prime["width"], 170);32    assert_eq!(prime["height"], 250);3334    let shell = parse(&snail_read(3, 300, "prime").unwrap()).unwrap();35    assert_eq!(shell["tiles"], 300);36    assert_eq!(shell["primes"], 62);37    assert_eq!(shell["levels"].to_string(), "[239,3,5,13,31,9]");38    assert_eq!(shell["side"], 243);39    assert_eq!(shell["area"], 744_980);40    assert_eq!(shell["width"], 986);41    assert_eq!(shell["height"], 1227);4243    let full = parse(&snail_read(3, 300, "every").unwrap()).unwrap();44    assert_eq!(full["levels"].to_string(), "[2,6,18,54,162,58]");45    assert_eq!(full["area"], 4_528_604);46    assert_eq!(full["width"], 4374);47    assert_eq!(full["height"], 4131);4849    let wide = parse(&snail_read(2, 2000, "every").unwrap()).unwrap();50    assert_eq!(wide["peak"], 10);51    assert_eq!(wide["side"], 1024);5253    assert!(snail_cells(3, 100, "some").is_err());54    assert!(snail_cells(1, 100, "every").is_err());55    assert!(snail_cells(9, 100, "every").is_err());56    assert!(snail_cells(3, 0, "every").is_err());57    assert!(snail_cells(3, 2001, "every").is_err());58}