Skip to content

Commit b8c8b1a

Browse files
committed
add tests
1 parent e71907b commit b8c8b1a

File tree

2 files changed

+70
-4
lines changed

2 files changed

+70
-4
lines changed

src/rule/non_empty/non_empty_vec.rs

+58
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,26 @@ where
2323
.ok()
2424
.expect("This error is always unreachable")
2525
}
26+
27+
pub fn get(&self, index: usize) -> Option<&T> {
28+
self.value().get(index)
29+
}
30+
31+
pub fn len(&self) -> usize {
32+
self.value().len()
33+
}
34+
35+
pub fn is_empty(&self) -> bool {
36+
false
37+
}
38+
39+
pub fn push(self, value: T) -> Self {
40+
let mut result = self.into_value();
41+
result.push(value);
42+
Refined::new(result)
43+
.ok()
44+
.expect("This error is always unreachable")
45+
}
2646
}
2747

2848
impl<T> Add for NonEmptyVec<T> {
@@ -39,6 +59,7 @@ impl<T> Add for NonEmptyVec<T> {
3959

4060
#[cfg(test)]
4161
mod test {
62+
use crate::rule::non_empty::non_empty_vec_deque::NonEmptyVecDeque;
4263
use crate::rule::non_empty::NonEmptyVecRule;
4364
use crate::rule::{NonEmptyVec, Rule};
4465

@@ -72,4 +93,41 @@ mod test {
7293
assert_eq!(ne_vec.into_value(), vec![6, 12, 18]);
7394
Ok(())
7495
}
96+
97+
#[test]
98+
fn test_collect_to_deque() -> anyhow::Result<()> {
99+
let ne_vec = NonEmptyVec::new(vec![1, 2, 3])?;
100+
let ne_vec: NonEmptyVecDeque<i32> =
101+
ne_vec.into_iter().map(|n| n * 2).map(|n| n * 3).collect();
102+
assert_eq!(ne_vec.into_value(), vec![6, 12, 18]);
103+
Ok(())
104+
}
105+
106+
#[test]
107+
fn test_push() -> anyhow::Result<()> {
108+
let vec = NonEmptyVec::new(vec![1])?.push(2).push(3);
109+
assert_eq!(vec.into_value(), vec![1, 2, 3]);
110+
Ok(())
111+
}
112+
113+
#[test]
114+
fn test_get() -> anyhow::Result<()> {
115+
let vec = NonEmptyVec::new(vec![1])?;
116+
assert_eq!(vec.get(0), Some(&1));
117+
Ok(())
118+
}
119+
120+
#[test]
121+
fn test_len() -> anyhow::Result<()> {
122+
let vec = NonEmptyVec::new(vec![1])?;
123+
assert_eq!(vec.len(), 1);
124+
Ok(())
125+
}
126+
127+
#[test]
128+
fn test_is_empty() -> anyhow::Result<()> {
129+
let vec = NonEmptyVec::new(vec![1])?;
130+
assert!(!vec.is_empty());
131+
Ok(())
132+
}
75133
}

src/rule/non_empty/non_empty_vec_deque.rs

+12-4
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,25 @@ impl<T> Add for NonEmptyVecDeque<T> {
6868
#[cfg(test)]
6969
mod test {
7070
use crate::rule::non_empty::non_empty_vec_deque::NonEmptyVecDeque;
71+
use crate::rule::NonEmptyVec;
7172
use std::collections::VecDeque;
7273

74+
#[test]
75+
fn test_collect_to_vec() -> anyhow::Result<()> {
76+
let mut deque = VecDeque::new();
77+
deque.push_front(1);
78+
let deque = NonEmptyVecDeque::new(deque)?.push_front(2).push_back(3);
79+
let ne_vec: NonEmptyVec<i32> = deque.into_iter().map(|n| n * 2).map(|n| n * 3).collect();
80+
assert_eq!(ne_vec.into_value(), vec![12, 6, 18]);
81+
Ok(())
82+
}
83+
7384
#[test]
7485
fn test_vec_deque_push() -> anyhow::Result<()> {
7586
let mut deque = VecDeque::new();
7687
deque.push_front(1);
7788
let deque = NonEmptyVecDeque::new(deque)?.push_front(2).push_back(3);
78-
assert_eq!(
79-
deque.into_value().into_iter().collect::<Vec<_>>(),
80-
vec![2, 1, 3]
81-
);
89+
assert_eq!(deque.into_value(), vec![2, 1, 3]);
8290
Ok(())
8391
}
8492

0 commit comments

Comments
 (0)