Skip to content

Commit f6cfcb2

Browse files
committed
chore: add unit-test
1 parent 3b3bd96 commit f6cfcb2

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed

crates/trie/common/src/utils.rs

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,120 @@ where
5858

5959
*target = result;
6060
}
61+
62+
#[cfg(test)]
63+
mod tests {
64+
use super::*;
65+
66+
#[test]
67+
fn test_extend_sorted_vec_empty_other() {
68+
let mut target = vec![(1, "a"), (2, "b"), (3, "c")];
69+
let other: Vec<(i32, &str)> = vec![];
70+
extend_sorted_vec(&mut target, &other);
71+
assert_eq!(target, vec![(1, "a"), (2, "b"), (3, "c")]);
72+
}
73+
74+
#[test]
75+
fn test_extend_sorted_vec_empty_target() {
76+
let mut target: Vec<(i32, &str)> = vec![];
77+
let other = vec![(1, "a"), (2, "b"), (3, "c")];
78+
extend_sorted_vec(&mut target, &other);
79+
assert_eq!(target, vec![(1, "a"), (2, "b"), (3, "c")]);
80+
}
81+
82+
#[test]
83+
fn test_extend_sorted_vec_no_overlap() {
84+
let mut target = vec![(1, "a"), (3, "c"), (5, "e")];
85+
let other = vec![(2, "b"), (4, "d"), (6, "f")];
86+
extend_sorted_vec(&mut target, &other);
87+
assert_eq!(
88+
target,
89+
vec![(1, "a"), (2, "b"), (3, "c"), (4, "d"), (5, "e"), (6, "f")]
90+
);
91+
}
92+
93+
#[test]
94+
fn test_extend_sorted_vec_with_duplicates_other_precedence() {
95+
let mut target = vec![(1, "a"), (2, "target"), (3, "c")];
96+
let other = vec![(2, "other"), (4, "d")];
97+
extend_sorted_vec(&mut target, &other);
98+
// other's value should take precedence for key 2
99+
assert_eq!(target, vec![(1, "a"), (2, "other"), (3, "c"), (4, "d")]);
100+
}
101+
102+
#[test]
103+
fn test_extend_sorted_vec_all_other_before_target() {
104+
let mut target = vec![(5, "e"), (6, "f")];
105+
let other = vec![(1, "a"), (2, "b"), (3, "c")];
106+
extend_sorted_vec(&mut target, &other);
107+
assert_eq!(
108+
target,
109+
vec![(1, "a"), (2, "b"), (3, "c"), (5, "e"), (6, "f")]
110+
);
111+
}
112+
113+
#[test]
114+
fn test_extend_sorted_vec_all_other_after_target() {
115+
let mut target = vec![(1, "a"), (2, "b")];
116+
let other = vec![(5, "e"), (6, "f"), (7, "g")];
117+
extend_sorted_vec(&mut target, &other);
118+
assert_eq!(
119+
target,
120+
vec![(1, "a"), (2, "b"), (5, "e"), (6, "f"), (7, "g")]
121+
);
122+
}
123+
124+
#[test]
125+
fn test_extend_sorted_vec_interleaved() {
126+
let mut target = vec![(1, "a"), (3, "c"), (5, "e"), (7, "g")];
127+
let other = vec![(2, "b"), (4, "d"), (6, "f")];
128+
extend_sorted_vec(&mut target, &other);
129+
assert_eq!(
130+
target,
131+
vec![(1, "a"), (2, "b"), (3, "c"), (4, "d"), (5, "e"), (6, "f"), (7, "g")]
132+
);
133+
}
134+
135+
#[test]
136+
fn test_extend_sorted_vec_multiple_duplicates() {
137+
let mut target = vec![(1, "target1"), (2, "target2"), (3, "target3")];
138+
let other = vec![(1, "other1"), (2, "other2"), (3, "other3")];
139+
extend_sorted_vec(&mut target, &other);
140+
// All other values should take precedence
141+
assert_eq!(target, vec![(1, "other1"), (2, "other2"), (3, "other3")]);
142+
}
143+
144+
#[test]
145+
fn test_extend_sorted_vec_single_element_each() {
146+
let mut target = vec![(5, "target")];
147+
let other = vec![(3, "other")];
148+
extend_sorted_vec(&mut target, &other);
149+
assert_eq!(target, vec![(3, "other"), (5, "target")]);
150+
}
151+
152+
#[test]
153+
fn test_extend_sorted_vec_same_key_different_values() {
154+
let mut target = vec![(1, "original")];
155+
let other = vec![(1, "override")];
156+
extend_sorted_vec(&mut target, &other);
157+
assert_eq!(target, vec![(1, "override")]);
158+
}
159+
160+
#[test]
161+
fn test_extend_sorted_vec_large_merge() {
162+
let mut target: Vec<(i32, i32)> = (0..100).step_by(2).map(|i| (i, i)).collect();
163+
let other: Vec<(i32, i32)> = (1..100).step_by(2).map(|i| (i, i * 10)).collect();
164+
extend_sorted_vec(&mut target, &other);
165+
166+
// Verify sorted order
167+
for i in 0..(target.len() - 1) {
168+
assert!(target[i].0 < target[i + 1].0);
169+
}
170+
171+
// Verify all keys are present
172+
assert_eq!(target.len(), 100);
173+
174+
// Verify other values took precedence for odd numbers
175+
assert_eq!(target[1].1, 10); // key 1 should have value 10 from other
176+
}
177+
}

0 commit comments

Comments
 (0)