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 incorrect behaviour when limit is less then or equal to zero.

Limits of less then or equal to zero act the same as limits of one (no limit).

+31 -1
+16 -1
src/difficulty/lightshow/filter.rs
··· 159 159 pub fn count_filtered(&self, group_size: i32) -> i32 { 160 160 let filtered = self.count_filtered_without_limit(group_size); 161 161 162 - if let Some(limit) = self.limit_percent { 162 + if let Some(limit) = self.limit_percent 163 + && limit > 0.0 164 + { 163 165 (filtered as f32 * limit) as i32 164 166 } else { 165 167 filtered ··· 555 557 assert_eq!(filter.count_filtered(8), 7); 556 558 assert_eq!(filter.count_filtered_without_limit(8), 8); 557 559 assert!((0..7).all(|i| filter.get_relative_index(i, 8) == i)); 560 + } 561 + 562 + #[test] 563 + fn limit_zero() { 564 + let filter = Filter { 565 + limit_percent: Some(0.0), 566 + ..Default::default() 567 + }; 568 + 569 + assert!((0..12).all(|i| filter.is_in_filter(i, 12))); 570 + assert_eq!(filter.count_filtered(12), 12); 571 + assert_eq!(filter.count_filtered_without_limit(12), 12); 572 + assert!((0..12).all(|i| filter.get_relative_index(i, 12) == i)); 558 573 } 559 574 }
+15
src/difficulty/lightshow/group.rs
··· 246 246 247 247 assert_eq!(group.get_duration(12), 12.0); 248 248 } 249 + 250 + #[test] 251 + fn get_duration_step_with_limit_zero() { 252 + let group = ColorEventGroup { 253 + filter: Filter { 254 + limit_percent: Some(0.0), 255 + ..Default::default() 256 + }, 257 + beat_dist_type: DistributionType::Step, 258 + beat_dist_value: 1.0, 259 + ..Default::default() 260 + }; 261 + 262 + assert_eq!(group.get_duration(12), 12.0); 263 + } 249 264 }