Skip to content

Commit

Permalink
test(data_structures): add tests for NonEmptyStack::as_slice and `a…
Browse files Browse the repository at this point in the history
…s_slice_mut` (#8912)
  • Loading branch information
overlookmotel committed Feb 5, 2025
1 parent bec8fee commit 2d06260
Showing 1 changed file with 78 additions and 0 deletions.
78 changes: 78 additions & 0 deletions crates/oxc_data_structures/src/stack/non_empty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -637,6 +637,84 @@ mod tests {
assert_len_cap_last!(stack, 2, 4, &22);
}

#[test]
fn as_slice() {
let mut stack = NonEmptyStack::new(10u64);
assert_len_cap_last!(stack, 1, 4, &10);
assert_eq!(stack.as_slice(), &[10]);

stack.push(20);
stack.push(30);
stack.push(40);
assert_len_cap_last!(stack, 4, 4, &40);
assert_eq!(stack.as_slice(), &[10, 20, 30, 40]);

stack.push(50);
assert_len_cap_last!(stack, 5, 8, &50);
assert_eq!(stack.as_slice(), &[10, 20, 30, 40, 50]);

stack.pop();
assert_len_cap_last!(stack, 4, 8, &40);
assert_eq!(stack.as_slice(), &[10, 20, 30, 40]);

stack.pop();
assert_len_cap_last!(stack, 3, 8, &30);
assert_eq!(stack.as_slice(), &[10, 20, 30]);

stack.pop();
stack.pop();
assert_len_cap_last!(stack, 1, 8, &10);
assert_eq!(stack.as_slice(), &[10]);
}

#[test]
fn as_mut_slice() {
let mut stack = NonEmptyStack::new(10u64);
assert_len_cap_last!(stack, 1, 4, &10);
assert_eq!(stack.as_mut_slice(), &mut [10]);

stack.as_mut_slice()[0] = 11;
assert_len_cap_last!(stack, 1, 4, &11);
assert_eq!(&stack[..], &[11]);
assert_eq!(stack.as_mut_slice(), &mut [11]);

stack.push(20);
stack.push(30);
stack.push(40);
assert_len_cap_last!(stack, 4, 4, &40);
assert_eq!(&stack[..], &[11, 20, 30, 40]);
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 30, 40]);

stack.as_mut_slice()[2] = 31;
assert_len_cap_last!(stack, 4, 4, &40);
assert_eq!(&stack[..], &[11, 20, 31, 40]);
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 31, 40]);

stack.push(50);
assert_len_cap_last!(stack, 5, 8, &50);
assert_eq!(&stack[..], &[11, 20, 31, 40, 50]);
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 31, 40, 50]);

stack.pop();
assert_len_cap_last!(stack, 4, 8, &40);
assert_eq!(&stack[..], &[11, 20, 31, 40]);
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 31, 40]);

stack.pop();
assert_len_cap_last!(stack, 3, 8, &31);
assert_eq!(&stack[..], &[11, 20, 31]);
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 31]);

stack.pop();
stack.pop();
assert_len_cap_last!(stack, 1, 8, &11);
assert_eq!(stack.as_mut_slice(), &mut [11]);

stack.as_mut_slice()[0] = 12;
assert_len_cap_last!(stack, 1, 8, &12);
assert_eq!(stack.as_mut_slice(), &mut [12]);
}

#[test]
#[expect(clippy::items_after_statements)]
fn drop() {
Expand Down

0 comments on commit 2d06260

Please sign in to comment.