Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit b9fd673

Browse files
committed
Add tests for array_chunks_mut
1 parent f6a6d2f commit b9fd673

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

library/core/tests/slice.rs

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,99 @@ fn test_array_chunks_zip() {
564564
assert_eq!(res, vec![14, 22]);
565565
}
566566

567+
#[test]
568+
fn test_array_chunks_mut_infer() {
569+
let v: &mut [i32] = &mut [0, 1, 2, 3, 4, 5, 6];
570+
for a in v.array_chunks_mut() {
571+
let sum = a.iter().sum::<i32>();
572+
*a = [sum; 3];
573+
}
574+
assert_eq!(v, &[3, 3, 3, 12, 12, 12, 6]);
575+
576+
let v2: &mut [i32] = &mut [0, 1, 2, 3, 4, 5, 6];
577+
v2.array_chunks_mut().for_each(|[a, b]| core::mem::swap(a, b));
578+
assert_eq!(v2, &[1, 0, 3, 2, 5, 4, 6]);
579+
}
580+
581+
#[test]
582+
fn test_array_chunks_mut_count() {
583+
let v: &mut [i32] = &mut [0, 1, 2, 3, 4, 5];
584+
let c = v.array_chunks_mut::<3>();
585+
assert_eq!(c.count(), 2);
586+
587+
let v2: &mut [i32] = &mut [0, 1, 2, 3, 4];
588+
let c2 = v2.array_chunks_mut::<2>();
589+
assert_eq!(c2.count(), 2);
590+
591+
let v3: &mut [i32] = &mut [];
592+
let c3 = v3.array_chunks_mut::<2>();
593+
assert_eq!(c3.count(), 0);
594+
}
595+
596+
#[test]
597+
fn test_array_chunks_mut_nth() {
598+
let v: &mut [i32] = &mut [0, 1, 2, 3, 4, 5];
599+
let mut c = v.array_chunks_mut::<2>();
600+
assert_eq!(c.nth(1).unwrap(), &[2, 3]);
601+
assert_eq!(c.next().unwrap(), &[4, 5]);
602+
603+
let v2: &mut [i32] = &mut [0, 1, 2, 3, 4, 5, 6];
604+
let mut c2 = v2.array_chunks_mut::<3>();
605+
assert_eq!(c2.nth(1).unwrap(), &[3, 4, 5]);
606+
assert_eq!(c2.next(), None);
607+
}
608+
609+
#[test]
610+
fn test_array_chunks_mut_nth_back() {
611+
let v: &mut [i32] = &mut [0, 1, 2, 3, 4, 5];
612+
let mut c = v.array_chunks_mut::<2>();
613+
assert_eq!(c.nth_back(1).unwrap(), &[2, 3]);
614+
assert_eq!(c.next().unwrap(), &[0, 1]);
615+
assert_eq!(c.next(), None);
616+
617+
let v2: &mut [i32] = &mut [0, 1, 2, 3, 4];
618+
let mut c2 = v2.array_chunks_mut::<3>();
619+
assert_eq!(c2.nth_back(0).unwrap(), &[0, 1, 2]);
620+
assert_eq!(c2.next(), None);
621+
assert_eq!(c2.next_back(), None);
622+
623+
let v3: &mut [i32] = &mut [0, 1, 2, 3, 4];
624+
let mut c3 = v3.array_chunks_mut::<10>();
625+
assert_eq!(c3.nth_back(0), None);
626+
}
627+
628+
#[test]
629+
fn test_array_chunks_mut_last() {
630+
let v: &mut [i32] = &mut [0, 1, 2, 3, 4, 5];
631+
let c = v.array_chunks_mut::<2>();
632+
assert_eq!(c.last().unwrap(), &[4, 5]);
633+
634+
let v2: &mut [i32] = &mut [0, 1, 2, 3, 4];
635+
let c2 = v2.array_chunks_mut::<2>();
636+
assert_eq!(c2.last().unwrap(), &[2, 3]);
637+
}
638+
639+
#[test]
640+
fn test_array_chunks_mut_remainder() {
641+
let v: &mut [i32] = &mut [0, 1, 2, 3, 4];
642+
let c = v.array_chunks_mut::<2>();
643+
assert_eq!(c.into_remainder(), &[4]);
644+
}
645+
646+
#[test]
647+
fn test_array_chunks_mut_zip() {
648+
let v1: &mut [i32] = &mut [0, 1, 2, 3, 4];
649+
let v2: &[i32] = &[6, 7, 8, 9, 10];
650+
651+
for (a, b) in v1.array_chunks_mut::<2>().zip(v2.array_chunks::<2>()) {
652+
let sum = b.iter().sum::<i32>();
653+
for v in a {
654+
*v += sum;
655+
}
656+
}
657+
assert_eq!(v1, [13, 14, 19, 20, 4]);
658+
}
659+
567660
#[test]
568661
fn test_rchunks_count() {
569662
let v: &[i32] = &[0, 1, 2, 3, 4, 5];

0 commit comments

Comments
 (0)