rust/lib-hedgewars-engine/src/render/atlas.rs
changeset 14723 766ce87dfdfc
parent 14722 c97faf0aef78
child 14725 19d30d96d7d6
equal deleted inserted replaced
14722:c97faf0aef78 14723:766ce87dfdfc
   222 
   222 
   223         assert_eq!(None, atlas.insert(Size::square(20)));
   223         assert_eq!(None, atlas.insert(Size::square(20)));
   224 
   224 
   225         let rect_size = Size::new(11, 3);
   225         let rect_size = Size::new(11, 3);
   226         let rect = atlas.insert(rect_size).unwrap();
   226         let rect = atlas.insert(rect_size).unwrap();
   227         
   227 
   228         assert_eq!(rect, Rect::at_origin(rect_size));
   228         assert_eq!(rect, Rect::at_origin(rect_size));
   229         assert_eq!(2, atlas.free_rects.len());
   229         assert_eq!(2, atlas.free_rects.len());
   230     }
   230     }
   231 
   231 
   232     #[derive(Debug, Clone)]
   232     #[derive(Debug, Clone)]
   272     }
   272     }
   273 
   273 
   274     proptest! {
   274     proptest! {
   275         #[test]
   275         #[test]
   276         fn prop_insert(rects in Vec::<TestRect>::arbitrary()) {
   276         fn prop_insert(rects in Vec::<TestRect>::arbitrary()) {
   277             let mut atlas = Atlas::new(Size::square(2048));
   277             let container = Rect::at_origin(Size::square(2048));
   278             let inserted: Vec<_> = rects.iter().take_while(|TestRect(size)| atlas.insert(*size).is_some()).cloned().collect();
   278             let mut atlas = Atlas::new(container.size());
   279 
   279             let inserted: Vec<_> = rects.iter().filter_map(|TestRect(size)| atlas.insert(*size)).collect();
   280             assert_eq!(inserted.len(), atlas.used_rects.len());
   280 
   281             assert_eq!(sum_area(&inserted), sum_area(&atlas.used_rects));
   281             assert!(inserted.iter().all(|r| container.contains_rect(r)));
   282         }
   282 
   283     }
   283             assert_eq!(inserted.len(), rects.len());
   284 }
   284             assert_eq!(sum_area(&inserted), sum_area(&rects));
       
   285         }
       
   286     }
       
   287 }