Beatsaber Rust Utilities: A Beatsaber V3 parsing library.
beatsaber beatmap
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fixed division filters greater than group size.

AlephCubed 62d9ad65 09480fc8

+39 -2
+39 -2
src/difficulty/lightshow/filter.rs
··· 75 75 FilterType::Division => { 76 76 let start = self.parameter2 * group_size / self.parameter1.max(1); 77 77 let end = (self.parameter2 + 1) * group_size / self.parameter1.max(1); 78 - light_id >= start && light_id < end 78 + light_id >= start && light_id < end.max(start + 1) 79 79 } 80 80 FilterType::StepAndOffset => { 81 81 let offset_light_id = light_id - self.parameter1; ··· 95 95 FilterType::Division => { 96 96 let start = self.parameter2 * group_size / self.parameter1.max(1); 97 97 let end = (self.parameter2 + 1) * group_size / self.parameter1.max(1); 98 - end - start 98 + end.max(start + 1) - start 99 99 } 100 100 FilterType::StepAndOffset => { 101 101 group_size / self.parameter2.max(1) - self.parameter1 / self.parameter2.max(1) ··· 232 232 assert!((0..12).all(|i| filter.is_in_filter(i, 12))); 233 233 assert_eq!(filter.count_filtered(12), 12); 234 234 assert!((0..12).all(|i| filter.get_relative_index(i, 12) == i)); 235 + } 236 + 237 + #[test] 238 + fn division_larger_than_group_size() { 239 + for i in 0..12 { 240 + let filter = Filter { 241 + filter_type: FilterType::Division, 242 + parameter1: 12, 243 + parameter2: i, 244 + ..Default::default() 245 + }; 246 + 247 + let expected_id = match i { 248 + 0 => 0, 249 + 1 => 0, 250 + 2 => 1, 251 + 3 => 2, 252 + 4 => 2, 253 + 5 => 3, 254 + 6 => 4, 255 + 7 => 4, 256 + 8 => 5, 257 + 9 => 6, 258 + 10 => 6, 259 + 11 => 7, 260 + _ => unreachable!(), 261 + }; 262 + 263 + assert!(filter.is_in_filter(expected_id, 8)); 264 + assert!( 265 + (0..8) 266 + .filter(|x| *x != expected_id) 267 + .all(|i| !filter.is_in_filter(i, 8)) 268 + ); 269 + assert_eq!(filter.count_filtered(8), 1); 270 + assert_eq!(filter.get_relative_index(expected_id, 8), 0); 271 + } 235 272 } 236 273 237 274 #[test]