Skip to content

Commit 2d06260

Browse files
committed
test(data_structures): add tests for NonEmptyStack::as_slice and as_slice_mut (oxc-project#8912)
1 parent bec8fee commit 2d06260

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

crates/oxc_data_structures/src/stack/non_empty.rs

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,84 @@ mod tests {
637637
assert_len_cap_last!(stack, 2, 4, &22);
638638
}
639639

640+
#[test]
641+
fn as_slice() {
642+
let mut stack = NonEmptyStack::new(10u64);
643+
assert_len_cap_last!(stack, 1, 4, &10);
644+
assert_eq!(stack.as_slice(), &[10]);
645+
646+
stack.push(20);
647+
stack.push(30);
648+
stack.push(40);
649+
assert_len_cap_last!(stack, 4, 4, &40);
650+
assert_eq!(stack.as_slice(), &[10, 20, 30, 40]);
651+
652+
stack.push(50);
653+
assert_len_cap_last!(stack, 5, 8, &50);
654+
assert_eq!(stack.as_slice(), &[10, 20, 30, 40, 50]);
655+
656+
stack.pop();
657+
assert_len_cap_last!(stack, 4, 8, &40);
658+
assert_eq!(stack.as_slice(), &[10, 20, 30, 40]);
659+
660+
stack.pop();
661+
assert_len_cap_last!(stack, 3, 8, &30);
662+
assert_eq!(stack.as_slice(), &[10, 20, 30]);
663+
664+
stack.pop();
665+
stack.pop();
666+
assert_len_cap_last!(stack, 1, 8, &10);
667+
assert_eq!(stack.as_slice(), &[10]);
668+
}
669+
670+
#[test]
671+
fn as_mut_slice() {
672+
let mut stack = NonEmptyStack::new(10u64);
673+
assert_len_cap_last!(stack, 1, 4, &10);
674+
assert_eq!(stack.as_mut_slice(), &mut [10]);
675+
676+
stack.as_mut_slice()[0] = 11;
677+
assert_len_cap_last!(stack, 1, 4, &11);
678+
assert_eq!(&stack[..], &[11]);
679+
assert_eq!(stack.as_mut_slice(), &mut [11]);
680+
681+
stack.push(20);
682+
stack.push(30);
683+
stack.push(40);
684+
assert_len_cap_last!(stack, 4, 4, &40);
685+
assert_eq!(&stack[..], &[11, 20, 30, 40]);
686+
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 30, 40]);
687+
688+
stack.as_mut_slice()[2] = 31;
689+
assert_len_cap_last!(stack, 4, 4, &40);
690+
assert_eq!(&stack[..], &[11, 20, 31, 40]);
691+
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 31, 40]);
692+
693+
stack.push(50);
694+
assert_len_cap_last!(stack, 5, 8, &50);
695+
assert_eq!(&stack[..], &[11, 20, 31, 40, 50]);
696+
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 31, 40, 50]);
697+
698+
stack.pop();
699+
assert_len_cap_last!(stack, 4, 8, &40);
700+
assert_eq!(&stack[..], &[11, 20, 31, 40]);
701+
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 31, 40]);
702+
703+
stack.pop();
704+
assert_len_cap_last!(stack, 3, 8, &31);
705+
assert_eq!(&stack[..], &[11, 20, 31]);
706+
assert_eq!(stack.as_mut_slice(), &mut [11, 20, 31]);
707+
708+
stack.pop();
709+
stack.pop();
710+
assert_len_cap_last!(stack, 1, 8, &11);
711+
assert_eq!(stack.as_mut_slice(), &mut [11]);
712+
713+
stack.as_mut_slice()[0] = 12;
714+
assert_len_cap_last!(stack, 1, 8, &12);
715+
assert_eq!(stack.as_mut_slice(), &mut [12]);
716+
}
717+
640718
#[test]
641719
#[expect(clippy::items_after_statements)]
642720
fn drop() {

0 commit comments

Comments
 (0)