ps_ecc/polynomial/implementations/index/
usize.rs1use std::ops::Index;
2
3use crate::Polynomial;
4
5impl Index<usize> for Polynomial {
6 type Output = u8;
7
8 fn index(&self, index: usize) -> &Self::Output {
9 self.coefficients.get(index).unwrap_or(&0)
10 }
11}
12
13#[cfg(test)]
14#[allow(clippy::expect_used)]
15mod tests {
16 use crate::Polynomial;
17
18 #[test]
19 fn index_usize_within_bounds() {
20 let p = Polynomial::from_slice(&[3, 7, 0, 5]).expect("valid polynomial");
21
22 assert_eq!(p[0usize], 3);
23 assert_eq!(p[1usize], 7);
24 assert_eq!(p[2usize], 0);
25 assert_eq!(p[3usize], 5);
26 }
27
28 #[test]
29 fn index_usize_out_of_bounds_returns_zero() {
30 let p = Polynomial::from_slice(&[1, 2]).expect("valid polynomial");
31
32 assert_eq!(p[2usize], 0);
33 assert_eq!(p[100usize], 0);
34 }
35
36 #[test]
37 fn index_usize_empty_polynomial() {
38 let p = Polynomial::from_slice(&[]).expect("valid polynomial");
39
40 assert_eq!(p[0usize], 0);
41 }
42}