dataloader_rs/sampler/
sequential.rs1use crate::sampler::Sampler;
2
3#[derive(Clone, Copy, Debug, Default)]
5pub struct SequentialSampler;
6
7impl Sampler for SequentialSampler {
8 fn indices(&mut self, dataset_len: usize) -> Vec<usize> {
9 (0..dataset_len).collect()
10 }
11}
12
13#[cfg(test)]
14mod tests {
15 use crate::sampler::{Sampler, SequentialSampler};
16
17 #[test]
18 fn sequential_returns_0_to_n() {
19 let mut s = SequentialSampler;
20 assert_eq!(s.indices(5), vec![0, 1, 2, 3, 4]);
21 }
22
23 #[test]
24 fn sequential_empty_dataset() {
25 let mut s = SequentialSampler;
26 assert_eq!(s.indices(0), Vec::<usize>::new());
27 }
28
29 #[test]
30 fn sequential_is_repeatable() {
31 let mut s = SequentialSampler;
32 assert_eq!(s.indices(3), s.indices(3));
33 }
34
35 #[test]
36 fn sequential_len_matches() {
37 let mut s = SequentialSampler;
38 let n = 100;
39 assert_eq!(s.indices(n).len(), n);
40 }
41}